From 3f526fb05229ab9ab7e10caac70ac1faf030478f Mon Sep 17 00:00:00 2001 From: Fang Wang Date: Tue, 13 Aug 2013 17:15:33 -0700 Subject: [PATCH] cloudstack-4308 Add API listCapabilities for KVMSnapshotEnabled so that UI can use it for recurring snapshot. Conflicts: api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java server/src/com/cloud/server/ManagementServerImpl.java --- .../api/command/user/config/ListCapabilitiesCmd.java | 1 + .../cloudstack/api/response/CapabilitiesResponse.java | 8 +++++++- server/src/com/cloud/server/ManagementServerImpl.java | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java b/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java index 90e0d416de0..2176bc02332 100644 --- a/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java @@ -54,6 +54,7 @@ public class ListCapabilitiesCmd extends BaseCmd { response.setAllowUsersCreateProjects((Boolean)capabilities.get("allowusercreateprojects")); response.setDiskOffMaxSize((Long)capabilities.get("customDiskOffMaxSize")); response.setRegionSecondaryEnabled((Boolean)capabilities.get("regionSecondaryEnabled")); + response.setKVMSnapshotEnabled((Boolean)capabilities.get("KVMSnapshotEnabled")); if (capabilities.containsKey("apiLimitInterval")) { response.setApiLimitInterval((Integer) capabilities.get("apiLimitInterval")); } diff --git a/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java b/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java index 2189ae0a3ec..3ce31b55cf0 100644 --- a/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java +++ b/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java @@ -46,10 +46,12 @@ public class CapabilitiesResponse extends BaseResponse { @SerializedName(ApiConstants.CUSTOM_DISK_OFF_MAX_SIZE) @Param(description="maximum size that can be specified when " + "create disk from disk offering with custom size") private Long diskOffMaxSize; - @SerializedName("regionsecondaryenabled") @Param(description = "true if region wide secondary is enabled, false otherwise") private boolean regionSecondaryEnabled; + @SerializedName("kvmsnapshotenabled") @Param(description = "true if snapshot is supported for KVM host, false otherwise") + private boolean KVMSnapshotEnabled; + @SerializedName("apilimitinterval") @Param(description="time interval (in seconds) to reset api count") private Integer apiLimitInterval; @@ -89,6 +91,10 @@ public class CapabilitiesResponse extends BaseResponse { this.regionSecondaryEnabled = regionSecondaryEnabled; } + public void setKVMSnapshotEnabled(boolean KVMSnapshotEnabled) { + this.KVMSnapshotEnabled = KVMSnapshotEnabled; + } + public void setApiLimitInterval(Integer apiLimitInterval) { this.apiLimitInterval = apiLimitInterval; } diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 1761e52cf9f..0e9c4838304 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -3285,6 +3285,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe Account caller = CallContext.current().getCallingAccount(); boolean securityGroupsEnabled = false; boolean elasticLoadBalancerEnabled = false; + boolean KVMSnapshotEnabled = false; String supportELB = "false"; List networks = _networkDao.listSecurityGroupEnabledNetworks(); if (networks != null && !networks.isEmpty()) { @@ -3300,6 +3301,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe } long diskOffMaxSize = Long.valueOf(_configDao.getValue(Config.CustomDiskOfferingMaxSize.key())); + KVMSnapshotEnabled = Boolean.parseBoolean(_configDao.getValue("KVM.snapshot.enabled")); boolean userPublicTemplateEnabled = TemplateManager.AllowPublicUserTemplates.valueIn(caller.getId()); @@ -3323,6 +3325,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe capabilities.put("allowusercreateprojects", _projectMgr.allowUserToCreateProject()); capabilities.put("customDiskOffMaxSize", diskOffMaxSize); capabilities.put("regionSecondaryEnabled", regionSecondaryEnabled); + capabilities.put("KVMSnapshotEnabled", KVMSnapshotEnabled); if (apiLimitEnabled) { capabilities.put("apiLimitInterval", apiLimitInterval); capabilities.put("apiLimitMax", apiLimitMax);