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/24 18:24:14 UTC

[50/50] [abbrv] git commit: updated refs/heads/internallb to ca2fc30

Merge branch 'master' into internallb1

Conflicts:
	server/src/com/cloud/network/vpc/VpcManagerImpl.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/ca2fc306
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ca2fc306
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ca2fc306

Branch: refs/heads/internallb
Commit: ca2fc30655eace01857181ac50789a6632f51d29
Parents: 8057567 04a2b2d
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Tue Apr 23 16:56:11 2013 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Tue Apr 23 16:58:28 2013 -0700

----------------------------------------------------------------------
 CHANGES                                            |  385 +-
 README.md                                          |    6 +-
 .../cloud/agent/api/MigrateWithStorageAnswer.java  |   39 +
 .../cloud/agent/api/MigrateWithStorageCommand.java |   45 +
 .../api/MigrateWithStorageCompleteAnswer.java      |   38 +
 .../api/MigrateWithStorageCompleteCommand.java     |   36 +
 .../agent/api/MigrateWithStorageReceiveAnswer.java |   55 +
 .../api/MigrateWithStorageReceiveCommand.java      |   45 +
 .../agent/api/MigrateWithStorageSendAnswer.java    |   39 +
 .../agent/api/MigrateWithStorageSendCommand.java   |   58 +
 .../agent/api/storage/MigrateVolumeAnswer.java     |   38 +
 .../agent/api/storage/MigrateVolumeCommand.java    |   51 +
 .../cloud/hypervisor/HypervisorCapabilities.java   |    2 +
 api/src/com/cloud/network/element/IpDeployer.java  |    6 +-
 api/src/com/cloud/server/ManagementService.java    |   19 +-
 api/src/com/cloud/vm/UserVmService.java            |   27 +
 .../cloudstack/affinity/AffinityGroupResponse.java |    5 +-
 .../org/apache/cloudstack/api/ApiConstants.java    |    4 +
 .../apache/cloudstack/api/ResponseGenerator.java   |    8 +
 .../command/admin/account/CreateAccountCmd.java    |   14 +-
 .../api/command/admin/config/ListCfgsByCmd.java    |   24 +-
 .../api/command/admin/config/UpdateCfgCmd.java     |   22 +-
 .../admin/host/FindHostsForMigrationCmd.java       |  107 +
 .../api/command/admin/host/ListHostsCmd.java       |    7 +-
 .../storage/FindStoragePoolsForMigrationCmd.java   |   98 +
 .../api/command/admin/vm/MigrateVMCmd.java         |    2 +-
 .../vm/MigrateVirtualMachineWithVolumeCmd.java     |  160 +
 .../api/command/user/vm/DeployVMCmd.java           |    5 +-
 .../cloudstack/api/command/user/vm/ListVMsCmd.java |    9 +
 .../api/command/user/volume/MigrateVolumeCmd.java  |    8 +
 .../cloudstack/api/response/ClusterResponse.java   |    9 +-
 .../api/response/ConfigurationResponse.java        |   12 +
 .../api/response/DomainRouterResponse.java         |   11 +
 .../api/response/HostForMigrationResponse.java     |  365 +
 .../cloudstack/api/response/HostResponse.java      |   10 +-
 .../cloudstack/api/response/NetworkResponse.java   |    7 +
 .../cloudstack/api/response/PodResponse.java       |    9 +-
 .../cloudstack/api/response/SnapshotResponse.java  |   16 +
 .../response/StoragePoolForMigrationResponse.java  |  248 +
 .../api/response/StoragePoolResponse.java          |   18 +-
 .../cloudstack/api/response/SystemVmResponse.java  |   11 +
 .../cloudstack/api/response/TemplateResponse.java  |    7 +
 .../cloudstack/api/response/UserVmResponse.java    |    7 +
 .../cloudstack/api/response/VolumeResponse.java    |    8 +
 .../api/command/test/ListCfgCmdTest.java           |   89 +
 .../api/command/test/UpdateCfgCmdTest.java         |  116 +
 .../WEB-INF/classes/resources/messages.properties  | 1857 ++--
 .../classes/resources/messages_fr_FR.properties    |  216 +-
 client/tomcatconf/applicationContext.xml.in        |    1 +
 client/tomcatconf/commands.properties.in           |    3 +
 .../cloud/hypervisor/HypervisorCapabilitiesVO.java |   24 +-
 debian/rules                                       |    5 +-
 docs/en-US/Common_Content/feedback.xml             |   24 +
 docs/en-US/Preface.xml                             |    2 +-
 docs/en-US/Release_Notes.xml                       |11073 ++++++++-------
 docs/en-US/advanced-zone-configuration.xml         |    2 +-
 docs/en-US/advanced-zone-network-traffic-types.xml |    2 +-
 docs/en-US/basic-zone-network-traffic-types.xml    |    4 +-
 docs/en-US/build-nonoss.xml                        |   49 +
 docs/en-US/changed-API-commands-4.2.xml            |  107 +
 docs/en-US/feedback.xml                            |   24 +
 docs/en-US/hypervisor-kvm-install-flow.xml         |    2 +-
 .../hypervisor-support-for-primarystorage.xml      |  148 +-
 docs/en-US/limit-accounts-domains.xml              |  371 +
 docs/en-US/source.xml                              |    1 +
 .../troubleshooting-working-with-server-logs.xml   |    6 +-
 docs/en-US/vm-snapshots.xml                        |   10 +-
 docs/en-US/work-with-usage.xml                     |   26 +-
 .../api/storage/ObjectInDataStoreStateMachine.java |    2 +
 .../subsystem/api/storage/VolumeService.java       |    7 +-
 .../datastore/db/StoragePoolDetailsDao.java        |    1 +
 .../engine/cloud/entity/api/VMEntityManager.java   |    2 +-
 .../cloud/entity/api/VMEntityManagerImpl.java      |   53 +-
 .../cloud/entity/api/VirtualMachineEntityImpl.java |    2 +-
 .../cloudstack/storage/image/ImageServiceImpl.java |   85 +-
 .../image/motion/DefaultImageMotionStrategy.java   |   18 +
 .../storage/test/MockStorageMotionStrategy.java    |   19 +
 .../storage/motion/AncientDataMotionStrategy.java  |   89 +-
 .../storage/motion/DataMotionService.java          |    9 +
 .../storage/motion/DataMotionServiceImpl.java      |   16 +
 .../storage/motion/DataMotionStrategy.java         |   10 +
 .../cloudstack/storage/volume/VolumeObject.java    |    2 +
 .../storage/volume/VolumeServiceImpl.java          |  174 +-
 packaging/centos63/package.sh                      |    1 +
 packaging/debian/init/cloud-management             |    2 +-
 packaging/debian/replace.properties                |    2 +-
 .../debian/config/etc/init.d/cloud-early-config    |   53 +-
 .../manager/allocator/impl/RandomAllocator.java    |   56 +
 .../xen/resource/CitrixResourceBase.java           |    4 +-
 .../xen/resource/XenServer56FP1Resource.java       |    1 +
 .../xen/resource/XenServer610Resource.java         |  359 +-
 .../motion/XenServerStorageMotionStrategy.java     |  239 +
 .../cloud/network/element/NiciraNvpElement.java    |    5 +
 .../network/element/NiciraNvpElementTest.java      |  238 +-
 pom.xml                                            |   16 +
 server/pom.xml                                     |    2 +-
 .../agent/manager/allocator/HostAllocator.java     |   23 +-
 .../manager/allocator/impl/FirstFitAllocator.java  |   47 +
 .../manager/allocator/impl/TestingAllocator.java   |    7 +
 server/src/com/cloud/api/ApiDBUtils.java           |   19 +
 server/src/com/cloud/api/ApiResponseHelper.java    |   48 +-
 .../src/com/cloud/api/query/QueryManagerImpl.java  |   18 +-
 .../com/cloud/api/query/ViewResponseHelper.java    |   37 +
 .../api/query/dao/AffinityGroupJoinDaoImpl.java    |    1 +
 .../api/query/dao/DomainRouterJoinDaoImpl.java     |    1 +
 .../src/com/cloud/api/query/dao/HostJoinDao.java   |    5 +
 .../com/cloud/api/query/dao/HostJoinDaoImpl.java   |  136 +-
 .../cloud/api/query/dao/StoragePoolJoinDao.java    |    6 +
 .../api/query/dao/StoragePoolJoinDaoImpl.java      |   60 +-
 .../com/cloud/api/query/dao/UserVmJoinDaoImpl.java |    1 +
 .../com/cloud/api/query/dao/VolumeJoinDaoImpl.java |    3 +-
 .../cloud/api/query/vo/AffinityGroupJoinVO.java    |   11 +
 .../com/cloud/api/query/vo/DomainRouterJoinVO.java |   12 +
 server/src/com/cloud/api/query/vo/HostJoinVO.java  |   11 +
 .../com/cloud/api/query/vo/StoragePoolJoinVO.java  |   11 +
 .../src/com/cloud/api/query/vo/UserVmJoinVO.java   |   13 +
 .../src/com/cloud/api/query/vo/VolumeJoinVO.java   |   15 +
 server/src/com/cloud/configuration/Config.java     |   63 +-
 .../cloud/configuration/ConfigurationManager.java  |    2 +-
 .../configuration/ConfigurationManagerImpl.java    |   71 +-
 .../cloud/configuration/dao/ConfigurationDao.java  |    1 +
 server/src/com/cloud/dc/dao/DataCenterDao.java     |    2 +
 server/src/com/cloud/dc/dao/DataCenterDaoImpl.java |    8 +
 server/src/com/cloud/dc/dao/VlanDao.java           |    2 +
 server/src/com/cloud/dc/dao/VlanDaoImpl.java       |   19 +
 .../ExternalLoadBalancerDeviceManagerImpl.java     |    4 +-
 .../src/com/cloud/network/NetworkManagerImpl.java  |   20 +-
 .../src/com/cloud/network/NetworkServiceImpl.java  |   19 +-
 .../network/element/VirtualRouterElement.java      |    2 +-
 .../router/VirtualNetworkApplianceManagerImpl.java |    5 +-
 .../src/com/cloud/network/vpc/VpcManagerImpl.java  |   29 +
 .../src/com/cloud/server/ConfigurationServer.java  |    5 +
 .../com/cloud/server/ConfigurationServerImpl.java  |   93 +-
 server/src/com/cloud/server/Criteria.java          |   11 +-
 .../src/com/cloud/server/ManagementServerImpl.java |  311 +-
 server/src/com/cloud/storage/VolumeManager.java    |    8 +
 .../src/com/cloud/storage/VolumeManagerImpl.java   |  112 +-
 .../storage/dao/StoragePoolDetailsDaoImpl.java     |    9 +
 .../com/cloud/template/TemplateManagerImpl.java    |   17 +-
 .../com/cloud/usage/UsageNetworkOfferingVO.java    |   14 +-
 .../usage/dao/UsageNetworkOfferingDaoImpl.java     |    9 +-
 server/src/com/cloud/vm/UserVmManagerImpl.java     |  125 +-
 server/src/com/cloud/vm/UserVmStateListener.java   |   21 +-
 server/src/com/cloud/vm/VirtualMachineManager.java |    4 +
 .../com/cloud/vm/VirtualMachineManagerImpl.java    |  246 +-
 .../cloudstack/affinity/AffinityGroupVO.java       |    2 +-
 .../test/com/cloud/vm/MockUserVmManagerImpl.java   |    8 +
 .../cloud/vm/MockVirtualMachineManagerImpl.java    |   10 +
 .../cloud/vm/VirtualMachineManagerImplTest.java    |  231 +-
 .../cloud/vpc/MockConfigurationManagerImpl.java    |    5 +-
 server/test/com/cloud/vpc/Site2SiteVpnTest.java    |    2 +-
 server/test/com/cloud/vpc/VpcApiUnitTest.java      |  167 +-
 .../test/com/cloud/vpc/VpcTestConfiguration.java   |   73 +-
 setup/db/db/schema-40to410.sql                     |    4 +-
 setup/db/db/schema-410to420.sql                    |  338 +-
 test/integration/component/test_accounts.py        |   16 +-
 .../component/test_allocation_states.py            |    2 +-
 test/integration/component/test_blocker_bugs.py    |   12 +-
 test/integration/component/test_egress_rules.py    |   22 +-
 test/integration/component/test_eip_elb.py         |    4 +-
 .../integration/component/test_network_offering.py |    8 +-
 test/integration/component/test_project_configs.py |   10 +-
 test/integration/component/test_project_limits.py  |    6 +-
 .../component/test_project_resources.py            |   12 +-
 test/integration/component/test_project_usage.py   |   18 +-
 test/integration/component/test_projects.py        |   14 +-
 test/integration/component/test_resource_limits.py |    6 +-
 test/integration/component/test_routers.py         |    8 +-
 test/integration/component/test_security_groups.py |   14 +-
 test/integration/component/test_snapshots.py       |   14 +-
 test/integration/component/test_storage_motion.py  |  298 +
 test/integration/component/test_templates.py       |    4 +-
 test/integration/component/test_usage.py           |   18 +-
 .../integration/component/test_vm_passwdenabled.py |    2 +-
 test/integration/component/test_volumes.py         |   10 +-
 test/integration/smoke/test_ScaleVm.py             |  221 -
 test/integration/smoke/test_global_settings.py     |   72 +
 test/integration/smoke/test_iso.py                 |    2 +-
 test/integration/smoke/test_network.py             |    2 +-
 test/integration/smoke/test_non_contigiousvlan.py  |  139 +-
 test/integration/smoke/test_public_ip_range.py     |    2 +-
 test/integration/smoke/test_routers.py             |    2 +-
 test/integration/smoke/test_scale_vm.py            |  221 +
 test/integration/smoke/test_templates.py           |    2 +-
 test/integration/smoke/test_volumes.py             |    2 +-
 .../definitions/systemvmtemplate/cleanup.sh        |    1 -
 .../definitions/systemvmtemplate64/cleanup.sh      |    1 -
 tools/build/build_asf.sh                           |   81 +-
 tools/build/setnextversion.sh                      |   75 +
 tools/marvin/marvin/cloudstackConnection.py        |   92 +-
 tools/marvin/marvin/integration/lib/base.py        |   24 +-
 tools/marvin/marvin/integration/lib/common.py      |    4 +-
 ui/css/cloudstack3.css                             |   88 +-
 ui/index.jsp                                       |    9 +-
 ui/modules/modules.js                              |   20 +
 ui/scripts/accounts.js                             |    7 +
 ui/scripts/instanceWizard.js                       |   37 +-
 ui/scripts/instances.js                            |   73 +-
 ui/scripts/network.js                              |   51 +-
 ui/scripts/plugins.js                              |   95 +-
 ui/scripts/storage.js                              |  117 +-
 ui/scripts/system.js                               |   20 +-
 ui/scripts/templates.js                            |  134 +-
 ui/scripts/ui-custom/pluginListing.js              |  109 +
 ui/scripts/ui-custom/plugins.js                    |  109 -
 ui/scripts/ui-custom/projectSelect.js              |   66 +
 ui/scripts/ui-custom/projects.js                   |    6 +-
 ui/scripts/ui-custom/zoneFilter.js                 |   39 +
 ui/scripts/zoneWizard.js                           |   39 +-
 usage/src/com/cloud/usage/UsageManagerImpl.java    |   10 +-
 210 files changed, 15219 insertions(+), 7537 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/api/src/org/apache/cloudstack/api/ApiConstants.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/api/src/org/apache/cloudstack/api/ResponseGenerator.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/ResponseGenerator.java
