You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2013/04/11 23:23:10 UTC
[47/47] git commit: updated refs/heads/internallb to 3795048
Merge branch 'master' into internallb1
Conflicts:
api/src/com/cloud/async/AsyncJob.java
api/src/org/apache/cloudstack/api/ApiConstants.java
api/src/org/apache/cloudstack/api/BaseCmd.java
api/src/org/apache/cloudstack/api/ResponseGenerator.java
client/tomcatconf/commands.properties.in
server/src/com/cloud/api/ApiDBUtils.java
server/src/com/cloud/api/ApiResponseHelper.java
server/src/com/cloud/server/ManagementServerImpl.java
setup/db/db/schema-410to420.sql
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3795048f
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3795048f
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3795048f
Branch: refs/heads/internallb
Commit: 3795048fcc68ef23c24d82c9064946dfc082b1b6
Parents: f4c2b53 5f8a278
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Thu Apr 11 14:09:31 2013 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Thu Apr 11 14:16:33 2013 -0700
----------------------------------------------------------------------
api/src/com/cloud/async/AsyncJob.java | 3 +-
api/src/com/cloud/event/EventTypes.java | 8 +-
.../cloud/exception/AffinityConflictException.java | 34 ++
api/src/com/cloud/server/ManagementService.java | 4 +-
api/src/com/cloud/vm/UserVmService.java | 183 +++++----
.../apache/cloudstack/affinity/AffinityGroup.java | 31 ++
.../affinity/AffinityGroupProcessor.java | 49 ++
.../cloudstack/affinity/AffinityGroupResponse.java | 155 +++++++
.../cloudstack/affinity/AffinityGroupService.java | 79 ++++
.../affinity/AffinityGroupTypeResponse.java | 48 ++
.../cloudstack/affinity/AffinityProcessorBase.java | 44 ++
.../org/apache/cloudstack/api/ApiConstants.java | 5 +-
api/src/org/apache/cloudstack/api/BaseCmd.java | 8 +-
.../apache/cloudstack/api/ResponseGenerator.java | 49 ++-
.../admin/config/ListDeploymentPlannersCmd.java | 71 +++
.../admin/offering/CreateServiceOfferingCmd.java | 7 +
.../user/affinitygroup/CreateAffinityGroupCmd.java | 167 +++++++
.../user/affinitygroup/DeleteAffinityGroupCmd.java | 154 +++++++
.../affinitygroup/ListAffinityGroupTypesCmd.java | 67 +++
.../user/affinitygroup/ListAffinityGroupsCmd.java | 90 ++++
.../affinitygroup/UpdateVMAffinityGroupCmd.java | 164 +++++++
.../api/command/user/vm/DeployVMCmd.java | 41 ++-
.../api/response/DeploymentPlannersResponse.java | 37 ++
.../cloudstack/api/response/UserVmResponse.java | 14 +
.../org/apache/cloudstack/query/QueryService.java | 4 +
client/pom.xml | 7 +-
client/tomcatconf/applicationContext.xml.in | 10 +
client/tomcatconf/commands.properties.in | 6 +
client/tomcatconf/componentContext.xml.in | 11 +-
client/tomcatconf/simulatorComponentContext.xml.in | 23 +-
.../cloud/entity/api/VMEntityManagerImpl.java | 82 ++--
.../platform/orchestration/CloudOrchestrator.java | 63 ++--
.../host-anti-affinity/pom.xml | 33 ++
.../affinity/HostAntiAffinityProcessor.java | 91 ++++
plugins/pom.xml | 1 +
server/src/com/cloud/api/ApiDBUtils.java | 28 ++-
server/src/com/cloud/api/ApiResponseHelper.java | 42 ++-
.../src/com/cloud/api/query/QueryManagerImpl.java | 108 +++++
.../com/cloud/api/query/ViewResponseHelper.java | 20 +-
.../cloud/api/query/dao/AffinityGroupJoinDao.java | 37 ++
.../api/query/dao/AffinityGroupJoinDaoImpl.java | 142 ++++++
.../com/cloud/api/query/dao/UserVmJoinDaoImpl.java | 27 ++
.../cloud/api/query/vo/AffinityGroupJoinVO.java | 248 +++++++++++
.../src/com/cloud/api/query/vo/UserVmJoinVO.java | 37 ++
.../cloud/configuration/ConfigurationManager.java | 3 +-
.../configuration/ConfigurationManagerImpl.java | 6 +-
.../cloud/deploy/DeploymentPlanningManager.java | 45 ++
.../deploy/DeploymentPlanningManagerImpl.java | 96 ++++
server/src/com/cloud/deploy/FirstFitPlanner.java | 56 ++-
server/src/com/cloud/domain/dao/DomainDaoImpl.java | 11 +-
.../com/cloud/server/ConfigurationServerImpl.java | 22 +-
.../src/com/cloud/server/ManagementServerImpl.java | 41 ++
.../src/com/cloud/service/ServiceOfferingVO.java | 81 +++--
server/src/com/cloud/user/AccountManagerImpl.java | 9 +-
server/src/com/cloud/vm/UserVmManagerImpl.java | 69 +++-
.../com/cloud/vm/VirtualMachineManagerImpl.java | 132 +++---
.../affinity/AffinityGroupServiceImpl.java | 346 +++++++++++++++
.../cloudstack/affinity/AffinityGroupVMMapVO.java | 66 +++
.../cloudstack/affinity/AffinityGroupVO.java | 114 +++++
.../cloudstack/affinity/dao/AffinityGroupDao.java | 30 ++
.../affinity/dao/AffinityGroupDaoImpl.java | 102 +++++
.../affinity/dao/AffinityGroupVMMapDao.java | 47 ++
.../affinity/dao/AffinityGroupVMMapDaoImpl.java | 167 +++++++
.../test/com/cloud/vm/MockUserVmManagerImpl.java | 16 +-
.../cloud/vpc/MockConfigurationManagerImpl.java | 2 +-
.../affinity/AffinityApiTestConfiguration.java | 332 ++++++++++++++
.../cloudstack/affinity/AffinityApiUnitTest.java | 174 ++++++++
server/test/resources/affinityContext.xml | 47 ++
setup/db/db/schema-410to420.sql | 240 ++++++++++-
test/integration/smoke/test_affinity_groups.py | 194 ++++++++
tools/apidoc/gen_toc.py | 3 +-
tools/marvin/marvin/integration/lib/base.py | 42 ++-
ui/index.jsp | 2 +-
ui/scripts/cloudStack.js | 4 +-
ui/scripts/network.js | 8 +-
ui/scripts/regions.js | 145 ++++++-
ui/scripts/ui-custom/regions.js | 2 +-
ui/scripts/ui/widgets/listView.js | 6 +-
utils/src/com/cloud/utils/SerialVersionUID.java | 1 +
79 files changed, 4807 insertions(+), 386 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/api/src/com/cloud/async/AsyncJob.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/async/AsyncJob.java
index 1528809,866429b..386d4ef
--- a/api/src/com/cloud/async/AsyncJob.java
+++ b/api/src/com/cloud/async/AsyncJob.java
@@@ -50,7 -50,7 +50,8 @@@ public interface AsyncJob extends Ident
AutoScaleVmProfile,
AutoScaleVmGroup,
GlobalLoadBalancerRule,
- LoadBalancerRule
++ LoadBalancerRule,
+ AffinityGroup
}
long getUserId();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/api/src/org/apache/cloudstack/api/ApiConstants.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/ApiConstants.java
index 13bce07,b08e992..906630a
--- a/api/src/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/org/apache/cloudstack/api/ApiConstants.java
@@@ -473,12 -473,9 +473,15 @@@ public class ApiConstants
public static final String HEALTHCHECK_HEALTHY_THRESHOLD = "healthythreshold";
public static final String HEALTHCHECK_UNHEALTHY_THRESHOLD = "unhealthythreshold";
public static final String HEALTHCHECK_PINGPATH = "pingpath";
+ public static final String SOURCE_PORT = "sourceport";
+ public static final String INSTANCE_PORT = "instanceport";
+ public static final String SOURCE_IP = "sourceipaddress";
+ public static final String SOURCE_IP_NETWORK_ID = "sourceipaddressnetworkid";
+ public static final String SCHEME = "scheme";
+ public static final String PROVIDER_TYPE = "providertype";
+ public static final String AFFINITY_GROUP_IDS = "affinitygroupids";
+ public static final String AFFINITY_GROUP_NAMES = "affinitygroupnames";
+ public static final String DEPLOYMENT_PLANNER = "deploymentplanner";
public enum HostDetails {
all, capacity, events, stats, min;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/api/src/org/apache/cloudstack/api/BaseCmd.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/BaseCmd.java
index 41f085e,42c0680..9030d22
--- a/api/src/org/apache/cloudstack/api/BaseCmd.java
+++ b/api/src/org/apache/cloudstack/api/BaseCmd.java
@@@ -27,7 -27,7 +27,8 @@@ import java.util.regex.Pattern
import javax.inject.Inject;
+ import org.apache.cloudstack.affinity.AffinityGroupService;
+import org.apache.cloudstack.network.lb.ApplicationLoadBalancerService;
import org.apache.cloudstack.query.QueryService;
import org.apache.cloudstack.usage.UsageService;
import org.apache.log4j.Logger;
@@@ -134,9 -133,7 +135,10 @@@ public abstract class BaseCmd
@Inject public VMSnapshotService _vmSnapshotService;
@Inject public DataStoreProviderApiService dataStoreProviderApiService;
@Inject public VpcProvisioningService _vpcProvSvc;
+ @Inject public ApplicationLoadBalancerService _newLbSvc;
+ @Inject public NetworkModel _ntwkModel;
+ @Inject public ApplicationLoadBalancerService _appLbService;
+ @Inject public AffinityGroupService _affinityGroupService;
public abstract void execute() throws ResourceUnavailableException, InsufficientCapacityException, ServerApiException, ConcurrentOperationException, ResourceAllocationException, NetworkRuleConflictException;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/api/src/org/apache/cloudstack/api/ResponseGenerator.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/ResponseGenerator.java
index a17b079,c0dd57e..2fc14a4
--- a/api/src/org/apache/cloudstack/api/ResponseGenerator.java
+++ b/api/src/org/apache/cloudstack/api/ResponseGenerator.java
@@@ -19,12 -19,13 +19,15 @@@ package org.apache.cloudstack.api
import java.text.DecimalFormat;
import java.util.EnumSet;
import java.util.List;
+import java.util.Map;
+ import org.apache.cloudstack.affinity.AffinityGroup;
+ import org.apache.cloudstack.affinity.AffinityGroupResponse;
import org.apache.cloudstack.api.ApiConstants.HostDetails;
import org.apache.cloudstack.api.ApiConstants.VMDetails;
import org.apache.cloudstack.api.command.user.job.QueryAsyncJobResultCmd;
import org.apache.cloudstack.api.response.AccountResponse;
++import org.apache.cloudstack.api.response.ApplicationLoadBalancerResponse;
import org.apache.cloudstack.api.response.AsyncJobResponse;
import org.apache.cloudstack.api.response.AutoScalePolicyResponse;
import org.apache.cloudstack.api.response.AutoScaleVmGroupResponse;
@@@ -42,6 -43,6 +45,7 @@@ import org.apache.cloudstack.api.respon
import org.apache.cloudstack.api.response.ExtractResponse;
import org.apache.cloudstack.api.response.FirewallResponse;
import org.apache.cloudstack.api.response.FirewallRuleResponse;
++import org.apache.cloudstack.api.response.GlobalLoadBalancerResponse;
import org.apache.cloudstack.api.response.GuestOSResponse;
import org.apache.cloudstack.api.response.HostResponse;
import org.apache.cloudstack.api.response.HypervisorCapabilitiesResponse;
@@@ -118,9 -117,9 +121,23 @@@ import com.cloud.domain.Domain
import com.cloud.event.Event;
import com.cloud.host.Host;
import com.cloud.hypervisor.HypervisorCapabilities;
--import com.cloud.network.*;
++import com.cloud.network.IpAddress;
++import com.cloud.network.Network;
import com.cloud.network.Network.Service;
--import com.cloud.network.as.*;
++import com.cloud.network.PhysicalNetwork;
++import com.cloud.network.PhysicalNetworkServiceProvider;
++import com.cloud.network.PhysicalNetworkTrafficType;
++import com.cloud.network.RemoteAccessVpn;
++import com.cloud.network.Site2SiteCustomerGateway;
++import com.cloud.network.Site2SiteVpnConnection;
++import com.cloud.network.Site2SiteVpnGateway;
++import com.cloud.network.VirtualRouterProvider;
++import com.cloud.network.VpnUser;
++import com.cloud.network.as.AutoScalePolicy;
++import com.cloud.network.as.AutoScaleVmGroup;
++import com.cloud.network.as.AutoScaleVmProfile;
++import com.cloud.network.as.Condition;
++import com.cloud.network.as.Counter;
import com.cloud.network.router.VirtualRouter;
import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.HealthCheckPolicy;
@@@ -143,7 -142,7 +160,12 @@@ import com.cloud.projects.ProjectAccoun
import com.cloud.projects.ProjectInvitation;
import com.cloud.region.ha.GlobalLoadBalancerRule;
import com.cloud.server.ResourceTag;
--import com.cloud.storage.*;
++import com.cloud.storage.GuestOS;
++import com.cloud.storage.S3;
++import com.cloud.storage.Snapshot;
++import com.cloud.storage.StoragePool;
++import com.cloud.storage.Swift;
++import com.cloud.storage.Volume;
import com.cloud.storage.snapshot.SnapshotPolicy;
import com.cloud.storage.snapshot.SnapshotSchedule;
import com.cloud.template.VirtualMachineTemplate;
@@@ -151,21 -150,11 +173,11 @@@ import com.cloud.user.Account
import com.cloud.user.User;
import com.cloud.user.UserAccount;
import com.cloud.uservm.UserVm;
+import com.cloud.utils.net.Ip;
import com.cloud.vm.InstanceGroup;
import com.cloud.vm.Nic;
- import com.cloud.vm.NicSecondaryIp;
--import com.cloud.vm.snapshot.VMSnapshot;
import com.cloud.vm.VirtualMachine;
- import org.apache.cloudstack.api.ApiConstants.HostDetails;
- import org.apache.cloudstack.api.ApiConstants.VMDetails;
- import org.apache.cloudstack.api.command.user.job.QueryAsyncJobResultCmd;
--import org.apache.cloudstack.api.response.*;
- import org.apache.cloudstack.region.Region;
-
- import java.text.DecimalFormat;
- import java.util.EnumSet;
- import java.util.List;
++import com.cloud.vm.snapshot.VMSnapshot;
public interface ResponseGenerator {
UserResponse createUserResponse(UserAccount user);
@@@ -397,5 -387,7 +410,9 @@@
Long nicId, Long networkId);
public NicResponse createNicResponse(Nic result);
+ ApplicationLoadBalancerResponse createLoadBalancerContainerReponse(ApplicationLoadBalancerRule lb, Map<Ip, UserVm> lbInstances);
++
+ AffinityGroupResponse createAffinityGroupResponse(AffinityGroup group);
+
+ Long getAffinityGroupId(String name, long entityOwnerId);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/client/pom.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/client/tomcatconf/applicationContext.xml.in
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/client/tomcatconf/commands.properties.in
----------------------------------------------------------------------
diff --cc client/tomcatconf/commands.properties.in
index 2145a52,4ce9fd3..35f7ed2
--- a/client/tomcatconf/commands.properties.in
+++ b/client/tomcatconf/commands.properties.in
@@@ -569,14 -569,9 +569,20 @@@ revertToSnapshot=1
#### Baremetal commands
addBaremetalHost=1
+#### New Load Balancer commands
+createLoadBalancer=15
+listLoadBalancers=15
+deleteLoadBalancer=15
+
+#Internal Load Balancer Element commands
+configureInternalLoadBalancerElement=1
+createInternalLoadBalancerElement=1
+listInternalLoadBalancerElements=1
+
+
+ #### Affinity group commands
+ createAffinityGroup=15
+ deleteAffinityGroup=15
+ listAffinityGroups=15
+ updateVMAffinityGroup=15
+ listAffinityGroupTypes=15
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/client/tomcatconf/componentContext.xml.in
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/plugins/pom.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/server/src/com/cloud/api/ApiDBUtils.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/api/ApiDBUtils.java
index 464592a,303f328..e3330ec
--- a/server/src/com/cloud/api/ApiDBUtils.java
+++ b/server/src/com/cloud/api/ApiDBUtils.java
@@@ -484,7 -490,9 +491,10 @@@ public class ApiDBUtils
@Inject private VMSnapshotDao vmSnapshotDao;
@Inject private NicSecondaryIpDao nicSecondaryIpDao;
@Inject private VpcProvisioningService vpcProvSvc;
+ @Inject private ApplicationLoadBalancerRuleDao _appLbDao;
+ @Inject private AffinityGroupDao affinityGroupDao;
+ @Inject private AffinityGroupJoinDao affinityGroupJoinDao;
+
@PostConstruct
void init() {
_ms = ms;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/server/src/com/cloud/api/ApiResponseHelper.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/api/ApiResponseHelper.java
index 993e374,651a8be..476038d
--- a/server/src/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/com/cloud/api/ApiResponseHelper.java
@@@ -36,6 -36,6 +36,8 @@@ import javax.inject.Inject
import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
++import org.apache.cloudstack.affinity.AffinityGroup;
++import org.apache.cloudstack.affinity.AffinityGroupResponse;
import org.apache.cloudstack.api.ApiConstants.HostDetails;
import org.apache.cloudstack.api.ApiConstants.VMDetails;
import org.apache.cloudstack.api.BaseCmd;
@@@ -3627,70 -3650,29 +3629,96 @@@ public class ApiResponseHelper implemen
response.setIsDefault(result.isDefaultNic());
return response;
}
+
+
+ @Override
+ public ApplicationLoadBalancerResponse createLoadBalancerContainerReponse(ApplicationLoadBalancerRule lb, Map<Ip, UserVm> lbInstances) {
+
+ ApplicationLoadBalancerResponse lbResponse = new ApplicationLoadBalancerResponse();
+ lbResponse.setId(lb.getUuid());
+ lbResponse.setName(lb.getName());
+ lbResponse.setDescription(lb.getDescription());
+ lbResponse.setAlgorithm(lb.getAlgorithm());
+ Network nw = ApiDBUtils.findNetworkById(lb.getNetworkId());
+ lbResponse.setNetworkId(nw.getUuid());
+ populateOwner(lbResponse, lb);
+
+ if (lb.getScheme() == Scheme.Internal) {
+ lbResponse.setSourceIp(lb.getSourceIp().addr());
+ //TODO - create the view for the load balancer rule to reflect the network uuid
+ Network network = ApiDBUtils.findNetworkById(lb.getNetworkId());
+ lbResponse.setSourceIpNetworkId(network.getUuid());
+ } else {
+ //for public, populate the ip information from the ip address
+ IpAddress publicIp = ApiDBUtils.findIpAddressById(lb.getSourceIpAddressId());
+ lbResponse.setSourceIp(publicIp.getAddress().addr());
+ Network ntwk = ApiDBUtils.findNetworkById(publicIp.getNetworkId());
+ lbResponse.setSourceIpNetworkId(ntwk.getUuid());
+ }
+
+ //set load balancer rules information (only one rule per load balancer in this release)
+ List<ApplicationLoadBalancerRuleResponse> ruleResponses = new ArrayList<ApplicationLoadBalancerRuleResponse>();
+ ApplicationLoadBalancerRuleResponse ruleResponse = new ApplicationLoadBalancerRuleResponse();
+ ruleResponse.setInstancePort(lb.getDefaultPortStart());
+ ruleResponse.setSourcePort(lb.getSourcePortStart());
+ String stateToSet = lb.getState().toString();
+ if (stateToSet.equals(FirewallRule.State.Revoke)) {
+ stateToSet = "Deleting";
+ }
+ ruleResponse.setState(stateToSet);
+ ruleResponse.setObjectName("loadbalancerrule");
+ ruleResponses.add(ruleResponse);
+ lbResponse.setLbRules(ruleResponses);
+
+ //set Lb instances information
+ List<ApplicationLoadBalancerInstanceResponse> instanceResponses = new ArrayList<ApplicationLoadBalancerInstanceResponse>();
+ for (Ip ip : lbInstances.keySet()) {
+ ApplicationLoadBalancerInstanceResponse instanceResponse = new ApplicationLoadBalancerInstanceResponse();
+ instanceResponse.setIpAddress(ip.addr());
+ UserVm vm = lbInstances.get(ip);
+ instanceResponse.setId(vm.getUuid());
+ instanceResponse.setName(vm.getInstanceName());
+ instanceResponse.setObjectName("loadbalancerinstance");
+ instanceResponses.add(instanceResponse);
+ }
+
+ lbResponse.setLbInstances(instanceResponses);
+
+ //set tag information
+ List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.LoadBalancer, lb.getId());
+ List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
+ for (ResourceTag tag : tags) {
+ ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
+ tagResponses.add(tagResponse);
+ }
+ lbResponse.setTags(tagResponses);
+
+ lbResponse.setObjectName("loadbalancer");
+ return lbResponse;
+ }
++
+ @Override
+ public AffinityGroupResponse createAffinityGroupResponse(AffinityGroup group) {
+
+ AffinityGroupResponse response = new AffinityGroupResponse();
+
+ Account account = ApiDBUtils.findAccountById(group.getAccountId());
+ response.setAccountName(account.getAccountName());
+ response.setName(group.getName());
+ response.setType(group.getType());
+ response.setDescription(group.getDescription());
+ // response.setDomainId(account.)
+
+ return response;
+ }
+
+ @Override
+ public Long getAffinityGroupId(String groupName, long accountId) {
+ AffinityGroup ag = ApiDBUtils.getAffinityGroup(groupName, accountId);
+ if (ag == null) {
+ return null;
+ } else {
+ return ag.getId();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/server/ManagementServerImpl.java
index 9ffea9c,b869d1e..8dc27ae
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@@ -42,351 -42,50 +42,358 @@@ import javax.crypto.spec.SecretKeySpec
import javax.inject.Inject;
import javax.naming.ConfigurationException;
-import com.cloud.storage.dao.*;
+import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
-import org.apache.cloudstack.api.ApiConstants;
-
-import com.cloud.event.ActionEventUtils;
-import org.apache.cloudstack.api.BaseUpdateTemplateOrIsoCmd;
-import org.apache.cloudstack.api.command.admin.account.*;
-import org.apache.cloudstack.api.command.admin.domain.*;
-import org.apache.cloudstack.api.command.admin.host.*;
-import org.apache.cloudstack.api.command.admin.network.*;
-import org.apache.cloudstack.api.command.admin.offering.*;
-import org.apache.cloudstack.api.command.admin.resource.*;
-import org.apache.cloudstack.api.command.admin.router.*;
-import org.apache.cloudstack.api.command.admin.storage.*;
-import org.apache.cloudstack.api.command.admin.systemvm.*;
-import org.apache.cloudstack.api.command.admin.usage.*;
-import org.apache.cloudstack.api.command.admin.user.*;
-import org.apache.cloudstack.api.command.admin.vpc.*;
-import org.apache.cloudstack.api.command.user.autoscale.*;
-import org.apache.cloudstack.api.command.user.firewall.*;
-import org.apache.cloudstack.api.command.user.iso.*;
-import org.apache.cloudstack.api.command.user.loadbalancer.*;
-import org.apache.cloudstack.api.command.user.nat.*;
-import org.apache.cloudstack.api.command.user.network.*;
-import org.apache.cloudstack.api.command.user.project.*;
-import org.apache.cloudstack.api.command.user.resource.*;
-import org.apache.cloudstack.api.command.user.securitygroup.*;
-import org.apache.cloudstack.api.command.user.snapshot.*;
-import org.apache.cloudstack.api.command.user.template.*;
-import org.apache.cloudstack.api.command.user.vm.*;
-import org.apache.cloudstack.api.command.user.volume.*;
-import org.apache.cloudstack.api.command.user.vpc.*;
-import org.apache.cloudstack.api.command.user.vpn.*;
-import org.apache.cloudstack.api.response.ExtractResponse;
-import org.apache.commons.codec.binary.Base64;
-import org.apache.log4j.Logger;
+ import org.apache.cloudstack.affinity.AffinityGroupProcessor;
+ import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao;
-
+import org.apache.cloudstack.api.ApiConstants;
+import org.apache.cloudstack.api.BaseUpdateTemplateOrIsoCmd;
+import org.apache.cloudstack.api.command.admin.account.CreateAccountCmd;
+import org.apache.cloudstack.api.command.admin.account.DeleteAccountCmd;
+import org.apache.cloudstack.api.command.admin.account.DisableAccountCmd;
+import org.apache.cloudstack.api.command.admin.account.EnableAccountCmd;
+import org.apache.cloudstack.api.command.admin.account.LockAccountCmd;
+import org.apache.cloudstack.api.command.admin.account.UpdateAccountCmd;
+import org.apache.cloudstack.api.command.admin.autoscale.CreateCounterCmd;
+import org.apache.cloudstack.api.command.admin.autoscale.DeleteCounterCmd;
+import org.apache.cloudstack.api.command.admin.cluster.AddClusterCmd;
+import org.apache.cloudstack.api.command.admin.cluster.DeleteClusterCmd;
+import org.apache.cloudstack.api.command.admin.cluster.ListClustersCmd;
+import org.apache.cloudstack.api.command.admin.cluster.UpdateClusterCmd;
+import org.apache.cloudstack.api.command.admin.config.ListCfgsByCmd;
+import org.apache.cloudstack.api.command.admin.config.ListHypervisorCapabilitiesCmd;
+import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
+import org.apache.cloudstack.api.command.admin.config.UpdateHypervisorCapabilitiesCmd;
+import org.apache.cloudstack.api.command.admin.domain.CreateDomainCmd;
+import org.apache.cloudstack.api.command.admin.domain.DeleteDomainCmd;
+import org.apache.cloudstack.api.command.admin.domain.ListDomainChildrenCmd;
+import org.apache.cloudstack.api.command.admin.domain.ListDomainsCmd;
+import org.apache.cloudstack.api.command.admin.domain.UpdateDomainCmd;
+import org.apache.cloudstack.api.command.admin.host.AddHostCmd;
+import org.apache.cloudstack.api.command.admin.host.AddSecondaryStorageCmd;
+import org.apache.cloudstack.api.command.admin.host.CancelMaintenanceCmd;
+import org.apache.cloudstack.api.command.admin.host.DeleteHostCmd;
+import org.apache.cloudstack.api.command.admin.host.ListHostsCmd;
+import org.apache.cloudstack.api.command.admin.host.PrepareForMaintenanceCmd;
+import org.apache.cloudstack.api.command.admin.host.ReconnectHostCmd;
+import org.apache.cloudstack.api.command.admin.host.UpdateHostCmd;
+import org.apache.cloudstack.api.command.admin.host.UpdateHostPasswordCmd;
+import org.apache.cloudstack.api.command.admin.internallb.ConfigureInternalLoadBalancerElementCmd;
+import org.apache.cloudstack.api.command.admin.internallb.CreateInternalLoadBalancerElementCmd;
+import org.apache.cloudstack.api.command.admin.internallb.ListInternalLoadBalancerElementsCmd;
+import org.apache.cloudstack.api.command.admin.ldap.LDAPConfigCmd;
+import org.apache.cloudstack.api.command.admin.ldap.LDAPRemoveCmd;
+import org.apache.cloudstack.api.command.admin.network.AddNetworkDeviceCmd;
+import org.apache.cloudstack.api.command.admin.network.AddNetworkServiceProviderCmd;
+import org.apache.cloudstack.api.command.admin.network.CreateNetworkOfferingCmd;
+import org.apache.cloudstack.api.command.admin.network.CreatePhysicalNetworkCmd;
+import org.apache.cloudstack.api.command.admin.network.CreateStorageNetworkIpRangeCmd;
+import org.apache.cloudstack.api.command.admin.network.DeleteNetworkDeviceCmd;
+import org.apache.cloudstack.api.command.admin.network.DeleteNetworkOfferingCmd;
+import org.apache.cloudstack.api.command.admin.network.DeleteNetworkServiceProviderCmd;
+import org.apache.cloudstack.api.command.admin.network.DeletePhysicalNetworkCmd;
+import org.apache.cloudstack.api.command.admin.network.DeleteStorageNetworkIpRangeCmd;
+import org.apache.cloudstack.api.command.admin.network.ListNetworkDeviceCmd;
+import org.apache.cloudstack.api.command.admin.network.ListNetworkServiceProvidersCmd;
+import org.apache.cloudstack.api.command.admin.network.ListPhysicalNetworksCmd;
+import org.apache.cloudstack.api.command.admin.network.ListStorageNetworkIpRangeCmd;
+import org.apache.cloudstack.api.command.admin.network.ListSupportedNetworkServicesCmd;
+import org.apache.cloudstack.api.command.admin.network.UpdateNetworkOfferingCmd;
+import org.apache.cloudstack.api.command.admin.network.UpdateNetworkServiceProviderCmd;
+import org.apache.cloudstack.api.command.admin.network.UpdatePhysicalNetworkCmd;
+import org.apache.cloudstack.api.command.admin.network.UpdateStorageNetworkIpRangeCmd;
+import org.apache.cloudstack.api.command.admin.offering.CreateDiskOfferingCmd;
+import org.apache.cloudstack.api.command.admin.offering.CreateServiceOfferingCmd;
+import org.apache.cloudstack.api.command.admin.offering.DeleteDiskOfferingCmd;
+import org.apache.cloudstack.api.command.admin.offering.DeleteServiceOfferingCmd;
+import org.apache.cloudstack.api.command.admin.offering.UpdateDiskOfferingCmd;
+import org.apache.cloudstack.api.command.admin.offering.UpdateServiceOfferingCmd;
+import org.apache.cloudstack.api.command.admin.pod.CreatePodCmd;
+import org.apache.cloudstack.api.command.admin.pod.DeletePodCmd;
+import org.apache.cloudstack.api.command.admin.pod.ListPodsByCmd;
+import org.apache.cloudstack.api.command.admin.pod.UpdatePodCmd;
+import org.apache.cloudstack.api.command.admin.region.AddRegionCmd;
+import org.apache.cloudstack.api.command.admin.region.RemoveRegionCmd;
+import org.apache.cloudstack.api.command.admin.region.UpdateRegionCmd;
+import org.apache.cloudstack.api.command.admin.resource.ArchiveAlertsCmd;
+import org.apache.cloudstack.api.command.admin.resource.DeleteAlertsCmd;
+import org.apache.cloudstack.api.command.admin.resource.ListAlertsCmd;
+import org.apache.cloudstack.api.command.admin.resource.ListCapacityCmd;
+import org.apache.cloudstack.api.command.admin.resource.UploadCustomCertificateCmd;
+import org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd;
+import org.apache.cloudstack.api.command.admin.router.CreateVirtualRouterElementCmd;
+import org.apache.cloudstack.api.command.admin.router.DestroyRouterCmd;
+import org.apache.cloudstack.api.command.admin.router.ListRoutersCmd;
+import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
+import org.apache.cloudstack.api.command.admin.router.RebootRouterCmd;
+import org.apache.cloudstack.api.command.admin.router.StartRouterCmd;
+import org.apache.cloudstack.api.command.admin.router.StopRouterCmd;
+import org.apache.cloudstack.api.command.admin.router.UpgradeRouterCmd;
+import org.apache.cloudstack.api.command.admin.storage.AddS3Cmd;
+import org.apache.cloudstack.api.command.admin.storage.CancelPrimaryStorageMaintenanceCmd;
+import org.apache.cloudstack.api.command.admin.storage.CreateStoragePoolCmd;
+import org.apache.cloudstack.api.command.admin.storage.DeletePoolCmd;
+import org.apache.cloudstack.api.command.admin.storage.ListS3sCmd;
+import org.apache.cloudstack.api.command.admin.storage.ListStoragePoolsCmd;
+import org.apache.cloudstack.api.command.admin.storage.ListStorageProvidersCmd;
+import org.apache.cloudstack.api.command.admin.storage.PreparePrimaryStorageForMaintenanceCmd;
+import org.apache.cloudstack.api.command.admin.storage.UpdateStoragePoolCmd;
+import org.apache.cloudstack.api.command.admin.swift.AddSwiftCmd;
+import org.apache.cloudstack.api.command.admin.swift.ListSwiftsCmd;
+import org.apache.cloudstack.api.command.admin.systemvm.DestroySystemVmCmd;
+import org.apache.cloudstack.api.command.admin.systemvm.ListSystemVMsCmd;
+import org.apache.cloudstack.api.command.admin.systemvm.MigrateSystemVMCmd;
+import org.apache.cloudstack.api.command.admin.systemvm.RebootSystemVmCmd;
+import org.apache.cloudstack.api.command.admin.systemvm.StartSystemVMCmd;
+import org.apache.cloudstack.api.command.admin.systemvm.StopSystemVmCmd;
+import org.apache.cloudstack.api.command.admin.systemvm.UpgradeSystemVMCmd;
+import org.apache.cloudstack.api.command.admin.template.PrepareTemplateCmd;
+import org.apache.cloudstack.api.command.admin.usage.AddTrafficMonitorCmd;
+import org.apache.cloudstack.api.command.admin.usage.AddTrafficTypeCmd;
+import org.apache.cloudstack.api.command.admin.usage.DeleteTrafficMonitorCmd;
+import org.apache.cloudstack.api.command.admin.usage.DeleteTrafficTypeCmd;
+import org.apache.cloudstack.api.command.admin.usage.GenerateUsageRecordsCmd;
+import org.apache.cloudstack.api.command.admin.usage.GetUsageRecordsCmd;
+import org.apache.cloudstack.api.command.admin.usage.ListTrafficMonitorsCmd;
+import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd;
+import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypesCmd;
+import org.apache.cloudstack.api.command.admin.usage.ListUsageTypesCmd;
+import org.apache.cloudstack.api.command.admin.usage.UpdateTrafficTypeCmd;
+import org.apache.cloudstack.api.command.admin.user.CreateUserCmd;
+import org.apache.cloudstack.api.command.admin.user.DeleteUserCmd;
+import org.apache.cloudstack.api.command.admin.user.DisableUserCmd;
+import org.apache.cloudstack.api.command.admin.user.EnableUserCmd;
+import org.apache.cloudstack.api.command.admin.user.GetUserCmd;
+import org.apache.cloudstack.api.command.admin.user.ListUsersCmd;
+import org.apache.cloudstack.api.command.admin.user.LockUserCmd;
+import org.apache.cloudstack.api.command.admin.user.RegisterCmd;
+import org.apache.cloudstack.api.command.admin.user.UpdateUserCmd;
+import org.apache.cloudstack.api.command.admin.vlan.CreateVlanIpRangeCmd;
+import org.apache.cloudstack.api.command.admin.vlan.DeleteVlanIpRangeCmd;
+import org.apache.cloudstack.api.command.admin.vlan.ListVlanIpRangesCmd;
+import org.apache.cloudstack.api.command.admin.vm.AssignVMCmd;
+import org.apache.cloudstack.api.command.admin.vm.MigrateVMCmd;
+import org.apache.cloudstack.api.command.admin.vm.RecoverVMCmd;
+import org.apache.cloudstack.api.command.admin.vpc.CreatePrivateGatewayCmd;
+import org.apache.cloudstack.api.command.admin.vpc.CreateVPCOfferingCmd;
+import org.apache.cloudstack.api.command.admin.vpc.DeletePrivateGatewayCmd;
+import org.apache.cloudstack.api.command.admin.vpc.DeleteVPCOfferingCmd;
+import org.apache.cloudstack.api.command.admin.vpc.UpdateVPCOfferingCmd;
+import org.apache.cloudstack.api.command.admin.zone.CreateZoneCmd;
+import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd;
+import org.apache.cloudstack.api.command.admin.zone.MarkDefaultZoneForAccountCmd;
+import org.apache.cloudstack.api.command.admin.zone.UpdateZoneCmd;
+import org.apache.cloudstack.api.command.user.account.AddAccountToProjectCmd;
+import org.apache.cloudstack.api.command.user.account.DeleteAccountFromProjectCmd;
+import org.apache.cloudstack.api.command.user.account.ListAccountsCmd;
+import org.apache.cloudstack.api.command.user.account.ListProjectAccountsCmd;
+import org.apache.cloudstack.api.command.user.address.AssociateIPAddrCmd;
+import org.apache.cloudstack.api.command.user.address.DisassociateIPAddrCmd;
+import org.apache.cloudstack.api.command.user.address.ListPublicIpAddressesCmd;
+ import org.apache.cloudstack.api.command.user.affinitygroup.CreateAffinityGroupCmd;
+ import org.apache.cloudstack.api.command.user.affinitygroup.DeleteAffinityGroupCmd;
+ import org.apache.cloudstack.api.command.user.affinitygroup.ListAffinityGroupTypesCmd;
+ import org.apache.cloudstack.api.command.user.affinitygroup.ListAffinityGroupsCmd;
+ import org.apache.cloudstack.api.command.user.affinitygroup.UpdateVMAffinityGroupCmd;
+import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScalePolicyCmd;
+import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScaleVmGroupCmd;
+import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScaleVmProfileCmd;
+import org.apache.cloudstack.api.command.user.autoscale.CreateConditionCmd;
+import org.apache.cloudstack.api.command.user.autoscale.DeleteAutoScalePolicyCmd;
+import org.apache.cloudstack.api.command.user.autoscale.DeleteAutoScaleVmGroupCmd;
+import org.apache.cloudstack.api.command.user.autoscale.DeleteAutoScaleVmProfileCmd;
+import org.apache.cloudstack.api.command.user.autoscale.DeleteConditionCmd;
+import org.apache.cloudstack.api.command.user.autoscale.DisableAutoScaleVmGroupCmd;
+import org.apache.cloudstack.api.command.user.autoscale.EnableAutoScaleVmGroupCmd;
+import org.apache.cloudstack.api.command.user.autoscale.ListAutoScalePoliciesCmd;
+import org.apache.cloudstack.api.command.user.autoscale.ListAutoScaleVmGroupsCmd;
+import org.apache.cloudstack.api.command.user.autoscale.ListAutoScaleVmProfilesCmd;
+import org.apache.cloudstack.api.command.user.autoscale.ListConditionsCmd;
+import org.apache.cloudstack.api.command.user.autoscale.ListCountersCmd;
+import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScalePolicyCmd;
+import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScaleVmGroupCmd;
+import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScaleVmProfileCmd;
+import org.apache.cloudstack.api.command.user.config.ListCapabilitiesCmd;
+import org.apache.cloudstack.api.command.user.event.ArchiveEventsCmd;
+import org.apache.cloudstack.api.command.user.event.DeleteEventsCmd;
+import org.apache.cloudstack.api.command.user.event.ListEventTypesCmd;
+import org.apache.cloudstack.api.command.user.event.ListEventsCmd;
+import org.apache.cloudstack.api.command.user.firewall.CreateEgressFirewallRuleCmd;
+import org.apache.cloudstack.api.command.user.firewall.CreateFirewallRuleCmd;
+import org.apache.cloudstack.api.command.user.firewall.CreatePortForwardingRuleCmd;
+import org.apache.cloudstack.api.command.user.firewall.DeleteEgressFirewallRuleCmd;
+import org.apache.cloudstack.api.command.user.firewall.DeleteFirewallRuleCmd;
+import org.apache.cloudstack.api.command.user.firewall.DeletePortForwardingRuleCmd;
+import org.apache.cloudstack.api.command.user.firewall.ListEgressFirewallRulesCmd;
+import org.apache.cloudstack.api.command.user.firewall.ListFirewallRulesCmd;
+import org.apache.cloudstack.api.command.user.firewall.ListPortForwardingRulesCmd;
+import org.apache.cloudstack.api.command.user.firewall.UpdatePortForwardingRuleCmd;
+import org.apache.cloudstack.api.command.user.guest.ListGuestOsCategoriesCmd;
+import org.apache.cloudstack.api.command.user.guest.ListGuestOsCmd;
+import org.apache.cloudstack.api.command.user.iso.AttachIsoCmd;
+import org.apache.cloudstack.api.command.user.iso.CopyIsoCmd;
+import org.apache.cloudstack.api.command.user.iso.DeleteIsoCmd;
+import org.apache.cloudstack.api.command.user.iso.DetachIsoCmd;
+import org.apache.cloudstack.api.command.user.iso.ExtractIsoCmd;
+import org.apache.cloudstack.api.command.user.iso.ListIsoPermissionsCmd;
+import org.apache.cloudstack.api.command.user.iso.ListIsosCmd;
+import org.apache.cloudstack.api.command.user.iso.RegisterIsoCmd;
+import org.apache.cloudstack.api.command.user.iso.UpdateIsoCmd;
+import org.apache.cloudstack.api.command.user.iso.UpdateIsoPermissionsCmd;
+import org.apache.cloudstack.api.command.user.job.ListAsyncJobsCmd;
+import org.apache.cloudstack.api.command.user.job.QueryAsyncJobResultCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.AssignToLoadBalancerRuleCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.CreateApplicationLoadBalancerCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.CreateLBHealthCheckPolicyCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.CreateLBStickinessPolicyCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.CreateLoadBalancerRuleCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.DeleteApplicationLoadBalancerCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.DeleteLBHealthCheckPolicyCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.DeleteLBStickinessPolicyCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.DeleteLoadBalancerRuleCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.ListApplicationLoadBalancersCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.ListLBHealthCheckPoliciesCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.ListLBStickinessPoliciesCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.ListLoadBalancerRuleInstancesCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.ListLoadBalancerRulesCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.RemoveFromLoadBalancerRuleCmd;
+import org.apache.cloudstack.api.command.user.loadbalancer.UpdateLoadBalancerRuleCmd;
+import org.apache.cloudstack.api.command.user.nat.CreateIpForwardingRuleCmd;
+import org.apache.cloudstack.api.command.user.nat.DeleteIpForwardingRuleCmd;
+import org.apache.cloudstack.api.command.user.nat.DisableStaticNatCmd;
+import org.apache.cloudstack.api.command.user.nat.EnableStaticNatCmd;
+import org.apache.cloudstack.api.command.user.nat.ListIpForwardingRulesCmd;
+import org.apache.cloudstack.api.command.user.network.CreateNetworkACLCmd;
+import org.apache.cloudstack.api.command.user.network.CreateNetworkCmd;
+import org.apache.cloudstack.api.command.user.network.DeleteNetworkACLCmd;
+import org.apache.cloudstack.api.command.user.network.DeleteNetworkCmd;
+import org.apache.cloudstack.api.command.user.network.ListNetworkACLsCmd;
+import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd;
+import org.apache.cloudstack.api.command.user.network.ListNetworksCmd;
+import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd;
+import org.apache.cloudstack.api.command.user.network.UpdateNetworkCmd;
+import org.apache.cloudstack.api.command.user.offering.ListDiskOfferingsCmd;
+import org.apache.cloudstack.api.command.user.offering.ListServiceOfferingsCmd;
+import org.apache.cloudstack.api.command.user.project.ActivateProjectCmd;
+import org.apache.cloudstack.api.command.user.project.CreateProjectCmd;
+import org.apache.cloudstack.api.command.user.project.DeleteProjectCmd;
+import org.apache.cloudstack.api.command.user.project.DeleteProjectInvitationCmd;
+import org.apache.cloudstack.api.command.user.project.ListProjectInvitationsCmd;
+import org.apache.cloudstack.api.command.user.project.ListProjectsCmd;
+import org.apache.cloudstack.api.command.user.project.SuspendProjectCmd;
+import org.apache.cloudstack.api.command.user.project.UpdateProjectCmd;
+import org.apache.cloudstack.api.command.user.project.UpdateProjectInvitationCmd;
+import org.apache.cloudstack.api.command.user.region.ListRegionsCmd;
+import org.apache.cloudstack.api.command.user.region.ha.gslb.AssignToGlobalLoadBalancerRuleCmd;
+import org.apache.cloudstack.api.command.user.region.ha.gslb.CreateGlobalLoadBalancerRuleCmd;
+import org.apache.cloudstack.api.command.user.region.ha.gslb.DeleteGlobalLoadBalancerRuleCmd;
+import org.apache.cloudstack.api.command.user.region.ha.gslb.ListGlobalLoadBalancerRuleCmd;
+import org.apache.cloudstack.api.command.user.region.ha.gslb.RemoveFromGlobalLoadBalancerRuleCmd;
+import org.apache.cloudstack.api.command.user.resource.GetCloudIdentifierCmd;
+import org.apache.cloudstack.api.command.user.resource.ListHypervisorsCmd;
+import org.apache.cloudstack.api.command.user.resource.ListResourceLimitsCmd;
+import org.apache.cloudstack.api.command.user.resource.UpdateResourceCountCmd;
+import org.apache.cloudstack.api.command.user.resource.UpdateResourceLimitCmd;
+import org.apache.cloudstack.api.command.user.securitygroup.AuthorizeSecurityGroupEgressCmd;
+import org.apache.cloudstack.api.command.user.securitygroup.AuthorizeSecurityGroupIngressCmd;
+import org.apache.cloudstack.api.command.user.securitygroup.CreateSecurityGroupCmd;
+import org.apache.cloudstack.api.command.user.securitygroup.DeleteSecurityGroupCmd;
+import org.apache.cloudstack.api.command.user.securitygroup.ListSecurityGroupsCmd;
+import org.apache.cloudstack.api.command.user.securitygroup.RevokeSecurityGroupEgressCmd;
+import org.apache.cloudstack.api.command.user.securitygroup.RevokeSecurityGroupIngressCmd;
+import org.apache.cloudstack.api.command.user.snapshot.CreateSnapshotCmd;
+import org.apache.cloudstack.api.command.user.snapshot.CreateSnapshotPolicyCmd;
+import org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotCmd;
+import org.apache.cloudstack.api.command.user.snapshot.DeleteSnapshotPoliciesCmd;
+import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotPoliciesCmd;
+import org.apache.cloudstack.api.command.user.snapshot.ListSnapshotsCmd;
+import org.apache.cloudstack.api.command.user.ssh.CreateSSHKeyPairCmd;
+import org.apache.cloudstack.api.command.user.ssh.DeleteSSHKeyPairCmd;
+import org.apache.cloudstack.api.command.user.ssh.ListSSHKeyPairsCmd;
+import org.apache.cloudstack.api.command.user.ssh.RegisterSSHKeyPairCmd;
+import org.apache.cloudstack.api.command.user.tag.CreateTagsCmd;
+import org.apache.cloudstack.api.command.user.tag.DeleteTagsCmd;
+import org.apache.cloudstack.api.command.user.tag.ListTagsCmd;
+import org.apache.cloudstack.api.command.user.template.CopyTemplateCmd;
+import org.apache.cloudstack.api.command.user.template.CreateTemplateCmd;
+import org.apache.cloudstack.api.command.user.template.DeleteTemplateCmd;
+import org.apache.cloudstack.api.command.user.template.ExtractTemplateCmd;
+import org.apache.cloudstack.api.command.user.template.ListTemplatePermissionsCmd;
+import org.apache.cloudstack.api.command.user.template.ListTemplatesCmd;
+import org.apache.cloudstack.api.command.user.template.RegisterTemplateCmd;
+import org.apache.cloudstack.api.command.user.template.UpdateTemplateCmd;
+import org.apache.cloudstack.api.command.user.template.UpdateTemplatePermissionsCmd;
+import org.apache.cloudstack.api.command.user.vm.AddIpToVmNicCmd;
+import org.apache.cloudstack.api.command.user.vm.AddNicToVMCmd;
+import org.apache.cloudstack.api.command.user.vm.DeployVMCmd;
+import org.apache.cloudstack.api.command.user.vm.DestroyVMCmd;
+import org.apache.cloudstack.api.command.user.vm.GetVMPasswordCmd;
+import org.apache.cloudstack.api.command.user.vm.ListNicsCmd;
+import org.apache.cloudstack.api.command.user.vm.ListVMsCmd;
+import org.apache.cloudstack.api.command.user.vm.RebootVMCmd;
+import org.apache.cloudstack.api.command.user.vm.RemoveIpFromVmNicCmd;
+import org.apache.cloudstack.api.command.user.vm.RemoveNicFromVMCmd;
+import org.apache.cloudstack.api.command.user.vm.ResetVMPasswordCmd;
+import org.apache.cloudstack.api.command.user.vm.ResetVMSSHKeyCmd;
+import org.apache.cloudstack.api.command.user.vm.RestoreVMCmd;
+import org.apache.cloudstack.api.command.user.vm.ScaleVMCmd;
+import org.apache.cloudstack.api.command.user.vm.StartVMCmd;
+import org.apache.cloudstack.api.command.user.vm.StopVMCmd;
+import org.apache.cloudstack.api.command.user.vm.UpdateDefaultNicForVMCmd;
+import org.apache.cloudstack.api.command.user.vm.UpdateVMCmd;
+import org.apache.cloudstack.api.command.user.vm.UpgradeVMCmd;
+import org.apache.cloudstack.api.command.user.vmgroup.CreateVMGroupCmd;
+import org.apache.cloudstack.api.command.user.vmgroup.DeleteVMGroupCmd;
+import org.apache.cloudstack.api.command.user.vmgroup.ListVMGroupsCmd;
+import org.apache.cloudstack.api.command.user.vmgroup.UpdateVMGroupCmd;
+import org.apache.cloudstack.api.command.user.vmsnapshot.CreateVMSnapshotCmd;
+import org.apache.cloudstack.api.command.user.vmsnapshot.DeleteVMSnapshotCmd;
+import org.apache.cloudstack.api.command.user.vmsnapshot.ListVMSnapshotCmd;
+import org.apache.cloudstack.api.command.user.vmsnapshot.RevertToSnapshotCmd;
+import org.apache.cloudstack.api.command.user.volume.AttachVolumeCmd;
+import org.apache.cloudstack.api.command.user.volume.CreateVolumeCmd;
+import org.apache.cloudstack.api.command.user.volume.DeleteVolumeCmd;
+import org.apache.cloudstack.api.command.user.volume.DetachVolumeCmd;
+import org.apache.cloudstack.api.command.user.volume.ExtractVolumeCmd;
+import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd;
+import org.apache.cloudstack.api.command.user.volume.MigrateVolumeCmd;
+import org.apache.cloudstack.api.command.user.volume.ResizeVolumeCmd;
+import org.apache.cloudstack.api.command.user.volume.UploadVolumeCmd;
+import org.apache.cloudstack.api.command.user.vpc.CreateStaticRouteCmd;
+import org.apache.cloudstack.api.command.user.vpc.CreateVPCCmd;
+import org.apache.cloudstack.api.command.user.vpc.DeleteStaticRouteCmd;
+import org.apache.cloudstack.api.command.user.vpc.DeleteVPCCmd;
+import org.apache.cloudstack.api.command.user.vpc.ListPrivateGatewaysCmd;
+import org.apache.cloudstack.api.command.user.vpc.ListStaticRoutesCmd;
+import org.apache.cloudstack.api.command.user.vpc.ListVPCOfferingsCmd;
+import org.apache.cloudstack.api.command.user.vpc.ListVPCsCmd;
+import org.apache.cloudstack.api.command.user.vpc.RestartVPCCmd;
+import org.apache.cloudstack.api.command.user.vpc.UpdateVPCCmd;
+import org.apache.cloudstack.api.command.user.vpn.AddVpnUserCmd;
+import org.apache.cloudstack.api.command.user.vpn.CreateRemoteAccessVpnCmd;
+import org.apache.cloudstack.api.command.user.vpn.CreateVpnConnectionCmd;
+import org.apache.cloudstack.api.command.user.vpn.CreateVpnCustomerGatewayCmd;
+import org.apache.cloudstack.api.command.user.vpn.CreateVpnGatewayCmd;
+import org.apache.cloudstack.api.command.user.vpn.DeleteRemoteAccessVpnCmd;
+import org.apache.cloudstack.api.command.user.vpn.DeleteVpnConnectionCmd;
+import org.apache.cloudstack.api.command.user.vpn.DeleteVpnCustomerGatewayCmd;
+import org.apache.cloudstack.api.command.user.vpn.DeleteVpnGatewayCmd;
+import org.apache.cloudstack.api.command.user.vpn.ListRemoteAccessVpnsCmd;
+import org.apache.cloudstack.api.command.user.vpn.ListVpnConnectionsCmd;
+import org.apache.cloudstack.api.command.user.vpn.ListVpnCustomerGatewaysCmd;
+import org.apache.cloudstack.api.command.user.vpn.ListVpnGatewaysCmd;
+import org.apache.cloudstack.api.command.user.vpn.ListVpnUsersCmd;
+import org.apache.cloudstack.api.command.user.vpn.RemoveVpnUserCmd;
+import org.apache.cloudstack.api.command.user.vpn.ResetVpnConnectionCmd;
+import org.apache.cloudstack.api.command.user.vpn.UpdateVpnCustomerGatewayCmd;
+import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd;
+import org.apache.cloudstack.api.response.ExtractResponse;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
+import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
+import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
+import org.apache.commons.codec.binary.Base64;
+import org.apache.log4j.Logger;
+
import com.cloud.agent.AgentManager;
import com.cloud.agent.api.GetVncPortAnswer;
import com.cloud.agent.api.GetVncPortCommand;
@@@ -415,22 -110,11 +422,23 @@@ import com.cloud.configuration.Configur
import com.cloud.configuration.dao.ConfigurationDao;
import com.cloud.consoleproxy.ConsoleProxyManagementState;
import com.cloud.consoleproxy.ConsoleProxyManager;
-import com.cloud.dc.*;
+import com.cloud.dc.AccountVlanMapVO;
+import com.cloud.dc.ClusterVO;
+import com.cloud.dc.DataCenterVO;
+import com.cloud.dc.HostPodVO;
+import com.cloud.dc.Pod;
+import com.cloud.dc.PodVlanMapVO;
+import com.cloud.dc.Vlan;
import com.cloud.dc.Vlan.VlanType;
-import com.cloud.dc.dao.*;
+import com.cloud.dc.VlanVO;
+import com.cloud.dc.dao.AccountVlanMapDao;
+import com.cloud.dc.dao.ClusterDao;
+import com.cloud.dc.dao.DataCenterDao;
+import com.cloud.dc.dao.HostPodDao;
+import com.cloud.dc.dao.PodVlanMapDao;
+import com.cloud.dc.dao.VlanDao;
import com.cloud.deploy.DataCenterDeployment;
+ import com.cloud.deploy.DeploymentPlanner;
import com.cloud.deploy.DeploymentPlanner.ExcludeList;
import com.cloud.domain.DomainVO;
import com.cloud.domain.dao.DomainDao;
@@@ -2528,12 -2248,12 +2554,17 @@@ public class ManagementServerImpl exten
cmdList.add(AssignToGlobalLoadBalancerRuleCmd.class);
cmdList.add(RemoveFromGlobalLoadBalancerRuleCmd.class);
cmdList.add(ListStorageProvidersCmd.class);
+ cmdList.add(CreateApplicationLoadBalancerCmd.class);
+ cmdList.add(ListApplicationLoadBalancersCmd.class);
+ cmdList.add(DeleteApplicationLoadBalancerCmd.class);
+ cmdList.add(ConfigureInternalLoadBalancerElementCmd.class);
+ cmdList.add(CreateInternalLoadBalancerElementCmd.class);
+ cmdList.add(ListInternalLoadBalancerElementsCmd.class);
+ cmdList.add(CreateAffinityGroupCmd.class);
+ cmdList.add(DeleteAffinityGroupCmd.class);
+ cmdList.add(ListAffinityGroupsCmd.class);
+ cmdList.add(UpdateVMAffinityGroupCmd.class);
+ cmdList.add(ListAffinityGroupTypesCmd.class);
-
return cmdList;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3795048f/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------
diff --cc setup/db/db/schema-410to420.sql
index d99f4c7,92b2d9c..4a4d3a0
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@@ -448,10 -471,216 +471,223 @@@ CREATE TABLE `cloud`.`vm_snapshots`
ALTER TABLE `cloud`.`hypervisor_capabilities` ADD COLUMN `vm_snapshot_enabled` tinyint(1) DEFAULT 0 NOT NULL COMMENT 'Whether VM snapshot is supported by hypervisor';
UPDATE `cloud`.`hypervisor_capabilities` SET `vm_snapshot_enabled`=1 WHERE `hypervisor_type` in ('VMware', 'XenServer');
+
+ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `source_ip_address` varchar(40) COMMENT 'source ip address for the load balancer rule';
+ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `source_ip_address_network_id` bigint unsigned COMMENT 'the id of the network where source ip belongs to';
+ALTER TABLE `cloud`.`load_balancing_rules` ADD COLUMN `scheme` varchar(40) NOT NULL COMMENT 'load balancer scheme; can be Internal or Public';
+UPDATE `cloud`.`load_balancing_rules` SET `scheme`='Public';
+
+
+
+ DROP VIEW IF EXISTS `cloud`.`user_vm_view`;
+ CREATE VIEW `cloud`.`user_vm_view` AS
+ select
+ vm_instance.id id,
+ vm_instance.name name,
+ user_vm.display_name display_name,
+ user_vm.user_data user_data,
+ account.id account_id,
+ account.uuid account_uuid,
+ account.account_name account_name,
+ account.type account_type,
+ domain.id domain_id,
+ domain.uuid domain_uuid,
+ domain.name domain_name,
+ domain.path domain_path,
+ projects.id project_id,
+ projects.uuid project_uuid,
+ projects.name project_name,
+ instance_group.id instance_group_id,
+ instance_group.uuid instance_group_uuid,
+ instance_group.name instance_group_name,
+ vm_instance.uuid uuid,
+ vm_instance.last_host_id last_host_id,
+ vm_instance.vm_type type,
+ vm_instance.vnc_password vnc_password,
+ vm_instance.limit_cpu_use limit_cpu_use,
+ vm_instance.created created,
+ vm_instance.state state,
+ vm_instance.removed removed,
+ vm_instance.ha_enabled ha_enabled,
+ vm_instance.hypervisor_type hypervisor_type,
+ vm_instance.instance_name instance_name,
+ vm_instance.guest_os_id guest_os_id,
+ guest_os.uuid guest_os_uuid,
+ vm_instance.pod_id pod_id,
+ host_pod_ref.uuid pod_uuid,
+ vm_instance.private_ip_address private_ip_address,
+ vm_instance.private_mac_address private_mac_address,
+ vm_instance.vm_type vm_type,
+ data_center.id data_center_id,
+ data_center.uuid data_center_uuid,
+ data_center.name data_center_name,
+ data_center.is_security_group_enabled security_group_enabled,
+ host.id host_id,
+ host.uuid host_uuid,
+ host.name host_name,
+ vm_template.id template_id,
+ vm_template.uuid template_uuid,
+ vm_template.name template_name,
+ vm_template.display_text template_display_text,
+ vm_template.enable_password password_enabled,
+ iso.id iso_id,
+ iso.uuid iso_uuid,
+ iso.name iso_name,
+ iso.display_text iso_display_text,
+ service_offering.id service_offering_id,
+ disk_offering.uuid service_offering_uuid,
+ service_offering.cpu cpu,
+ service_offering.speed speed,
+ service_offering.ram_size ram_size,
+ disk_offering.name service_offering_name,
+ storage_pool.id pool_id,
+ storage_pool.uuid pool_uuid,
+ storage_pool.pool_type pool_type,
+ volumes.id volume_id,
+ volumes.uuid volume_uuid,
+ volumes.device_id volume_device_id,
+ volumes.volume_type volume_type,
+ security_group.id security_group_id,
+ security_group.uuid security_group_uuid,
+ security_group.name security_group_name,
+ security_group.description security_group_description,
+ nics.id nic_id,
+ nics.uuid nic_uuid,
+ nics.network_id network_id,
+ nics.ip4_address ip_address,
+ nics.ip6_address ip6_address,
+ nics.ip6_gateway ip6_gateway,
+ nics.ip6_cidr ip6_cidr,
+ nics.default_nic is_default_nic,
+ nics.gateway gateway,
+ nics.netmask netmask,
+ nics.mac_address mac_address,
+ nics.broadcast_uri broadcast_uri,
+ nics.isolation_uri isolation_uri,
+ vpc.id vpc_id,
+ vpc.uuid vpc_uuid,
+ networks.uuid network_uuid,
+ networks.name network_name,
+ networks.traffic_type traffic_type,
+ networks.guest_type guest_type,
+ user_ip_address.id public_ip_id,
+ user_ip_address.uuid public_ip_uuid,
+ user_ip_address.public_ip_address public_ip_address,
+ ssh_keypairs.keypair_name keypair_name,
+ resource_tags.id tag_id,
+ resource_tags.uuid tag_uuid,
+ resource_tags.key tag_key,
+ resource_tags.value tag_value,
+ resource_tags.domain_id tag_domain_id,
+ resource_tags.account_id tag_account_id,
+ resource_tags.resource_id tag_resource_id,
+ resource_tags.resource_uuid tag_resource_uuid,
+ resource_tags.resource_type tag_resource_type,
+ resource_tags.customer tag_customer,
+ async_job.id job_id,
+ async_job.uuid job_uuid,
+ async_job.job_status job_status,
+ async_job.account_id job_account_id,
+ affinity_group.id affinity_group_id,
+ affinity_group.uuid affinity_group_uuid,
+ affinity_group.name affinity_group_name,
+ affinity_group.description affinity_group_description
+ from
+ `cloud`.`user_vm`
+ inner join
+ `cloud`.`vm_instance` ON vm_instance.id = user_vm.id
+ and vm_instance.removed is NULL
+ inner join
+ `cloud`.`account` ON vm_instance.account_id = account.id
+ inner join
+ `cloud`.`domain` ON vm_instance.domain_id = domain.id
+ left join
+ `cloud`.`guest_os` ON vm_instance.guest_os_id = guest_os.id
+ left join
+ `cloud`.`host_pod_ref` ON vm_instance.pod_id = host_pod_ref.id
+ left join
+ `cloud`.`projects` ON projects.project_account_id = account.id
+ left join
+ `cloud`.`instance_group_vm_map` ON vm_instance.id = instance_group_vm_map.instance_id
+ left join
+ `cloud`.`instance_group` ON instance_group_vm_map.group_id = instance_group.id
+ left join
+ `cloud`.`data_center` ON vm_instance.data_center_id = data_center.id
+ left join
+ `cloud`.`host` ON vm_instance.host_id = host.id
+ left join
+ `cloud`.`vm_template` ON vm_instance.vm_template_id = vm_template.id
+ left join
+ `cloud`.`vm_template` iso ON iso.id = user_vm.iso_id
+ left join
+ `cloud`.`service_offering` ON vm_instance.service_offering_id = service_offering.id
+ left join
+ `cloud`.`disk_offering` ON vm_instance.service_offering_id = disk_offering.id
+ left join
+ `cloud`.`volumes` ON vm_instance.id = volumes.instance_id
+ left join
+ `cloud`.`storage_pool` ON volumes.pool_id = storage_pool.id
+ left join
+ `cloud`.`security_group_vm_map` ON vm_instance.id = security_group_vm_map.instance_id
+ left join
+ `cloud`.`security_group` ON security_group_vm_map.security_group_id = security_group.id
+ left join
+ `cloud`.`nics` ON vm_instance.id = nics.instance_id
+ left join
+ `cloud`.`networks` ON nics.network_id = networks.id
+ left join
+ `cloud`.`vpc` ON networks.vpc_id = vpc.id
+ left join
+ `cloud`.`user_ip_address` ON user_ip_address.vm_id = vm_instance.id
+ left join
+ `cloud`.`user_vm_details` ON user_vm_details.vm_id = vm_instance.id
+ and user_vm_details.name = 'SSH.PublicKey'
+ left join
+ `cloud`.`ssh_keypairs` ON ssh_keypairs.public_key = user_vm_details.value
+ left join
+ `cloud`.`resource_tags` ON resource_tags.resource_id = vm_instance.id
+ and resource_tags.resource_type = 'UserVm'
+ left join
+ `cloud`.`async_job` ON async_job.instance_id = vm_instance.id
+ and async_job.instance_type = 'VirtualMachine'
+ and async_job.job_status = 0
+ left join
+ `cloud`.`affinity_group_vm_map` ON vm_instance.id = affinity_group_vm_map.instance_id
+ left join
+ `cloud`.`affinity_group` ON affinity_group_vm_map.affinity_group_id = affinity_group.id;
+
+ DROP VIEW IF EXISTS `cloud`.`affinity_group_view`;
+ CREATE VIEW `cloud`.`affinity_group_view` AS
+ select
+ affinity_group.id id,
+ affinity_group.name name,
+ affinity_group.description description,
+ affinity_group.uuid uuid,
+ account.id account_id,
+ account.uuid account_uuid,
+ account.account_name account_name,
+ account.type account_type,
+ domain.id domain_id,
+ domain.uuid domain_uuid,
+ domain.name domain_name,
+ domain.path domain_path,
+ vm_instance.id vm_id,
+ vm_instance.uuid vm_uuid,
+ vm_instance.name vm_name,
+ vm_instance.state vm_state,
+ user_vm.display_name vm_display_name
+ from
+ `cloud`.`affinity_group`
+ inner join
+ `cloud`.`account` ON affinity_group.account_id = account.id
+ inner join
+ `cloud`.`domain` ON affinity_group.domain_id = domain.id
+ left join
+ `cloud`.`affinity_group_vm_map` ON affinity_group.id = affinity_group_vm_map.affinity_group_id
+ left join
+ `cloud`.`vm_instance` ON vm_instance.id = affinity_group_vm_map.instance_id
+ left join
+ `cloud`.`user_vm` ON user_vm.id = vm_instance.id;
+
+ -- Re-enable foreign key checking, at the end of the upgrade path
+ SET foreign_key_checks = 1;