diff --git a/core/src/com/cloud/server/ManagementServer.java b/core/src/com/cloud/server/ManagementServer.java index 9fc6d672b9c..eebb93f3f5e 100755 --- a/core/src/com/cloud/server/ManagementServer.java +++ b/core/src/com/cloud/server/ManagementServer.java @@ -2253,5 +2253,10 @@ public interface ManagementServer { URISyntaxException, InternalErrorException; long extractTemplateAsync(String url, Long templateId, Long zoneId) throws URISyntaxException; long extractVolumeAsync(String url, Long volumeId, Long zoneId) throws URISyntaxException; + + /* + * Fetches the version of cloud stack + */ + String getVersion(); } diff --git a/server/src/com/cloud/api/BaseCmd.java b/server/src/com/cloud/api/BaseCmd.java index e1f42327b4c..cf34dfd65ac 100755 --- a/server/src/com/cloud/api/BaseCmd.java +++ b/server/src/com/cloud/api/BaseCmd.java @@ -624,13 +624,14 @@ public abstract class BaseCmd { StringBuffer sb = new StringBuffer(); if (RESPONSE_TYPE_JSON.equalsIgnoreCase(responseType)) { // JSON response - sb.append("{ \"" + getName() + "\" : { \"errorcode\" : \"" + apiException.getErrorCode() + "\", \"description\" : \"" + apiException.getDescription() + "\" } }"); + sb.append("{ \"" + getName() + "\" : { " + "\"@attributes\":{\"cloud-stack-version\":\""+getManagementServer().getVersion()+"\"},"); + sb.append("\"errorcode\" : \"" + apiException.getErrorCode() + "\", \"description\" : \"" + apiException.getDescription() + "\" } }"); } else { sb.append(""); sb.append("<" + getName() + ">"); sb.append("" + apiException.getErrorCode() + ""); sb.append("" + escapeXml(apiException.getDescription()) + ""); - sb.append(""); + sb.append(""); } return sb.toString(); } @@ -640,10 +641,10 @@ public abstract class BaseCmd { // set up the return value with the name of the response if (RESPONSE_TYPE_JSON.equalsIgnoreCase(responseType)) { - sb.append("{ \"" + getName() + "\" : { "); + sb.append("{ \"" + getName() + "\" : { \"@attributes\":{\"cloud-stack-version\":\""+getManagementServer().getVersion()+"\"},"); } else { sb.append(""); - sb.append("<" + getName() + ">"); + sb.append("<" + getName() + " cloud-stack-version=\""+getManagementServer().getVersion()+ "\">"); } int i = 0; diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index ddd67097aac..2ebf529e3f2 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -8899,15 +8899,8 @@ public class ManagementServerImpl implements ManagementServer { if(networkGroupsEnabled == null) networkGroupsEnabled = "false"; - capabilities.put("networkGroupsEnabled", networkGroupsEnabled); - - final Class c = this.getClass(); - String fullVersion = c.getPackage().getImplementationVersion(); - String version = "unknown"; - if(fullVersion.length() > 0){ - version = fullVersion.substring(0,fullVersion.lastIndexOf(".")); - } - capabilities.put("cloudStackVersion", version); + capabilities.put("networkGroupsEnabled", networkGroupsEnabled); + capabilities.put("cloudStackVersion", getVersion()); return capabilities; } @@ -9049,6 +9042,17 @@ public class ManagementServerImpl implements ManagementServer { public List searchForZoneWideVlans(long dcId, String vlanType, String vlanId){ return _vlanDao.searchForZoneWideVlans(dcId, vlanType, vlanId); } + + @Override + public String getVersion(){ + final Class c = this.getClass(); + String fullVersion = c.getPackage().getImplementationVersion(); + String version = "unknown"; + if(fullVersion.length() > 0){ + version = fullVersion.substring(0,fullVersion.lastIndexOf(".")); + } + return version; + } }