index 0dce13b,a3aa9de..6512516
--- a/api/src/org/apache/cloudstack/api/ResponseGenerator.java
+++ b/api/src/org/apache/cloudstack/api/ResponseGenerator.java
@@@ -45,8 -43,7 +45,9 @@@ 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.HostForMigrationResponse;
  import org.apache.cloudstack.api.response.HostResponse;
  import org.apache.cloudstack.api.response.HypervisorCapabilitiesResponse;
  import org.apache.cloudstack.api.response.IPAddressResponse;
@@@ -86,6 -82,6 +87,7 @@@ import org.apache.cloudstack.api.respon
  import org.apache.cloudstack.api.response.SnapshotScheduleResponse;
  import org.apache.cloudstack.api.response.StaticRouteResponse;
  import org.apache.cloudstack.api.response.StorageNetworkIpRangeResponse;
++import org.apache.cloudstack.api.response.StoragePoolForMigrationResponse;
  import org.apache.cloudstack.api.response.StoragePoolResponse;
  import org.apache.cloudstack.api.response.SwiftResponse;
  import org.apache.cloudstack.api.response.SystemVmInstanceResponse;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/api/src/org/apache/cloudstack/api/response/DomainRouterResponse.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/client/tomcatconf/applicationContext.xml.in
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/client/tomcatconf/commands.properties.in
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/api/ApiDBUtils.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/api/ApiResponseHelper.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/api/query/QueryManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/api/query/dao/DomainRouterJoinDaoImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/api/query/vo/DomainRouterJoinVO.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/configuration/ConfigurationManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/network/element/VirtualRouterElement.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/network/vpc/VpcManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/vpc/VpcManagerImpl.java
index e38074d,224a680..b1f2b19
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@@ -178,8 -184,8 +184,9 @@@ public class VpcManagerImpl extends Man
      private final ScheduledExecutorService _executor = Executors.newScheduledThreadPool(1, new NamedThreadFactory("VpcChecker"));
      private List<VpcProvider> vpcElements = null;
      private final List<Service> nonSupportedServices = Arrays.asList(Service.SecurityGroup, Service.Firewall);
 -    private final List<Provider> supportedProviders = Arrays.asList(Provider.VPCVirtualRouter, Provider.NiciraNvp);
 -     
 +    private final List<Provider> supportedProviders = Arrays.asList(Provider.VPCVirtualRouter, Provider.NiciraNvp, Provider.InternalLbVm);
 + 
