From 8df22d1818c120716bea5fce39854da38f61055b 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. --- .../api/command/user/config/ListCapabilitiesCmd.java | 1 + .../cloudstack/api/response/CapabilitiesResponse.java | 7 +++++++ server/src/com/cloud/server/ManagementServerImpl.java | 3 +++ 3 files changed, 11 insertions(+) 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 a30e26cfd8b..57ff4eb7943 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 @@ -52,6 +52,7 @@ public class ListCapabilitiesCmd extends BaseCmd { response.setProjectInviteRequired((Boolean)capabilities.get("projectInviteRequired")); response.setAllowUsersCreateProjects((Boolean)capabilities.get("allowusercreateprojects")); response.setDiskOffMaxSize((Long)capabilities.get("customDiskOffMaxSize")); + 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 c2996f0aa0a..5c31571078d 100644 --- a/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java +++ b/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java @@ -46,6 +46,9 @@ public class CapabilitiesResponse extends BaseResponse { "create disk from disk offering with custom size") private Long diskOffMaxSize; + @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; @@ -81,6 +84,10 @@ public class CapabilitiesResponse extends BaseResponse { this.diskOffMaxSize = diskOffMaxSize; } + 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 622e167b00f..8b78aed3bc9 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -3254,6 +3254,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe Account caller = UserContext.current().getCaller(); boolean securityGroupsEnabled = false; boolean elasticLoadBalancerEnabled = false; + boolean KVMSnapshotEnabled = false; String supportELB = "false"; List networks = _networkDao.listSecurityGroupEnabledNetworks(); if (networks != null && !networks.isEmpty()) { @@ -3269,6 +3270,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")); String userPublicTemplateEnabled = _configServer.getConfigValue(Config.AllowPublicUserTemplates.key(), Config.ConfigurationParameterScope.account.toString(), caller.getId()); @@ -3285,6 +3287,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe capabilities.put("projectInviteRequired", _projectMgr.projectInviteRequired()); capabilities.put("allowusercreateprojects", _projectMgr.allowUserToCreateProject()); capabilities.put("customDiskOffMaxSize", diskOffMaxSize); + capabilities.put("KVMSnapshotEnabled", KVMSnapshotEnabled); if (apiLimitEnabled) { capabilities.put("apiLimitInterval", apiLimitInterval); capabilities.put("apiLimitMax", apiLimitMax);