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("" + getName() + ">");
+ sb.append("" + getName() + " cloud-stack-version=\""+getManagementServer().getVersion()+ "\">");
}
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;
+ }
}