From a0d79bda9107da8b6be05e42c8ba3287e7621695 Mon Sep 17 00:00:00 2001 From: alena Date: Wed, 9 Mar 2011 13:31:07 -0800 Subject: [PATCH] bug 8931: get account information for Action even from IP object, not from the Caller status 8931: resolved fixed --- .../api/commands/CreateLoadBalancerRuleCmd.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/api/src/com/cloud/api/commands/CreateLoadBalancerRuleCmd.java b/api/src/com/cloud/api/commands/CreateLoadBalancerRuleCmd.java index 00b5ccc991e..45bd5d7ed46 100644 --- a/api/src/com/cloud/api/commands/CreateLoadBalancerRuleCmd.java +++ b/api/src/com/cloud/api/commands/CreateLoadBalancerRuleCmd.java @@ -26,9 +26,10 @@ import com.cloud.api.Implementation; import com.cloud.api.Parameter; import com.cloud.api.ServerApiException; import com.cloud.api.response.LoadBalancerResponse; +import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.NetworkRuleConflictException; +import com.cloud.network.IpAddress; import com.cloud.network.rules.LoadBalancer; -import com.cloud.user.UserContext; import com.cloud.utils.net.NetUtils; @Implementation(description="Creates a load balancer rule", responseObject=LoadBalancerResponse.class) @@ -83,6 +84,11 @@ public class CreateLoadBalancerRuleCmd extends BaseCmd implements LoadBalancer } public Long getPublicIpId() { + IpAddress ipAddr = _networkService.getIp(publicIpId); + if (ipAddr == null || !ipAddr.readyToUse()) { + throw new InvalidParameterValueException("Unable to create load balancer rule, invalid IP address id" + ipAddr.getId()); + } + return publicIpId; } @@ -164,13 +170,13 @@ public class CreateLoadBalancerRuleCmd extends BaseCmd implements LoadBalancer } @Override - public long getAccountId() { - return UserContext.current().getCaller().getId(); + public long getAccountId() { + return _networkService.getIp(getPublicIpId()).getAccountId(); } @Override public long getDomainId() { - return UserContext.current().getCaller().getDomainId(); + return _networkService.getIp(getPublicIpId()).getDomainId(); } @Override