CLOUDSTACK-3947: Override getSyncObjType and getSyncObjId in CreateLBStickinessPolicyCmd.java to prevent concurrent operations on Loadbalancer in a network

(cherry picked from commit d571b49d00)
This commit is contained in:
Wei Zhou 2013-08-01 10:04:18 +02:00
parent 698253576a
commit 478eae8287
1 changed files with 15 additions and 0 deletions

View File

@ -22,6 +22,7 @@ import java.util.Map;
import org.apache.cloudstack.api.APICommand;
import org.apache.cloudstack.api.ApiConstants;
import org.apache.cloudstack.api.ApiErrorCode;
import org.apache.cloudstack.api.BaseAsyncCmd;
import org.apache.cloudstack.api.BaseAsyncCreateCmd;
import org.apache.cloudstack.api.Parameter;
import org.apache.cloudstack.api.ServerApiException;
@ -30,6 +31,7 @@ import org.apache.cloudstack.api.response.LBStickinessResponse;
import org.apache.log4j.Logger;
import com.cloud.event.EventTypes;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.NetworkRuleConflictException;
import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.ResourceUnavailableException;
@ -156,5 +158,18 @@ public class CreateLBStickinessPolicyCmd extends BaseAsyncCreateCmd {
return "creating a Load Balancer Stickiness policy: " + getLBStickinessPolicyName();
}
@Override
public String getSyncObjType() {
return BaseAsyncCmd.networkSyncObject;
}
@Override
public Long getSyncObjId() {
LoadBalancer lb = _lbService.findById(getLbRuleId());
if (lb == null) {
throw new InvalidParameterValueException("Unable to find load balancer rule " + getLbRuleId() + " to create stickiness rule");
}
return lb.getNetworkId();
}
}