Return-Path: X-Original-To: apmail-cloudstack-commits-archive@www.apache.org Delivered-To: apmail-cloudstack-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 95C6710942 for ; Tue, 4 Feb 2014 23:52:52 +0000 (UTC) Received: (qmail 83749 invoked by uid 500); 4 Feb 2014 23:52:49 -0000 Delivered-To: apmail-cloudstack-commits-archive@cloudstack.apache.org Received: (qmail 83629 invoked by uid 500); 4 Feb 2014 23:52:47 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 83554 invoked by uid 99); 4 Feb 2014 23:52:46 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 04 Feb 2014 23:52:46 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id C2B4791B114; Tue, 4 Feb 2014 23:52:45 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: alena1108@apache.org To: commits@cloudstack.apache.org Date: Tue, 04 Feb 2014 23:52:46 -0000 Message-Id: <906a2234514c4dd5b2ead2c84882c7ce@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [2/5] git commit: updated refs/heads/master to 7cb4b57 External UUID control support for AutoscaleVmProfile and AutoscaleVmGroup Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/7cd0ad33 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/7cd0ad33 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/7cd0ad33 Branch: refs/heads/master Commit: 7cd0ad336b187b1f76b0dc053eb8ec6c13bda193 Parents: 6af6ce7 Author: Alena Prokharchyk Authored: Tue Feb 4 11:10:44 2014 -0800 Committer: Alena Prokharchyk Committed: Tue Feb 4 15:47:12 2014 -0800 ---------------------------------------------------------------------- .../autoscale/UpdateAutoScaleVmGroupCmd.java | 14 ++++++++--- .../autoscale/UpdateAutoScaleVmProfileCmd.java | 14 ++++++++--- .../cloud/network/as/AutoScaleVmGroupVO.java | 4 +++ .../cloud/network/as/AutoScaleVmProfileVO.java | 4 +++ .../cloud/network/as/AutoScaleManagerImpl.java | 26 ++++++++++++++------ 5 files changed, 46 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7cd0ad33/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java index dbbd85f..221cc36 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmGroupCmd.java @@ -19,25 +19,24 @@ package org.apache.cloudstack.api.command.user.autoscale; import java.util.List; -import org.apache.log4j.Logger; - import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; +import org.apache.cloudstack.api.BaseAsyncCustomIdCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AutoScalePolicyResponse; import org.apache.cloudstack.api.response.AutoScaleVmGroupResponse; import org.apache.cloudstack.context.CallContext; +import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.as.AutoScaleVmGroup; import com.cloud.user.Account; @APICommand(name = "updateAutoScaleVmGroup", description = "Updates an existing autoscale vm group.", responseObject = AutoScaleVmGroupResponse.class) -public class UpdateAutoScaleVmGroupCmd extends BaseAsyncCmd { +public class UpdateAutoScaleVmGroupCmd extends BaseAsyncCustomIdCmd { public static final Logger s_logger = Logger.getLogger(UpdateAutoScaleVmGroupCmd.class.getName()); private static final String s_name = "updateautoscalevmgroupresponse"; @@ -154,4 +153,11 @@ public class UpdateAutoScaleVmGroupCmd extends BaseAsyncCmd { public ApiCommandJobType getInstanceType() { return ApiCommandJobType.AutoScaleVmGroup; } + + @Override + public void checkUuid(String id, Class cls) { + if (this.getCustomId() != null) { + _uuidMgr.checkUuid(this.getCustomId(), AutoScaleVmGroup.class); + } + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7cd0ad33/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java index f3361d8..b9d53b2 100644 --- a/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/autoscale/UpdateAutoScaleVmProfileCmd.java @@ -19,26 +19,25 @@ package org.apache.cloudstack.api.command.user.autoscale; import java.util.Map; -import org.apache.log4j.Logger; - import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiCommandJobType; import org.apache.cloudstack.api.ApiConstants; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCmd; +import org.apache.cloudstack.api.BaseAsyncCustomIdCmd; import org.apache.cloudstack.api.Parameter; import org.apache.cloudstack.api.ServerApiException; import org.apache.cloudstack.api.response.AutoScaleVmProfileResponse; import org.apache.cloudstack.api.response.TemplateResponse; import org.apache.cloudstack.api.response.UserResponse; import org.apache.cloudstack.context.CallContext; +import org.apache.log4j.Logger; import com.cloud.event.EventTypes; import com.cloud.network.as.AutoScaleVmProfile; import com.cloud.user.Account; @APICommand(name = "updateAutoScaleVmProfile", description = "Updates an existing autoscale vm profile.", responseObject = AutoScaleVmProfileResponse.class) -public class UpdateAutoScaleVmProfileCmd extends BaseAsyncCmd { +public class UpdateAutoScaleVmProfileCmd extends BaseAsyncCustomIdCmd { public static final Logger s_logger = Logger.getLogger(UpdateAutoScaleVmProfileCmd.class.getName()); private static final String s_name = "updateautoscalevmprofileresponse"; @@ -146,4 +145,11 @@ public class UpdateAutoScaleVmProfileCmd extends BaseAsyncCmd { public ApiCommandJobType getInstanceType() { return ApiCommandJobType.AutoScaleVmProfile; } + + @Override + public void checkUuid(String id, Class cls) { + if (this.getCustomId() != null) { + _uuidMgr.checkUuid(this.getCustomId(), AutoScaleVmProfile.class); + } + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7cd0ad33/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java b/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java index d8612b0..9650249 100644 --- a/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java +++ b/engine/schema/src/com/cloud/network/as/AutoScaleVmGroupVO.java @@ -208,4 +208,8 @@ public class AutoScaleVmGroupVO implements AutoScaleVmGroup, InternalIdentity { public String getUuid() { return uuid; } + + public void setUuid(String uuid) { + this.uuid = uuid; + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7cd0ad33/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java ---------------------------------------------------------------------- diff --git a/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java b/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java index ec643b0..9a8fbd8 100644 --- a/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java +++ b/engine/schema/src/com/cloud/network/as/AutoScaleVmProfileVO.java @@ -216,4 +216,8 @@ public class AutoScaleVmProfileVO implements AutoScaleVmProfile, Identity, Inter public long getAutoScaleUserId() { return autoscaleUserId; } + + public void setUuid(String uuid) { + this.uuid = uuid; + } } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7cd0ad33/server/src/com/cloud/network/as/AutoScaleManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java index f1ca007..436737a 100644 --- a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java +++ b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java @@ -53,7 +53,6 @@ import org.apache.cloudstack.api.command.user.vm.DeployVMCmd; import org.apache.cloudstack.config.ApiServiceConfiguration; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; - import org.apache.log4j.Logger; import com.cloud.api.ApiDBUtils; @@ -119,7 +118,6 @@ import com.cloud.utils.db.TransactionStatus; import com.cloud.utils.net.NetUtils; import com.cloud.vm.UserVmManager; import com.cloud.vm.UserVmService; - import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -394,6 +392,8 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale AutoScaleVmProfileVO vmProfile = getEntityInDatabase(CallContext.current().getCallingAccount(), "Auto Scale Vm Profile", profileId, _autoScaleVmProfileDao); + boolean physicalParameterUpdate = (templateId != null || autoscaleUserId != null || counterParamList != null || destroyVmGraceperiod != null); + if (templateId != null) { vmProfile.setTemplateId(templateId); } @@ -410,9 +410,13 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale vmProfile.setDestroyVmGraceperiod(destroyVmGraceperiod); } - final List vmGroupList = _autoScaleVmGroupDao.listByAll(null, profileId); - for (final AutoScaleVmGroupVO vmGroupVO : vmGroupList) { - if (!vmGroupVO.getState().equals(AutoScaleVmGroup.State_Disabled)) { + if (cmd.getCustomId() != null) { + vmProfile.setUuid(cmd.getCustomId()); + } + + List vmGroupList = _autoScaleVmGroupDao.listByAll(null, profileId); + for (AutoScaleVmGroupVO vmGroupVO : vmGroupList) { + if (physicalParameterUpdate && !vmGroupVO.getState().equals(AutoScaleVmGroup.State_Disabled)) { throw new InvalidParameterValueException("The AutoScale Vm Profile can be updated only if the Vm Group it is associated with is disabled in state"); } } @@ -976,8 +980,10 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale AutoScaleVmGroupVO vmGroupVO = getEntityInDatabase(CallContext.current().getCallingAccount(), "AutoScale Vm Group", vmGroupId, _autoScaleVmGroupDao); - if (!vmGroupVO.getState().equals(AutoScaleVmGroup.State_Disabled)) { - throw new InvalidParameterValueException("An AutoScale Vm Group can be updated only when it is in disabled state"); + boolean physicalParametersUpdate = (minMembers != null || maxMembers != null || interval != null); + + if (physicalParametersUpdate && !vmGroupVO.getState().equals(AutoScaleVmGroup.State_Disabled)) { + throw new InvalidParameterValueException("An AutoScale Vm Group can be updated with minMembers/maxMembers/Interval only when it is in disabled state"); } if (minMembers != null) { @@ -988,10 +994,14 @@ public class AutoScaleManagerImpl extends ManagerBase implements AutoScale vmGroupVO.setMaxMembers(maxMembers); } - if (interval != null) { + if (maxMembers != null) { vmGroupVO.setInterval(interval); } + if (cmd.getCustomId() != null) { + vmGroupVO.setUuid(cmd.getCustomId()); + } + vmGroupVO = checkValidityAndPersist(vmGroupVO, scaleUpPolicyIds, scaleDownPolicyIds); if (vmGroupVO != null) { s_logger.debug("Updated Auto Scale VmGroup id:" + vmGroupId);