From df84f882965c6b81ddbae5a3f4398ac2164784f3 Mon Sep 17 00:00:00 2001 From: Vijay Date: Tue, 17 Jul 2012 17:55:01 +0530 Subject: [PATCH] CS-15593: Conditions are checked in database before used --- .../cloud/api/commands/CreateAutoScalePolicyCmd.java | 12 ++++++++++-- .../com/cloud/network/as/AutoScaleManagerImpl.java | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/api/src/com/cloud/api/commands/CreateAutoScalePolicyCmd.java b/api/src/com/cloud/api/commands/CreateAutoScalePolicyCmd.java index 25aaa1f03eb..2e87f27c828 100644 --- a/api/src/com/cloud/api/commands/CreateAutoScalePolicyCmd.java +++ b/api/src/com/cloud/api/commands/CreateAutoScalePolicyCmd.java @@ -24,10 +24,12 @@ import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.AutoScalePolicyResponse; import com.cloud.async.AsyncJob; +import com.cloud.domain.Domain; import com.cloud.event.EventTypes; import com.cloud.exception.ResourceAllocationException; import com.cloud.network.as.AutoScalePolicy; import com.cloud.network.as.Condition; +import com.cloud.user.Account; @Implementation(description = "Creates an autoscale policy for a provision or deprovision action, the action is taken when the all the conditions evaluates to true for the specified duration. The policy is in effect once it is attached to a autscale vm group.", responseObject = AutoScalePolicyResponse.class) public class CreateAutoScalePolicyCmd extends BaseAsyncCreateCmd { @@ -116,8 +118,14 @@ public class CreateAutoScalePolicyCmd extends BaseAsyncCreateCmd { } long conditionId = getConditionIds().get(0); Condition condition = _entityMgr.findById(Condition.class, conditionId); - conditionDomainId = condition.getDomainId(); - conditionAccountId = condition.getAccountId(); + if(condition == null) { + // it is an invalid condition, return system acccount, error will be thrown later. + conditionDomainId = Domain.ROOT_DOMAIN; + conditionAccountId = Account.ACCOUNT_ID_SYSTEM; + } else { + conditionDomainId = condition.getDomainId(); + conditionAccountId = condition.getAccountId(); + } return conditionAccountId; } diff --git a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java index 53f1021efa3..b07a7047813 100644 --- a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java +++ b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java @@ -421,7 +421,7 @@ public class AutoScaleManagerImpl implements AutoScaleService, Manager { if (conditionIds.size() != conditions.size()) { // TODO report the condition id which could not be found - throw new InvalidParameterValueException("Unable to find a condition specified"); + throw new InvalidParameterValueException("Unable to find the condition specified"); } ArrayList counterIds = new ArrayList();