++
      int _cleanupInterval;
      int _maxNetworks;
      SearchBuilder<IPAddressVO> IpAddressSearch;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/server/ConfigurationServerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/server/ManagementServerImpl.java
index 81ad12f,16127a2..38a0c3f
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@@ -34,7 -34,7 +34,6 @@@ import java.util.List
  import java.util.Map;
  import java.util.Set;
  import java.util.TimeZone;
--import java.util.UUID;
  import java.util.concurrent.Executors;
  import java.util.concurrent.ScheduledExecutorService;
  import java.util.concurrent.TimeUnit;
@@@ -44,360 -44,52 +43,364 @@@ import javax.crypto.spec.SecretKeySpec
  import javax.inject.Inject;
  import javax.naming.ConfigurationException;
  
 -import com.cloud.configuration.*;
 -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.vlan.*;
 -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.FindHostsForMigrationCmd;
 +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.FindStoragePoolsForMigrationCmd;
 +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.DedicatePublicIpRangeCmd;
 +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.vlan.ReleasePublicIpRangeCmd;
 +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.MigrateVirtualMachineWithVolumeCmd;
 +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.engine.subsystem.api.storage.StoragePoolAllocator;
 +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;
@@@ -426,23 -110,11 +429,22 @@@ 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;
@@@ -487,28 -148,11 +489,29 @@@ import com.cloud.projects.ProjectManage
  import com.cloud.resource.ResourceManager;
  import com.cloud.server.ResourceTag.TaggedResourceType;
  import com.cloud.server.auth.UserAuthenticator;
--import com.cloud.service.ServiceOfferingVO;
  import com.cloud.service.dao.ServiceOfferingDao;
 -import com.cloud.storage.*;
++import com.cloud.storage.DiskOfferingVO;
 +import com.cloud.storage.GuestOS;
 +import com.cloud.storage.GuestOSCategoryVO;
 +import com.cloud.storage.GuestOSVO;
 +import com.cloud.storage.GuestOsCategory;
 +import com.cloud.storage.Storage;
  import com.cloud.storage.Storage.ImageFormat;
 +import com.cloud.storage.StorageManager;
 +import com.cloud.storage.StoragePool;
 +import com.cloud.storage.Upload;
  import com.cloud.storage.Upload.Mode;
 +import com.cloud.storage.UploadVO;
 +import com.cloud.storage.VMTemplateVO;
 +import com.cloud.storage.Volume;
++import com.cloud.storage.VolumeManager;
 +import com.cloud.storage.VolumeVO;
 +import com.cloud.storage.dao.DiskOfferingDao;
 +import com.cloud.storage.dao.GuestOSCategoryDao;
 +import com.cloud.storage.dao.GuestOSDao;
 +import com.cloud.storage.dao.UploadDao;
 +import com.cloud.storage.dao.VMTemplateDao;
 +import com.cloud.storage.dao.VolumeDao;
  import com.cloud.storage.s3.S3Manager;
  import com.cloud.storage.secondary.SecondaryStorageVmManager;
  import com.cloud.storage.snapshot.SnapshotManager;
@@@ -549,25 -181,85 +552,26 @@@ import com.cloud.utils.exception.CloudR
  import com.cloud.utils.net.MacAddress;
  import com.cloud.utils.net.NetUtils;
  import com.cloud.utils.ssh.SSHKeysHelper;
 -import com.cloud.vm.*;
 +import com.cloud.vm.ConsoleProxyVO;
++import com.cloud.vm.DiskProfile;
 +import com.cloud.vm.InstanceGroupVO;
 +import com.cloud.vm.SecondaryStorageVmVO;
 +import com.cloud.vm.UserVmVO;
 +import com.cloud.vm.VMInstanceVO;
 +import com.cloud.vm.VirtualMachine;
  import com.cloud.vm.VirtualMachine.State;
 -import com.cloud.vm.dao.*;
 +import com.cloud.vm.VirtualMachineManager;
 +import com.cloud.vm.VirtualMachineProfile;
 +import com.cloud.vm.VirtualMachineProfileImpl;
 +import com.cloud.vm.dao.ConsoleProxyDao;
 +import com.cloud.vm.dao.DomainRouterDao;
 +import com.cloud.vm.dao.InstanceGroupDao;
 +import com.cloud.vm.dao.SecondaryStorageVmDao;
 +import com.cloud.vm.dao.UserVmDao;
 +import com.cloud.vm.dao.VMInstanceDao;
 +
  import edu.emory.mathcs.backport.java.util.Arrays;
  import edu.emory.mathcs.backport.java.util.Collections;
 -import org.apache.cloudstack.acl.ControlledEntity;
 -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.ldap.LDAPConfigCmd;
 -import org.apache.cloudstack.api.command.admin.ldap.LDAPRemoveCmd;
 -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.swift.AddSwiftCmd;
 -import org.apache.cloudstack.api.command.admin.swift.ListSwiftsCmd;
 -import org.apache.cloudstack.api.command.admin.template.PrepareTemplateCmd;
 -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.MigrateVirtualMachineWithVolumeCmd;
 -import org.apache.cloudstack.api.command.admin.vm.RecoverVMCmd;
 -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.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.guest.ListGuestOsCategoriesCmd;
 -import org.apache.cloudstack.api.command.user.guest.ListGuestOsCmd;
 -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.offering.ListDiskOfferingsCmd;
 -import org.apache.cloudstack.api.command.user.offering.ListServiceOfferingsCmd;
 -import org.apache.cloudstack.api.command.user.region.ListRegionsCmd;
 -import org.apache.cloudstack.api.command.user.region.ha.gslb.*;
 -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.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.zone.ListZonesByCmd;
 -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
 -import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
 -import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 -import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
  
  public class ManagementServerImpl extends ManagerBase implements ManagementServer {
      public static final Logger s_logger = Logger.getLogger(ManagementServerImpl.class.getName());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/server/test/com/cloud/vpc/MockConfigurationManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca2fc306/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------
diff --cc setup/db/db/schema-410to420.sql
index 52acd3c,cfce81f..4558f90
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@@ -773,138 -1107,4 +1107,140 @@@ CREATE VIEW `cloud`.`account_view` A
              and async_job.instance_type = 'Account'
              and async_job.job_status = 0;
  
 -alter table `cloud_usage`.`usage_network_offering` add column nic_id bigint(20) unsigned NOT NULL;             
 +
 +
 +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';
 +
 +
 +-- Add role to the domain router view
 +ALTER VIEW `cloud`.`domain_router_view` AS
 +    select 
 +        vm_instance.id id,
 +        vm_instance.name name,
 +        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,
 +        vm_instance.uuid uuid,
 +        vm_instance.created created,
 +        vm_instance.state state,
 +        vm_instance.removed removed,
 +        vm_instance.pod_id pod_id,
 +        vm_instance.instance_name instance_name,
 +        host_pod_ref.uuid pod_uuid,
 +        data_center.id data_center_id,
 +        data_center.uuid data_center_uuid,
 +        data_center.name data_center_name,
 +        data_center.dns1 dns1,
 +        data_center.dns2 dns2,
 +        data_center.ip6_dns1 ip6_dns1,
 +        data_center.ip6_dns2 ip6_dns2,
 +        host.id host_id,
 +        host.uuid host_uuid,
 +        host.name host_name,
 +        vm_template.id template_id,
 +        vm_template.uuid template_uuid,
 +        service_offering.id service_offering_id,
 +        disk_offering.uuid service_offering_uuid,
 +        disk_offering.name service_offering_name,
 +        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.network_domain network_domain,
 +        networks.traffic_type traffic_type,
 +        networks.guest_type guest_type,
 +        async_job.id job_id,
 +        async_job.uuid job_uuid,
 +        async_job.job_status job_status,
 +        async_job.account_id job_account_id,
 +        domain_router.template_version template_version,
 +        domain_router.scripts_version scripts_version,
 +        domain_router.is_redundant_router is_redundant_router,
 +        domain_router.redundant_state redundant_state,
 +        domain_router.stop_pending stop_pending,
 +        domain_router.role role
 +    from
 +        `cloud`.`domain_router`
 +            inner join
 +        `cloud`.`vm_instance` ON vm_instance.id = domain_router.id
 +            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`.`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`.`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`.`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`.`nics` ON vm_instance.id = nics.instance_id
 +            left join
 +        `cloud`.`networks` ON nics.network_id = networks.id
 +            left join
 +        `cloud`.`vpc` ON domain_router.vpc_id = vpc.id
 +            left join
 +        `cloud`.`async_job` ON async_job.instance_id = vm_instance.id
 +            and async_job.instance_type = 'DomainRouter'
 +            and async_job.job_status = 0;
 +
 +
 +-- Add details talbe for the network offering
 +CREATE TABLE `cloud`.`network_offering_details` (
 +  `id` bigint unsigned NOT NULL auto_increment,
 +  `network_offering_id` bigint unsigned NOT NULL COMMENT 'network offering id',
 +  `name` varchar(255) NOT NULL,
 +  `value` varchar(1024) NOT NULL,
 +  PRIMARY KEY (`id`),
 +  CONSTRAINT `fk_network_offering_details__network_offering_id` FOREIGN KEY `fk_network_offering_details__network_offering_id`(`network_offering_id`) REFERENCES `network_offerings`(`id`) ON DELETE CASCADE
 +) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 +
 +-- Change the constraint for the network service map table. Now we support multiple provider for the same service
 +ALTER TABLE `cloud`.`ntwk_service_map` DROP FOREIGN KEY `fk_ntwk_service_map__network_id`;
 +ALTER TABLE `cloud`.`ntwk_service_map` DROP INDEX `network_id`;
 +
 +ALTER TABLE `cloud`.`ntwk_service_map` ADD UNIQUE `network_id` (`network_id`,`service`,`provider`);
 +ALTER TABLE `cloud`.`ntwk_service_map` ADD  CONSTRAINT `fk_ntwk_service_map__network_id` FOREIGN KEY (`network_id`) REFERENCES `networks` (`id`) ON DELETE CASCADE;
 +
 +
 +ALTER TABLE `cloud`.`network_offerings` ADD COLUMN `internal_lb` int(1) unsigned NOT NULL DEFAULT '0' COMMENT 'true if the network offering supports Internal lb service';
 +ALTER TABLE `cloud`.`network_offerings` ADD COLUMN `public_lb` int(1) unsigned NOT NULL DEFAULT '0' COMMENT 'true if the network offering supports Public lb service';
- UPDATE `cloud`.`network_offerings` SET public_lb=1 where id IN (SELECT DISTINCT network_offering_id FROM `cloud`.`ntwk_offering_service_map` WHERE service='Lb');
++UPDATE `cloud`.`network_offerings` SET public_lb=1 where id IN (SELECT DISTINCT network_offering_id FROM `cloud`.`ntwk_offering_service_map` WHERE service='Lb');
++
++alter table `cloud_usage`.`usage_network_offering` add column nic_id bigint(20) unsigned NOT NULL;