You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ed...@apache.org on 2013/06/20 09:19:54 UTC
[21/50] [abbrv] git commit: updated refs/heads/master to 97f8c52
Merge branch 'master' (up to commit
c30d9be3cea30339cfff40c1002906634291b373) into object_store.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/18aeef3e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/18aeef3e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/18aeef3e
Branch: refs/heads/master
Commit: 18aeef3ef19c18ddc45ef16e5249661d4c495895
Parents: ec55c2e c30d9be
Author: Min Chen <mi...@citrix.com>
Authored: Wed Jun 12 11:20:32 2013 -0700
Committer: Min Chen <mi...@citrix.com>
Committed: Wed Jun 12 11:20:32 2013 -0700
----------------------------------------------------------------------
.gitignore | 1 +
INSTALL.md | 19 +-
.../tomcatconf/components-simulator.xml.in | 54 -
agent/bindir/cloud-setup-agent.in | 7 +-
agent/conf/agent.properties | 5 +
api/src/com/cloud/agent/api/to/DnsmasqTO.java | 13 +-
.../cloud/agent/api/to/VirtualMachineTO.java | 9 +
api/src/com/cloud/dc/DedicatedResources.java | 33 +
.../cloud/deploy/DeploymentClusterPlanner.java | 4 +-
api/src/com/cloud/event/EventTypes.java | 7 +-
api/src/com/cloud/network/NetworkService.java | 2 +-
.../ha/GlobalLoadBalancingRulesService.java | 3 +
api/src/com/cloud/user/AccountService.java | 13 +-
api/src/com/cloud/vm/VmDiskStats.java | 30 +
api/src/com/cloud/vm/VmStats.java | 8 +
.../affinity/AffinityGroupService.java | 5 +-
.../org/apache/cloudstack/api/ApiConstants.java | 4 +
api/src/org/apache/cloudstack/api/BaseCmd.java | 2 +-
.../cloudstack/api/ResponseGenerator.java | 135 +-
.../cloudstack/api/ServerApiException.java | 3 +-
.../config/UpdateHypervisorCapabilitiesCmd.java | 8 +-
...ConfigureInternalLoadBalancerElementCmd.java | 23 +-
.../admin/storage/CreateStoragePoolCmd.java | 20 +-
.../FindStoragePoolsForMigrationCmd.java | 25 +-
.../command/admin/vpc/UpdateVPCOfferingCmd.java | 2 +-
.../user/account/AddAccountToProjectCmd.java | 2 +-
.../user/address/AssociateIPAddrCmd.java | 6 +-
.../user/address/DisassociateIPAddrCmd.java | 8 +-
.../affinitygroup/DeleteAffinityGroupCmd.java | 18 +-
.../affinitygroup/ListAffinityGroupsCmd.java | 7 +-
.../user/autoscale/ListConditionsCmd.java | 9 +-
.../firewall/CreatePortForwardingRuleCmd.java | 6 +-
.../user/network/CreateNetworkACLCmd.java | 11 +-
.../gslb/DeleteGlobalLoadBalancerRuleCmd.java | 12 +-
.../user/snapshot/CreateSnapshotPolicyCmd.java | 2 +-
.../user/template/CreateTemplateCmd.java | 34 +-
.../api/command/user/vm/RestoreVMCmd.java | 5 +-
.../command/user/volume/UploadVolumeCmd.java | 8 +-
.../api/command/user/vpc/RestartVPCCmd.java | 2 +-
.../api/command/user/vpc/UpdateVPCCmd.java | 4 +-
.../api/response/ExceptionResponse.java | 12 +-
.../HypervisorCapabilitiesResponse.java | 32 +
.../api/response/NetworkResponse.java | 12 +
.../api/response/ServiceOfferingResponse.java | 11 +
.../StoragePoolForMigrationResponse.java | 248 ----
.../api/response/StoragePoolResponse.java | 40 +-
.../cloudstack/api/response/UserVmResponse.java | 28 +
.../apache/cloudstack/query/QueryService.java | 3 +-
.../org/apache/cloudstack/usage/UsageTypes.java | 8 +
.../classes/resources/messages.properties | 7 +
.../classes/resources/messages_ar.properties | 2 +-
.../classes/resources/messages_ca.properties | 1 -
.../classes/resources/messages_de_DE.properties | 1 -
.../classes/resources/messages_es.properties | 1 -
.../classes/resources/messages_fr_FR.properties | 5 +-
.../classes/resources/messages_it_IT.properties | 191 ++-
.../classes/resources/messages_ja.properties | 108 +-
.../classes/resources/messages_ko_KR.properties | 4 +-
.../classes/resources/messages_nb_NO.properties | 1 -
.../classes/resources/messages_pt_BR.properties | 2 +-
.../classes/resources/messages_ru_RU.properties | 4 +-
.../classes/resources/messages_zh_CN.properties | 10 +-
client/pom.xml | 10 +
client/tomcatconf/applicationContext.xml.in | 12 +-
client/tomcatconf/commands.properties.in | 25 +-
client/tomcatconf/componentContext.xml.in | 32 +-
client/tomcatconf/nonossComponentContext.xml.in | 14 +
.../tomcatconf/simulatorComponentContext.xml.in | 6 +
.../cloud/agent/api/GetVmDiskStatsAnswer.java | 47 +
.../cloud/agent/api/GetVmDiskStatsCommand.java | 54 +
.../agent/api/MigrateWithStorageCommand.java | 12 +
.../com/cloud/agent/api/UnPlugNicCommand.java | 2 +-
.../com/cloud/agent/api/VmDiskStatsEntry.java | 90 ++
core/src/com/cloud/agent/api/VmStatsEntry.java | 48 +
.../virtualnetwork/VirtualRoutingResource.java | 2 +-
.../com/cloud/network/DnsMasqConfigurator.java | 30 +-
.../template/HttpTemplateDownloader.java | 7 +
debian/cloudstack-management.install | 23 +-
debian/control | 2 +-
debian/rules | 6 +-
developer/pom.xml | 2 +-
docs/en-US/CloudStack_GSoC_Guide.ent | 22 +
docs/en-US/CloudStack_GSoC_Guide.xml | 54 +
docs/en-US/Release_Notes.xml | 47 +-
docs/en-US/acquire-new-ip-for-vpc.xml | 33 +-
docs/en-US/add-gateway-vpc.xml | 57 +-
docs/en-US/add-loadbalancer-rule-vpc.xml | 359 ++++-
docs/en-US/add-portforward-rule-vpc.xml | 36 +-
docs/en-US/add-tier.xml | 5 +-
docs/en-US/add-vm-to-tier.xml | 14 +-
docs/en-US/configure-acl.xml | 102 +-
docs/en-US/egress-firewall-rule.xml | 4 +-
docs/en-US/enable-disable-static-nat-vpc.xml | 35 +-
docs/en-US/gsoc-dharmesh.xml | 149 ++
docs/en-US/gsoc-imduffy15.xml | 395 ++++++
docs/en-US/gsoc-tuna.xml | 231 +++
docs/en-US/guest-ip-ranges.xml | 2 +-
docs/en-US/images/add-new-gateway-vpc.png | Bin 23184 -> 21912 bytes
docs/en-US/images/add-vm-vpc.png | Bin 0 -> 8596 bytes
docs/en-US/images/del-tier.png | Bin 0 -> 815 bytes
docs/en-US/images/mesos-integration-arch.jpg | 0
docs/en-US/images/vpc-lb.png | Bin 0 -> 181811 bytes
docs/en-US/ip-vlan-tenant.xml | 205 +++
docs/en-US/multiple-ip-nic.xml | 3 +-
docs/en-US/multiple-ip-range.xml | 42 +
docs/en-US/networks.xml | 1 +
docs/en-US/pvlan.xml | 57 +
docs/en-US/release-ip-for-vpc.xml | 31 +-
docs/en-US/remove-tier.xml | 22 +-
docs/en-US/remove-vpc.xml | 5 +-
docs/en-US/vpc.xml | 4 +-
docs/publican-gsoc-2013.cfg | 27 +
.../api/storage/DataStoreLifeCycle.java | 3 +-
.../datastore/db/PrimaryDataStoreDao.java | 14 +-
.../datastore/db/PrimaryDataStoreDaoImpl.java | 11 +
.../storage/datastore/db/StoragePoolVO.java | 13 +
.../orchestration/CloudOrchestrator.java | 3 +-
.../src/com/cloud/alert/dao/AlertDaoImpl.java | 2 +-
.../schema/src/com/cloud/dc/dao/ClusterDao.java | 1 +
.../src/com/cloud/dc/dao/ClusterDaoImpl.java | 14 +-
.../src/com/cloud/domain/dao/DomainDaoImpl.java | 2 +-
.../schema/src/com/cloud/host/dao/HostDao.java | 6 +
.../src/com/cloud/host/dao/HostDaoImpl.java | 37 +-
.../cloud/upgrade/DatabaseUpgradeChecker.java | 5 +-
.../upgrade/PremiumDatabaseUpgradeChecker.java | 4 -
.../com/cloud/upgrade/dao/Upgrade302to40.java | 41 +
.../com/cloud/upgrade/dao/Upgrade410to420.java | 826 ++++++++++-
.../src/com/cloud/usage/UsageVmDiskVO.java | 180 +++
.../src/com/cloud/usage/dao/UsageDao.java | 4 +
.../src/com/cloud/usage/dao/UsageDaoImpl.java | 105 ++
.../com/cloud/usage/dao/UsageNetworkDao.java | 2 +
.../cloud/usage/dao/UsageNetworkDaoImpl.java | 34 +
.../src/com/cloud/usage/dao/UsageVmDiskDao.java | 29 +
.../com/cloud/usage/dao/UsageVmDiskDaoImpl.java | 139 ++
.../src/com/cloud/user/VmDiskStatisticsVO.java | 216 +++
.../com/cloud/user/dao/VmDiskStatisticsDao.java | 35 +
.../cloud/user/dao/VmDiskStatisticsDaoImpl.java | 134 ++
.../schema/src/com/cloud/vm/dao/UserVmDao.java | 3 +-
.../src/com/cloud/vm/dao/UserVmDaoImpl.java | 3 +-
.../schema/src/com/cloud/vm/dao/UserVmData.java | 36 +
.../lb/dao/ApplicationLoadBalancerRuleDao.java | 1 +
.../dao/ApplicationLoadBalancerRuleDaoImpl.java | 22 +-
.../region/gslb/GlobalLoadBalancerDaoImpl.java | 12 +
.../region/gslb/GlobalLoadBalancerRuleDao.java | 3 +
.../allocator/AbstractStoragePoolAllocator.java | 1 +
.../allocator/ZoneWideStoragePoolAllocator.java | 9 +-
.../datastore/PrimaryDataStoreHelper.java | 10 +
packaging/centos63/cloud-management.rc | 10 +-
packaging/centos63/cloud.spec | 11 +-
.../debian/config/etc/init.d/cloud-early-config | 31 +-
.../debian/config/etc/iptables/iptables-router | 1 +
patches/systemvm/debian/config/etc/rc.local | 3 +
.../opt/cloud/bin/get_template_version.sh | 26 +
.../debian/config/opt/cloud/bin/ipassoc.sh | 6 +-
.../debian/config/opt/cloud/bin/vpc_func.sh | 2 +-
.../debian/config/root/deleteIpAlias.sh | 2 +-
.../root/redundant_router/backup.sh.templ | 2 +
.../explicit-dedication/pom.xml | 33 +
.../affinity/ExplicitDedicationProcessor.java | 383 +++++
plugins/dedicated-resources/pom.xml | 29 +
.../api/commands/DedicateClusterCmd.java | 115 ++
.../api/commands/DedicateHostCmd.java | 118 ++
.../cloudstack/api/commands/DedicatePodCmd.java | 120 ++
.../api/commands/DedicateZoneCmd.java | 120 ++
.../api/commands/ListDedicatedClustersCmd.java | 105 ++
.../api/commands/ListDedicatedHostsCmd.java | 105 ++
.../api/commands/ListDedicatedPodsCmd.java | 105 ++
.../api/commands/ListDedicatedZonesCmd.java | 105 ++
.../commands/ReleaseDedicatedClusterCmd.java | 91 ++
.../api/commands/ReleaseDedicatedHostCmd.java | 91 ++
.../api/commands/ReleaseDedicatedPodCmd.java | 91 ++
.../api/commands/ReleaseDedicatedZoneCmd.java | 91 ++
.../api/response/DedicateClusterResponse.java | 79 ++
.../api/response/DedicateHostResponse.java | 79 ++
.../api/response/DedicatePodResponse.java | 82 ++
.../api/response/DedicateZoneResponse.java | 83 ++
.../dedicated/DedicatedResourceManagerImpl.java | 815 +++++++++++
.../cloudstack/dedicated/DedicatedService.java | 63 +
.../dedicated/manager/DedicatedApiUnitTest.java | 317 +++++
.../test/resource/dedicatedContext.xml | 45 +
.../cloud/deploy/ImplicitDedicationPlanner.java | 117 +-
.../implicitplanner/ImplicitPlannerTest.java | 18 +-
plugins/hypervisors/kvm/pom.xml | 9 +
.../kvm/resource/LibvirtComputingResource.java | 127 +-
.../kvm/storage/LibvirtStorageAdaptor.java | 248 +++-
.../resources/components-simulator.xml | 66 -
.../cloud/agent/manager/MockAgentManager.java | 15 +-
.../cloud/agent/manager/MockNetworkManager.java | 91 ++
.../agent/manager/MockNetworkManagerImpl.java | 236 ++++
.../com/cloud/agent/manager/MockVmManager.java | 72 +-
.../cloud/agent/manager/MockVmManagerImpl.java | 142 +-
.../agent/manager/SimulatorManagerImpl.java | 75 +-
.../SimulatorComponentLibrary.java | 40 -
plugins/hypervisors/vmware/pom.xml | 6 +
.../com/cloud/hypervisor/vmware/LegacyZone.java | 28 +
.../cloud/hypervisor/vmware/LegacyZoneVO.java | 81 ++
.../hypervisor/vmware/VmwareDatacenter.java | 36 +
.../vmware/VmwareDatacenterService.java | 32 +
.../hypervisor/vmware/VmwareDatacenterVO.java | 160 +++
.../vmware/VmwareDatacenterZoneMap.java | 30 +
.../vmware/VmwareDatacenterZoneMapVO.java | 78 +
.../vmware/VmwareServerDiscoverer.java | 80 +-
.../hypervisor/vmware/dao/LegacyZoneDao.java | 37 +
.../vmware/dao/LegacyZoneDaoImpl.java | 66 +
.../vmware/dao/VmwareDatacenterDao.java | 65 +
.../vmware/dao/VmwareDatacenterDaoImpl.java | 104 ++
.../vmware/dao/VmwareDatacenterZoneMapDao.java | 35 +
.../dao/VmwareDatacenterZoneMapDaoImpl.java | 61 +
.../vmware/manager/VmwareManager.java | 3 +
.../vmware/manager/VmwareManagerImpl.java | 276 +++-
.../manager/VmwareStorageManagerImpl.java | 33 +-
.../vmware/resource/VmwareResource.java | 324 ++++-
.../api/command/admin/zone/AddVmwareDcCmd.java | 123 ++
.../command/admin/zone/RemoveVmwareDcCmd.java | 99 ++
.../api/response/VmwareDatacenterResponse.java | 51 +
.../motion/VmwareStorageMotionStrategy.java | 205 +++
.../vmware/VmwareDatacenterApiUnitTest.java | 426 ++++++
.../motion/VmwareStorageMotionStrategyTest.java | 271 ++++
.../xen/resource/CitrixResourceBase.java | 127 +-
.../hypervisor/xen/resource/XcpOssResource.java | 35 +-
.../xen/resource/XenServer56FP1Resource.java | 2 +-
.../network/cisco/CiscoVnmcConnectionImpl.java | 2 +-
.../cloud/network/element/CiscoVnmcElement.java | 47 +-
.../network/resource/CiscoVnmcResource.java | 2 +-
.../element/InternalLoadBalancerElement.java | 18 +-
.../JuniperSRXExternalFirewallElement.java | 1 +
.../network/resource/JuniperSrxResource.java | 35 +-
.../network/resource/NetscalerResource.java | 38 +
plugins/pom.xml | 2 +
.../CloudStackImageStoreLifeCycleImpl.java | 4 +-
.../lifecycle/S3ImageStoreLifeCycleImpl.java | 5 +-
.../SampleImageStoreLifeCycleImpl.java | 3 +-
.../lifecycle/SwiftImageStoreLifeCycleImpl.java | 4 +-
...CloudStackPrimaryDataStoreLifeCycleImpl.java | 7 +-
.../SamplePrimaryDataStoreLifeCycleImpl.java | 2 +-
pom.xml | 1 +
python/lib/cloudutils/globalEnv.py | 2 +
python/lib/cloudutils/networkConfig.py | 14 +-
python/lib/cloudutils/serviceConfig.py | 66 +-
scripts/storage/qcow2/modifyvlan.sh | 269 ----
scripts/vm/hypervisor/kvm/patchviasocket.pl | 0
scripts/vm/hypervisor/xenserver/vmops | 1 +
scripts/vm/network/ovs-pvlan-vm.sh | 3 +-
server/pom.xml | 5 +
server/src/com/cloud/api/ApiDBUtils.java | 9 +-
server/src/com/cloud/api/ApiResponseHelper.java | 48 +-
server/src/com/cloud/api/ApiServer.java | 32 +-
.../com/cloud/api/query/QueryManagerImpl.java | 78 +-
.../com/cloud/api/query/ViewResponseHelper.java | 70 +-
.../query/dao/ServiceOfferingJoinDaoImpl.java | 1 +
.../cloud/api/query/dao/StoragePoolJoinDao.java | 12 +-
.../api/query/dao/StoragePoolJoinDaoImpl.java | 13 +-
.../cloud/api/query/dao/UserVmJoinDaoImpl.java | 12 +
.../api/query/vo/ServiceOfferingJoinVO.java | 11 +
.../cloud/api/query/vo/StoragePoolJoinVO.java | 19 +-
.../api/response/ApiResponseSerializer.java | 23 +-
.../com/cloud/async/AsyncJobManagerImpl.java | 17 +-
server/src/com/cloud/async/dao/AsyncJobDao.java | 5 +-
.../com/cloud/async/dao/AsyncJobDaoImpl.java | 88 +-
server/src/com/cloud/configuration/Config.java | 6 +-
.../configuration/ConfigurationManagerImpl.java | 113 +-
.../consoleproxy/ConsoleProxyManagerImpl.java | 17 +-
.../src/com/cloud/dc/DedicatedResourceVO.java | 136 ++
.../com/cloud/dc/dao/DedicatedResourceDao.java | 49 +
.../cloud/dc/dao/DedicatedResourceDaoImpl.java | 304 ++++
.../deploy/DeploymentPlanningManagerImpl.java | 77 +-
.../src/com/cloud/deploy/FirstFitPlanner.java | 3 +-
.../cloud/hypervisor/HypervisorGuruBase.java | 7 +
.../ExternalFirewallDeviceManagerImpl.java | 6 +-
.../ExternalLoadBalancerDeviceManagerImpl.java | 22 +-
.../src/com/cloud/network/NetworkManager.java | 31 +-
.../com/cloud/network/NetworkManagerImpl.java | 242 +++-
.../src/com/cloud/network/NetworkModelImpl.java | 50 +-
.../com/cloud/network/NetworkServiceImpl.java | 125 +-
.../network/firewall/FirewallManagerImpl.java | 1 +
.../cloud/network/guru/DirectNetworkGuru.java | 5 +-
.../network/guru/DirectPodBasedNetworkGuru.java | 2 +-
.../lb/LoadBalancingRulesManagerImpl.java | 39 +-
.../VirtualNetworkApplianceManagerImpl.java | 62 +-
.../VpcVirtualNetworkApplianceManagerImpl.java | 6 +-
.../com/cloud/network/rules/RulesManager.java | 27 -
.../cloud/network/rules/RulesManagerImpl.java | 115 +-
.../network/vpc/NetworkACLManagerImpl.java | 27 +
.../network/vpc/NetworkACLServiceImpl.java | 42 +-
.../src/com/cloud/network/vpc/VpcManager.java | 2 +-
.../com/cloud/network/vpc/VpcManagerImpl.java | 84 +-
.../com/cloud/projects/ProjectManagerImpl.java | 34 +-
.../com/cloud/resource/ResourceManagerImpl.java | 80 +-
.../cloud/server/ConfigurationServerImpl.java | 50 +-
.../src/com/cloud/server/ManagementServer.java | 34 -
.../com/cloud/server/ManagementServerImpl.java | 105 +-
server/src/com/cloud/server/StatsCollector.java | 247 ++++
.../com/cloud/storage/StorageManagerImpl.java | 25 +-
server/src/com/cloud/storage/VolumeManager.java | 3 +
.../com/cloud/storage/VolumeManagerImpl.java | 44 +-
.../storage/listener/StoragePoolMonitor.java | 5 +-
.../secondary/SecondaryStorageManagerImpl.java | 20 +-
.../storage/snapshot/SnapshotManagerImpl.java | 34 +-
.../com/cloud/template/TemplateManagerImpl.java | 4 +-
server/src/com/cloud/user/AccountManager.java | 16 +-
.../src/com/cloud/user/AccountManagerImpl.java | 159 +--
.../src/com/cloud/user/DomainManagerImpl.java | 36 +-
server/src/com/cloud/vm/UserVmManager.java | 5 +
server/src/com/cloud/vm/UserVmManagerImpl.java | 377 ++++-
.../com/cloud/vm/VirtualMachineManagerImpl.java | 2 +-
.../affinity/AffinityGroupServiceImpl.java | 13 +-
.../lb/ApplicationLoadBalancerManagerImpl.java | 2 +-
.../GlobalLoadBalancingRulesServiceImpl.java | 95 +-
server/test/async-job-component.xml | 1 +
.../cloud/network/MockNetworkManagerImpl.java | 33 +-
.../com/cloud/network/MockRulesManagerImpl.java | 63 -
.../server/ConfigurationServerImplTest.java | 61 +
.../com/cloud/user/MockAccountManagerImpl.java | 54 +-
.../vm/DeploymentPlanningManagerImplTest.java | 9 +
.../com/cloud/vm/MockUserVmManagerImpl.java | 12 +
server/test/com/cloud/vm/UserVmManagerTest.java | 42 +-
.../com/cloud/vpc/MockNetworkManagerImpl.java | 58 +-
.../test/com/cloud/vpc/MockVpcManagerImpl.java | 2 +-
.../com/cloud/vpc/NetworkACLManagerTest.java | 8 +
.../com/cloud/vpc/NetworkACLServiceTest.java | 1 +
server/test/com/cloud/vpc/VpcApiUnitTest.java | 10 +-
.../affinity/AffinityApiUnitTest.java | 27 +-
.../networkoffering/ChildTestConfiguration.java | 8 +-
...GlobalLoadBalancingRulesServiceImplTest.java | 13 +
setup/db/create-schema.sql | 1 -
setup/db/db/schema-302to40.sql | 3 -
setup/db/db/schema-40to410.sql | 6 +-
setup/db/db/schema-410to420.sql | 144 +-
setup/dev/advancedsg.cfg | 185 +++
.../component/test_advancedsg_networks.py | 753 ++++++++++
test/integration/component/test_assign_vm.py | 458 ++++++
.../component/test_custom_hostname.py | 2 +-
test/integration/component/test_egress_rules.py | 20 +-
.../component/test_explicit_dedication.py | 231 +++
.../component/test_high_availability.py | 1 -
.../component/test_host_high_availability.py | 707 +++++-----
.../component/test_project_limits.py | 8 +-
.../component/test_project_resources.py | 4 +-
.../integration/component/test_project_usage.py | 2 +-
.../component/test_security_groups.py | 22 +-
.../component/test_shared_networks.py | 13 +
test/integration/component/test_stopped_vm.py | 10 +-
.../component/test_storage_motion.py | 2 -
test/integration/component/test_tags.py | 8 +-
test/integration/component/test_templates.py | 89 --
.../component/test_vm_passwdenabled.py | 4 +-
.../component/test_vpc_host_maintenance.py | 2 -
.../component/test_vpc_network_lbrules.py | 15 -
.../component/test_vpc_network_pfrules.py | 8 -
.../component/test_vpc_network_staticnatrule.py | 4 -
test/integration/smoke/test_internal_lb.py | 355 ++---
test/integration/smoke/test_iso.py | 2 +-
test/integration/smoke/test_network.py | 238 ++--
test/integration/smoke/test_network_acl.py | 229 +--
test/integration/smoke/test_nicdetail.py | 224 ---
test/integration/smoke/test_primary_storage.py | 134 +-
test/integration/smoke/test_privategw_acl.py | 3 +
test/integration/smoke/test_routers.py | 1 -
.../integration/smoke/test_service_offerings.py | 375 +++--
test/integration/smoke/test_templates.py | 2 +-
test/integration/smoke/test_vm_life_cycle.py | 248 +---
test/integration/smoke/test_volumedetail.py | 239 ----
test/integration/smoke/test_volumes.py | 31 +-
test/setup-test-data.sh | 102 --
tools/apidoc/gen_toc.py | 5 +-
.../definitions/systemvmtemplate/postinstall.sh | 18 +-
.../systemvmtemplate64/postinstall.sh | 19 +-
tools/cli/cloudmonkey/cachemaker.py | 2 +-
tools/devcloud-kvm/devcloud-kvm.cfg | 2 +-
tools/devcloud/devcloud-advancedsg.cfg | 119 ++
tools/devcloud/devcloud.cfg | 2 +-
tools/devcloud/devcloud_internal-mgt.cfg | 2 +-
tools/devcloud/quickcloud.cfg | 2 +-
tools/marvin/marvin/TestCaseExecuteEngine.py | 2 +-
tools/marvin/marvin/cloudstackConnection.py | 5 +-
tools/marvin/marvin/configGenerator.py | 129 +-
tools/marvin/marvin/deployDataCenter.py | 30 +-
tools/marvin/marvin/integration/lib/base.py | 207 ++-
tools/marvin/marvin/jsonHelper.py | 4 +-
.../marvin/sandbox/advancedsg/__init__.py | 18 +
.../marvin/sandbox/advancedsg/advancedsg_env.py | 150 ++
.../marvin/sandbox/advancedsg/setup.properties | 61 +
tools/marvin/setup.py | 2 +-
ui/css/cloudstack3.css | 95 +-
ui/dictionary.jsp | 7 +
ui/images/sprites.png | Bin 192407 -> 193277 bytes
ui/index.jsp | 2 +-
ui/modules/modules.js | 1 +
ui/modules/vpc/vpc.css | 384 +++++
ui/modules/vpc/vpc.js | 425 ++++++
ui/scripts/configuration.js | 197 ++-
ui/scripts/docs.js | 14 +-
ui/scripts/instances.js | 23 +-
ui/scripts/network.js | 171 ++-
ui/scripts/projects.js | 3 +
ui/scripts/regions.js | 215 ++-
ui/scripts/sharedFunctions.js | 2 +-
ui/scripts/storage.js | 2 +-
ui/scripts/system.js | 1193 +++++++++++++++-
ui/scripts/templates.js | 4 +-
ui/scripts/ui-custom/ipRules.js | 4 +-
ui/scripts/ui-custom/projects.js | 25 +
ui/scripts/ui/dialog.js | 94 +-
ui/scripts/ui/widgets/detailView.js | 23 +-
ui/scripts/ui/widgets/listView.js | 49 +-
ui/scripts/ui/widgets/multiEdit.js | 1330 +++++++++---------
ui/scripts/vpc.js | 1281 ++++++++++++++++-
ui/scripts/zoneWizard.js | 118 +-
usage/src/com/cloud/usage/UsageManagerImpl.java | 169 ++-
.../cloud/usage/parser/VmDiskUsageParser.java | 208 +++
.../test/com/cloud/usage/UsageManagerTest.java | 3 +
.../usage/UsageManagerTestConfiguration.java | 2 +
.../utils/exception/CloudRuntimeException.java | 24 +-
.../utils/exception/ExceptionProxyObject.java | 50 +
utils/src/com/cloud/utils/net/NetUtils.java | 30 +
utils/src/com/cloud/utils/ssh/SshHelper.java | 4 -
.../test/com/cloud/utils/net/NetUtilsTest.java | 19 +
.../vmware/mo/CustomFieldConstants.java | 1 +
.../hypervisor/vmware/mo/DatacenterMO.java | 5 +
.../cloud/hypervisor/vmware/mo/DatastoreMO.java | 44 +-
.../vmware/mo/HostDatastoreBrowserMO.java | 20 +-
.../vmware/mo/HypervisorHostHelper.java | 1 +
.../vmware/mo/VirtualDiskManagerMO.java | 4 +
.../hypervisor/vmware/mo/VirtualMachineMO.java | 26 +
424 files changed, 23782 insertions(+), 5630 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/api/src/com/cloud/agent/api/to/VirtualMachineTO.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/api/src/org/apache/cloudstack/api/BaseCmd.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/api/src/org/apache/cloudstack/api/ResponseGenerator.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/ResponseGenerator.java
index 575a2ff,096bf26..d8d07cb
--- a/api/src/org/apache/cloudstack/api/ResponseGenerator.java
+++ b/api/src/org/apache/cloudstack/api/ResponseGenerator.java
@@@ -110,6 -91,106 +91,108 @@@ import com.cloud.vm.Nic
import com.cloud.vm.NicSecondaryIp;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.snapshot.VMSnapshot;
+ 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;
+ import org.apache.cloudstack.api.response.AutoScaleVmProfileResponse;
+ import org.apache.cloudstack.api.response.CapacityResponse;
+ import org.apache.cloudstack.api.response.ClusterResponse;
+ import org.apache.cloudstack.api.response.ConditionResponse;
+ import org.apache.cloudstack.api.response.ConfigurationResponse;
+ import org.apache.cloudstack.api.response.CounterResponse;
+ import org.apache.cloudstack.api.response.CreateCmdResponse;
+ import org.apache.cloudstack.api.response.DiskOfferingResponse;
+ import org.apache.cloudstack.api.response.DomainResponse;
+ import org.apache.cloudstack.api.response.DomainRouterResponse;
+ import org.apache.cloudstack.api.response.EventResponse;
+ 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.GuestVlanRangeResponse;
+ 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;
++import org.apache.cloudstack.api.response.ImageStoreResponse;
+ import org.apache.cloudstack.api.response.InstanceGroupResponse;
+ import org.apache.cloudstack.api.response.InternalLoadBalancerElementResponse;
+ import org.apache.cloudstack.api.response.IpForwardingRuleResponse;
+ import org.apache.cloudstack.api.response.IsolationMethodResponse;
+ import org.apache.cloudstack.api.response.LBHealthCheckResponse;
+ import org.apache.cloudstack.api.response.LBStickinessResponse;
+ import org.apache.cloudstack.api.response.LDAPConfigResponse;
+ import org.apache.cloudstack.api.response.LoadBalancerResponse;
+ import org.apache.cloudstack.api.response.NetworkACLItemResponse;
+ import org.apache.cloudstack.api.response.NetworkACLResponse;
+ import org.apache.cloudstack.api.response.NetworkOfferingResponse;
+ import org.apache.cloudstack.api.response.NetworkResponse;
+ import org.apache.cloudstack.api.response.NicResponse;
+ import org.apache.cloudstack.api.response.NicSecondaryIpResponse;
+ import org.apache.cloudstack.api.response.PhysicalNetworkResponse;
+ import org.apache.cloudstack.api.response.PodResponse;
+ import org.apache.cloudstack.api.response.PortableIpRangeResponse;
+ import org.apache.cloudstack.api.response.PortableIpResponse;
+ import org.apache.cloudstack.api.response.PrivateGatewayResponse;
+ import org.apache.cloudstack.api.response.ProjectAccountResponse;
+ import org.apache.cloudstack.api.response.ProjectInvitationResponse;
+ import org.apache.cloudstack.api.response.ProjectResponse;
+ import org.apache.cloudstack.api.response.ProviderResponse;
+ import org.apache.cloudstack.api.response.RegionResponse;
+ import org.apache.cloudstack.api.response.RemoteAccessVpnResponse;
+ import org.apache.cloudstack.api.response.ResourceCountResponse;
+ import org.apache.cloudstack.api.response.ResourceLimitResponse;
+ import org.apache.cloudstack.api.response.ResourceTagResponse;
+ import org.apache.cloudstack.api.response.S3Response;
+ import org.apache.cloudstack.api.response.SecurityGroupResponse;
+ import org.apache.cloudstack.api.response.ServiceOfferingResponse;
+ import org.apache.cloudstack.api.response.ServiceResponse;
+ import org.apache.cloudstack.api.response.Site2SiteCustomerGatewayResponse;
+ import org.apache.cloudstack.api.response.Site2SiteVpnConnectionResponse;
+ import org.apache.cloudstack.api.response.Site2SiteVpnGatewayResponse;
+ import org.apache.cloudstack.api.response.SnapshotPolicyResponse;
+ import org.apache.cloudstack.api.response.SnapshotResponse;
+ 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.StoragePoolResponse;
+ import org.apache.cloudstack.api.response.SwiftResponse;
+ import org.apache.cloudstack.api.response.SystemVmInstanceResponse;
+ import org.apache.cloudstack.api.response.SystemVmResponse;
+ import org.apache.cloudstack.api.response.TemplatePermissionsResponse;
+ import org.apache.cloudstack.api.response.TemplateResponse;
+ import org.apache.cloudstack.api.response.TrafficMonitorResponse;
+ import org.apache.cloudstack.api.response.TrafficTypeResponse;
+ import org.apache.cloudstack.api.response.UsageRecordResponse;
+ import org.apache.cloudstack.api.response.UserResponse;
+ import org.apache.cloudstack.api.response.UserVmResponse;
+ import org.apache.cloudstack.api.response.VMSnapshotResponse;
+ import org.apache.cloudstack.api.response.VirtualRouterProviderResponse;
+ import org.apache.cloudstack.api.response.VlanIpRangeResponse;
+ import org.apache.cloudstack.api.response.VolumeResponse;
+ import org.apache.cloudstack.api.response.VpcOfferingResponse;
+ import org.apache.cloudstack.api.response.VpcResponse;
+ import org.apache.cloudstack.api.response.VpnUsersResponse;
+ import org.apache.cloudstack.api.response.ZoneResponse;
+ import org.apache.cloudstack.network.lb.ApplicationLoadBalancerRule;
+ import org.apache.cloudstack.region.PortableIp;
+ import org.apache.cloudstack.region.PortableIpRange;
+ import org.apache.cloudstack.region.Region;
+ import org.apache.cloudstack.usage.Usage;
+
++import com.cloud.storage.ImageStore;
+ import java.text.DecimalFormat;
+ import java.util.EnumSet;
+ import java.util.List;
+ import java.util.Map;
public interface ResponseGenerator {
UserResponse createUserResponse(UserAccount user);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/api/src/org/apache/cloudstack/query/QueryService.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/query/QueryService.java
index 1a9e36e,73e393b..28dba3d
--- a/api/src/org/apache/cloudstack/query/QueryService.java
+++ b/api/src/org/apache/cloudstack/query/QueryService.java
@@@ -111,11 -85,9 +111,12 @@@ public interface QueryService
public ListResponse<ZoneResponse> listDataCenters(ListZonesByCmd cmd);
+ public ListResponse<TemplateResponse> listTemplates(ListTemplatesCmd cmd);
+
+ public ListResponse<TemplateResponse> listIsos(ListIsosCmd cmd);
public ListResponse<AffinityGroupResponse> listAffinityGroups(Long affinityGroupId, String affinityGroupName,
- String affinityGroupType, Long vmId, Long startIndex, Long pageSize);
+ String affinityGroupType, Long vmId, String accountName, Long domainId, boolean isRecursive,
+ boolean listAll, Long startIndex, Long pageSize);
public List<ResourceDetailResponse> listResource(ListResourceDetailsCmd cmd);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/client/pom.xml
----------------------------------------------------------------------
diff --cc client/pom.xml
index ca92c7e,ab758eb..672f4eb
--- a/client/pom.xml
+++ b/client/pom.xml
@@@ -30,8 -30,13 +30,13 @@@
<artifactId>cloud-plugin-acl-static-role-based</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
+ <dependency>
<groupId>org.apache.cloudstack</groupId>
+ <artifactId>cloud-plugin-dedicated-resources</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-plugin-api-limit-account-based</artifactId>
<version>${project.version}</version>
</dependency>
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/client/tomcatconf/applicationContext.xml.in
----------------------------------------------------------------------
diff --cc client/tomcatconf/applicationContext.xml.in
index 92fdf4f,049e483..0193642
--- a/client/tomcatconf/applicationContext.xml.in
+++ b/client/tomcatconf/applicationContext.xml.in
@@@ -156,9 -156,17 +156,17 @@@
<entry key="cache.size" value="100" />
<entry key="cache.time.to.live" value="600" />
</map>
- </property>
+ </property>
</bean>
+ <bean id="dedicatedResourceDaoImpl" class="com.cloud.dc.dao.DedicatedResourceDaoImpl">
+ <property name="configParams">
+ <map>
+ <entry key="cache.size" value="30" />
+ <entry key="cache.time.to.live" value="3600" />
+ </map>
+ </property>
+ </bean>
-
+
<!--
DAOs with default configuration
-->
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/client/tomcatconf/commands.properties.in
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/core/src/com/cloud/storage/template/HttpTemplateDownloader.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/developer/pom.xml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreLifeCycle.java
----------------------------------------------------------------------
diff --cc engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreLifeCycle.java
index d714df3,cb46709..bd8c6e0
--- a/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreLifeCycle.java
+++ b/engine/api/src/org/apache/cloudstack/engine/subsystem/api/storage/DataStoreLifeCycle.java
@@@ -21,15 -21,15 +21,16 @@@ package org.apache.cloudstack.engine.su
import java.util.Map;
import com.cloud.agent.api.StoragePoolInfo;
+ import com.cloud.hypervisor.Hypervisor.HypervisorType;
-
public interface DataStoreLifeCycle {
public DataStore initialize(Map<String, Object> dsInfos);
public boolean attachCluster(DataStore store, ClusterScope scope);
+
public boolean attachHost(DataStore store, HostScope scope, StoragePoolInfo existingInfo);
+
- boolean attachZone(DataStore dataStore, ZoneScope scope);
+ boolean attachZone(DataStore dataStore, ZoneScope scope, HypervisorType hypervisorType);
public boolean dettach();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java
----------------------------------------------------------------------
diff --cc engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java
index 5458de5,d436762..99b7b9c
--- a/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java
+++ b/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDao.java
@@@ -16,82 -16,71 +16,82 @@@
// under the License.
package org.apache.cloudstack.storage.datastore.db;
import java.util.List;
import java.util.Map;
-import org.apache.cloudstack.engine.subsystem.api.storage.ScopeType;
-
+ import com.cloud.hypervisor.Hypervisor.HypervisorType;
+import com.cloud.storage.ScopeType;
import com.cloud.storage.StoragePoolStatus;
import com.cloud.utils.db.GenericDao;
+
/**
* Data Access Object for storage_pool table
*/
public interface PrimaryDataStoreDao extends GenericDao<StoragePoolVO, Long> {
- /**
- * @param datacenterId -- the id of the datacenter (availability zone)
- */
- List<StoragePoolVO> listByDataCenterId(long datacenterId);
-
- /**
- * @param datacenterId -- the id of the datacenter (availability zone)
- */
- List<StoragePoolVO> listBy(long datacenterId, long podId, Long clusterId, ScopeType scope);
-
- /**
- * Set capacity of storage pool in bytes
- * @param id pool id.
- * @param capacity capacity in bytes
- */
+ /**
+ * @param datacenterId
+ * -- the id of the datacenter (availability zone)
+ */
+ List<StoragePoolVO> listByDataCenterId(long datacenterId);
+
+ /**
+ * @param datacenterId
+ * -- the id of the datacenter (availability zone)
+ */
+ List<StoragePoolVO> listBy(long datacenterId, long podId, Long clusterId, ScopeType scope);
+
+ /**
+ * Set capacity of storage pool in bytes
- *
++ *
+ * @param id
+ * pool id.
+ * @param capacity
+ * capacity in bytes
+ */
void updateCapacity(long id, long capacity);
-
- /**
- * Set available bytes of storage pool in bytes
- * @param id pool id.
- * @param available available capacity in bytes
- */
+
+ /**
+ * Set available bytes of storage pool in bytes
- *
++ *
+ * @param id
+ * pool id.
+ * @param available
+ * available capacity in bytes
+ */
void updateAvailable(long id, long available);
-
-
+
StoragePoolVO persist(StoragePoolVO pool, Map<String, String> details);
-
+
/**
* Find pool by name.
-- *
- * @param name name of pool.
- * @return the single StoragePoolVO
++ *
+ * @param name
+ * name of pool.
+ * @return the single StoragePoolVO
*/
List<StoragePoolVO> findPoolByName(String name);
-
+
/**
* Find pools by the pod that matches the details.
-- *
- * @param podId pod id to find the pools in.
- * @param details details to match. All must match for the pool to be returned.
++ *
+ * @param podId
+ * pod id to find the pools in.
+ * @param details
+ * details to match. All must match for the pool to be returned.
* @return List of StoragePoolVO
*/
- List<StoragePoolVO> findPoolsByDetails(long dcId, long podId, Long clusterId, Map<String, String> details, ScopeType scope);
-
+ List<StoragePoolVO> findPoolsByDetails(long dcId, long podId, Long clusterId, Map<String, String> details,
+ ScopeType scope);
+
List<StoragePoolVO> findPoolsByTags(long dcId, long podId, Long clusterId, String[] tags);
-
+
/**
* Find pool by UUID.
-- *
- * @param uuid uuid of pool.
- * @return the single StoragePoolVO
++ *
+ * @param uuid
+ * uuid of pool.
+ * @return the single StoragePoolVO
*/
StoragePoolVO findPoolByUUID(String uuid);
@@@ -113,11 -102,14 +113,13 @@@
long countPoolsByStatus(StoragePoolStatus... statuses);
- List<StoragePoolVO> listByStatusInZone(long dcId, StoragePoolStatus status);
-
+ List<StoragePoolVO> listByStatusInZone(long dcId, StoragePoolStatus status);
+
List<StoragePoolVO> listPoolsByCluster(long clusterId);
- List<StoragePoolVO> findLocalStoragePoolsByTags(long dcId, long podId,
- Long clusterId, String[] tags);
+ List<StoragePoolVO> findLocalStoragePoolsByTags(long dcId, long podId, Long clusterId, String[] tags);
- List<StoragePoolVO> findZoneWideStoragePoolsByTags(long dcId, String[] tags);
+ List<StoragePoolVO> findZoneWideStoragePoolsByTags(long dcId, String[] tags);
+
+ List<StoragePoolVO> findZoneWideStoragePoolsByHypervisor(long dataCenterId, HypervisorType hypervisorType);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
----------------------------------------------------------------------
diff --cc engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
index 5d6e2cf,d461d58..0808287
--- a/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
+++ b/engine/api/src/org/apache/cloudstack/storage/datastore/db/PrimaryDataStoreDaoImpl.java
@@@ -31,8 -31,9 +31,9 @@@ import javax.naming.ConfigurationExcept
import org.springframework.stereotype.Component;
import com.cloud.host.Status;
+ import com.cloud.hypervisor.Hypervisor.HypervisorType;
+import com.cloud.storage.ScopeType;
import com.cloud.storage.StoragePoolStatus;
import com.cloud.utils.db.DB;
@@@ -420,7 -425,17 +421,17 @@@ public class PrimaryDataStoreDaoImpl ex
public List<StoragePoolVO> listPoolsByCluster(long clusterId) {
SearchCriteria<StoragePoolVO> sc = AllFieldSearch.create();
sc.setParameters("clusterId", clusterId);
-
+
return listBy(sc);
}
+
+ @Override
+ public List<StoragePoolVO> findZoneWideStoragePoolsByHypervisor(long dataCenterId, HypervisorType hypervisorType) {
+ SearchCriteriaService<StoragePoolVO, StoragePoolVO> sc = SearchCriteria2.create(StoragePoolVO.class);
+ sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dataCenterId);
+ sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up);
+ sc.addAnd(sc.getEntity().getScope(), Op.EQ, ScopeType.ZONE);
+ sc.addAnd(sc.getEntity().getHypervisor(), Op.EQ, hypervisorType);
+ return sc.list();
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/engine/api/src/org/apache/cloudstack/storage/datastore/db/StoragePoolVO.java
----------------------------------------------------------------------
diff --cc engine/api/src/org/apache/cloudstack/storage/datastore/db/StoragePoolVO.java
index 78a5779,0262f65..a991924
--- a/engine/api/src/org/apache/cloudstack/storage/datastore/db/StoragePoolVO.java
+++ b/engine/api/src/org/apache/cloudstack/storage/datastore/db/StoragePoolVO.java
@@@ -29,8 -29,10 +29,9 @@@ import javax.persistence.TableGenerator
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
-import org.apache.cloudstack.engine.subsystem.api.storage.ScopeType;
-
+ import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.storage.Storage.StoragePoolType;
+import com.cloud.storage.ScopeType;
import com.cloud.storage.StoragePool;
import com.cloud.storage.StoragePoolStatus;
import com.cloud.utils.db.GenericDao;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
----------------------------------------------------------------------
diff --cc engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
index 2e9f47f,d8f90ad..1919486
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
@@@ -75,15 -79,243 +79,243 @@@ public class Upgrade410to420 implement
updateNetworkACLs(conn);
addHostDetailsIndex(conn);
updateNetworksForPrivateGateways(conn);
+ correctExternalNetworkDevicesSetup(conn);
removeFirewallServiceFromSharedNetworkOfferingWithSGService(conn);
+ fix22xKVMSnapshots(conn);
+ addIndexForAlert(conn);
+ }
+
+ private void addIndexForAlert(Connection conn) {
+
+ //First drop if it exists. (Due to patches shipped to customers some will have the index and some wont.)
+ List<String> indexList = new ArrayList<String>();
+ s_logger.debug("Dropping index i_alert__last_sent if it exists");
+ indexList.add("i_alert__last_sent");
+ DbUpgradeUtils.dropKeysIfExist(conn, "alert", indexList, false);
+
+ //Now add index.
+ PreparedStatement pstmt = null;
+ try {
+ pstmt = conn.prepareStatement("ALTER TABLE `cloud`.`alert` ADD INDEX `i_alert__last_sent`(`last_sent`)");
+ pstmt.executeUpdate();
+ s_logger.debug("Added index i_alert__last_sent for table alert");
+ } catch (SQLException e) {
+ throw new CloudRuntimeException("Unable to add index i_alert__last_sent to alert table for the column last_sent", e);
+ } finally {
+ try {
+ if (pstmt != null) {
+ pstmt.close();
+ }
+ } catch (SQLException e) {
+ }
+ }
+
}
- private void updateSystemVmTemplates(Connection conn) {
-
+ private void updateSystemVmTemplates(Connection conn) {
- /* TODO: where should be system vm templates located?
- PreparedStatement sql = null;
++ // TODO: system vm template migration after storage refactoring
+ PreparedStatement pstmt = null;
+ ResultSet rs = null;
+ boolean xenserver = false;
+ boolean kvm = false;
+ boolean VMware = false;
+ boolean Hyperv = false;
+ boolean LXC = false;
+ s_logger.debug("Updating System Vm template IDs");
+ try{
+ //Get all hypervisors in use
- try {
+ try {
- sql = conn.prepareStatement("update vm_template set image_data_store_id = 1 where type = 'SYSTEM' or type = 'BUILTIN'");
- sql.executeUpdate();
+ pstmt = conn.prepareStatement("select distinct(hypervisor_type) from `cloud`.`cluster` where removed is null");
+ rs = pstmt.executeQuery();
+ while(rs.next()){
+ if("XenServer".equals(rs.getString(1))){
+ xenserver = true;
+ } else if("KVM".equals(rs.getString(1))){
+ kvm = true;
+ } else if("VMware".equals(rs.getString(1))){
+ VMware = true;
+ } else if("Hyperv".equals(rs.getString(1))) {
+ Hyperv = true;
+ } else if("LXC".equals(rs.getString(1))) {
+ LXC = true;
+ }
+ }
+ } catch (SQLException e) {
+ throw new CloudRuntimeException("Error while listing hypervisors in use", e);
+ }
+
+ s_logger.debug("Updating XenSever System Vms");
+ //XenServer
+ try {
+ //Get 4.2.0 xenserer system Vm template Id
+ pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where name like 'systemvm-xenserver-4.2' and removed is null order by id desc limit 1");
+ rs = pstmt.executeQuery();
+ if(rs.next()){
+ long templateId = rs.getLong(1);
+ rs.close();
+ pstmt.close();
+ // change template type to SYSTEM
+ pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM' where id = ?");
+ pstmt.setLong(1, templateId);
+ pstmt.executeUpdate();
+ pstmt.close();
+ // update templete ID of system Vms
+ pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id = ? where type <> 'User' and hypervisor_type = 'XenServer'");
+ pstmt.setLong(1, templateId);
+ pstmt.executeUpdate();
+ pstmt.close();
+ } else {
+ if (xenserver){
+ throw new CloudRuntimeException("4.2.0 XenServer SystemVm template not found. Cannot upgrade system Vms");
+ } else {
+ s_logger.warn("4.2.0 XenServer SystemVm template not found. XenServer hypervisor is not used, so not failing upgrade");
+ }
+ }
+ } catch (SQLException e) {
+ throw new CloudRuntimeException("Error while updating XenServer systemVm template", e);
+ }
+
+ //KVM
+ s_logger.debug("Updating KVM System Vms");
+ try {
+ //Get 4.2.0 KVM system Vm template Id
+ pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where name = 'systemvm-kvm-4.2' and removed is null order by id desc limit 1");
+ rs = pstmt.executeQuery();
+ if(rs.next()){
+ long templateId = rs.getLong(1);
+ rs.close();
+ pstmt.close();
+ // change template type to SYSTEM
+ pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM' where id = ?");
+ pstmt.setLong(1, templateId);
+ pstmt.executeUpdate();
+ pstmt.close();
+ // update templete ID of system Vms
+ pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id = ? where type <> 'User' and hypervisor_type = 'KVM'");
+ pstmt.setLong(1, templateId);
+ pstmt.executeUpdate();
+ pstmt.close();
+ } else {
+ if (kvm){
+ throw new CloudRuntimeException("4.2.0 KVM SystemVm template not found. Cannot upgrade system Vms");
+ } else {
+ s_logger.warn("4.2.0 KVM SystemVm template not found. KVM hypervisor is not used, so not failing upgrade");
+ }
+ }
+ } catch (SQLException e) {
+ throw new CloudRuntimeException("Error while updating KVM systemVm template", e);
+ }
+
+ //VMware
+ s_logger.debug("Updating VMware System Vms");
+ try {
+ //Get 4.2.0 VMware system Vm template Id
+ pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where name = 'systemvm-vmware-4.2' and removed is null order by id desc limit 1");
+ rs = pstmt.executeQuery();
+ if(rs.next()){
+ long templateId = rs.getLong(1);
+ rs.close();
+ pstmt.close();
+ // change template type to SYSTEM
+ pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM' where id = ?");
+ pstmt.setLong(1, templateId);
+ pstmt.executeUpdate();
+ pstmt.close();
+ // update templete ID of system Vms
+ pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id = ? where type <> 'User' and hypervisor_type = 'VMware'");
+ pstmt.setLong(1, templateId);
+ pstmt.executeUpdate();
+ pstmt.close();
+ } else {
+ if (VMware){
+ throw new CloudRuntimeException("4.2.0 VMware SystemVm template not found. Cannot upgrade system Vms");
+ } else {
+ s_logger.warn("4.2.0 VMware SystemVm template not found. VMware hypervisor is not used, so not failing upgrade");
+ }
+ }
+ } catch (SQLException e) {
+ throw new CloudRuntimeException("Error while updating VMware systemVm template", e);
+ }
+
+ //Hyperv
+ s_logger.debug("Updating Hyperv System Vms");
+ try {
+ //Get 4.2.0 Hyperv system Vm template Id
+ pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where name = 'systemvm-hyperv-4.2' and removed is null order by id desc limit 1");
+ rs = pstmt.executeQuery();
+ if(rs.next()){
+ long templateId = rs.getLong(1);
+ rs.close();
+ pstmt.close();
+ // change template type to SYSTEM
+ pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM' where id = ?");
+ pstmt.setLong(1, templateId);
+ pstmt.executeUpdate();
+ pstmt.close();
+ // update templete ID of system Vms
+ pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id = ? where type <> 'User' and hypervisor_type = 'Hyperv'");
+ pstmt.setLong(1, templateId);
+ pstmt.executeUpdate();
+ pstmt.close();
+ } else {
+ if (Hyperv){
+ throw new CloudRuntimeException("4.2.0 HyperV SystemVm template not found. Cannot upgrade system Vms");
+ } else {
+ s_logger.warn("4.2.0 Hyperv SystemVm template not found. Hyperv hypervisor is not used, so not failing upgrade");
+ }
+ }
+ } catch (SQLException e) {
+ throw new CloudRuntimeException("Error while updating Hyperv systemVm template", e);
+ }
+
+ //LXC
+ s_logger.debug("Updating LXC System Vms");
+ try {
+ //Get 4.2.0 LXC system Vm template Id
+ pstmt = conn.prepareStatement("select id from `cloud`.`vm_template` where name = 'systemvm-lxc-4.2' and removed is null order by id desc limit 1");
+ rs = pstmt.executeQuery();
+ if(rs.next()){
+ long templateId = rs.getLong(1);
+ rs.close();
+ pstmt.close();
+ // change template type to SYSTEM
+ pstmt = conn.prepareStatement("update `cloud`.`vm_template` set type='SYSTEM' where id = ?");
+ pstmt.setLong(1, templateId);
+ pstmt.executeUpdate();
+ pstmt.close();
+ // update templete ID of system Vms
+ pstmt = conn.prepareStatement("update `cloud`.`vm_instance` set vm_template_id = ? where type <> 'User' and hypervisor_type = 'LXC'");
+ pstmt.setLong(1, templateId);
+ pstmt.executeUpdate();
+ pstmt.close();
+ } else {
+ if (LXC){
+ throw new CloudRuntimeException("4.2.0 LXC SystemVm template not found. Cannot upgrade system Vms");
+ } else {
+ s_logger.warn("4.2.0 LXC SystemVm template not found. LXC hypervisor is not used, so not failing upgrade");
+ }
+ }
+ } catch (SQLException e) {
+ throw new CloudRuntimeException("Error while updating LXC systemVm template", e);
+ }
+ s_logger.debug("Updating System Vm Template IDs Complete");
+ }
+ finally {
+ try {
+ if (rs != null) {
+ rs.close();
+ }
+
+ if (pstmt != null) {
+ pstmt.close();
+ }
+ } catch (SQLException e) {
+ }
+ }
+ pstmt = null;
+ try {
+ pstmt = conn.prepareStatement("update vm_template set image_data_store_id = 1 where type = 'SYSTEM' or type = 'BUILTIN'");
+ pstmt.executeUpdate();
} catch (SQLException e) {
throw new CloudRuntimeException("Failed to upgrade vm template data store uuid: " + e.toString());
} finally {
@@@ -94,7 -326,6 +326,7 @@@
}
}
}
- */
++
}
private void updatePrimaryStore(Connection conn) {
@@@ -725,8 -1130,8 +1131,8 @@@
}
}
}
--
--
++
++
private void updateNetworksForPrivateGateways(Connection conn) {
PreparedStatement pstmt = null;
@@@ -744,7 -1149,7 +1150,7 @@@
pstmt.setLong(1, vpcId);
pstmt.setLong(2, networkId);
pstmt.executeUpdate();
--
++
}
} catch (SQLException e) {
throw new CloudRuntimeException("Failed to update private networks with VPC id.", e);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/engine/storage/src/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
----------------------------------------------------------------------
diff --cc engine/storage/src/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
index 010e468,5326701..e16703e
--- a/engine/storage/src/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
@@@ -132,72 -119,66 +132,73 @@@ public abstract class AbstractStoragePo
poolMap.put(pool.getId(), pool);
}
List<Long> matchingPoolIds = new ArrayList<Long>(poolMap.keySet());
-
+
poolIdsByVolCount.retainAll(matchingPoolIds);
-
+
List<StoragePool> reorderedPools = new ArrayList<StoragePool>();
- for(Long id: poolIdsByVolCount){
+ for (Long id : poolIdsByVolCount) {
reorderedPools.add(poolMap.get(id));
}
-
+
return reorderedPools;
}
-
- protected List<StoragePool> reOrder(List<StoragePool> pools,
- VirtualMachineProfile<? extends VirtualMachine> vmProfile,
- DeploymentPlan plan) {
- Account account = null;
- if(vmProfile.getVirtualMachine() != null){
- account = vmProfile.getOwner();
- }
-
- if(_allocationAlgorithm.equals("random") || _allocationAlgorithm.equals("userconcentratedpod_random") || (account == null)) {
- // Shuffle this so that we don't check the pools in the same order.
- Collections.shuffle(pools);
- }else if(_allocationAlgorithm.equals("userdispersing")){
- pools = reorderPoolsByNumberOfVolumes(plan, pools, account);
- }
- return pools;
+
+ protected List<StoragePool> reOrder(List<StoragePool> pools,
+ VirtualMachineProfile<? extends VirtualMachine> vmProfile, DeploymentPlan plan) {
+ Account account = null;
+ if (vmProfile.getVirtualMachine() != null) {
+ account = vmProfile.getOwner();
+ }
+
+ if (_allocationAlgorithm.equals("random") || _allocationAlgorithm.equals("userconcentratedpod_random")
+ || (account == null)) {
+ // Shuffle this so that we don't check the pools in the same order.
+ Collections.shuffle(pools);
+ } else if (_allocationAlgorithm.equals("userdispersing")) {
+ pools = reorderPoolsByNumberOfVolumes(plan, pools, account);
+ }
+ return pools;
}
-
- protected boolean filter(ExcludeList avoid, StoragePool pool, DiskProfile dskCh,
- DeploymentPlan plan) {
-
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Checking if storage pool is suitable, name: " + pool.getName()+ " ,poolId: "+ pool.getId());
+
+ protected boolean filter(ExcludeList avoid, StoragePool pool, DiskProfile dskCh, DeploymentPlan plan) {
+
+ if (s_logger.isDebugEnabled()) {
+ s_logger.debug("Checking if storage pool is suitable, name: " + pool.getName() + " ,poolId: "
+ + pool.getId());
}
- if (avoid.shouldAvoid(pool)) {
- if (s_logger.isDebugEnabled()) {
+ if (avoid.shouldAvoid(pool)) {
+ if (s_logger.isDebugEnabled()) {
s_logger.debug("StoragePool is in avoid set, skipping this pool");
- }
- return false;
- }
-
- if(dskCh.getType().equals(Type.ROOT) && pool.getPoolType().equals(StoragePoolType.Iscsi)){
- if (s_logger.isDebugEnabled()) {
+ }
+ return false;
+ }
+
+ if (dskCh.getType().equals(Type.ROOT) && pool.getPoolType().equals(StoragePoolType.Iscsi)) {
+ if (s_logger.isDebugEnabled()) {
s_logger.debug("Disk needed for ROOT volume, but StoragePoolType is Iscsi, skipping this and trying other available pools");
- }
+ }
+ return false;
+ }
+
++
+ DiskOfferingVO diskOffering = _diskOfferingDao.findById(dskCh.getDiskOfferingId());
+ if (diskOffering.getSystemUse() && pool.getPoolType() == StoragePoolType.RBD) {
+ s_logger.debug("Skipping RBD pool " + pool.getName()
+ + " as a suitable pool. RBD is not supported for System VM's");
return false;
}
-
-
- Long clusterId = pool.getClusterId();
- ClusterVO cluster = _clusterDao.findById(clusterId);
- if (!(cluster.getHypervisorType() == dskCh.getHypervisorType())) {
- if (s_logger.isDebugEnabled()) {
+
+ Long clusterId = pool.getClusterId();
+ ClusterVO cluster = _clusterDao.findById(clusterId);
+ if (!(cluster.getHypervisorType() == dskCh.getHypervisorType())) {
+ if (s_logger.isDebugEnabled()) {
s_logger.debug("StoragePool's Cluster does not have required hypervisorType, skipping this pool");
}
- return false;
- }
+ return false;
+ }
- // check capacity
- Volume volume = _volumeDao.findById(dskCh.getVolumeId());
+ // check capacity
+ Volume volume = _volumeDao.findById(dskCh.getVolumeId());
List<Volume> requestVolumes = new ArrayList<Volume>();
requestVolumes.add(volume);
return storageMgr.storagePoolHasEnoughSpace(requestVolumes, pool);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/engine/storage/src/org/apache/cloudstack/storage/allocator/ZoneWideStoragePoolAllocator.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java
----------------------------------------------------------------------
diff --cc engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java
index 501f044,349f6ba..70e5a5a
--- a/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/volume/datastore/PrimaryDataStoreHelper.java
@@@ -36,8 -38,7 +36,9 @@@ import com.cloud.agent.api.StoragePoolI
import com.cloud.capacity.Capacity;
import com.cloud.capacity.CapacityVO;
import com.cloud.capacity.dao.CapacityDao;
+import com.cloud.storage.DataStoreRole;
+import com.cloud.storage.ScopeType;
+ import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.storage.StorageManager;
import com.cloud.storage.StoragePoolHostVO;
import com.cloud.storage.StoragePoolStatus;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --cc plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 4f90c44,bab53bc..60d2aeb
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@@ -56,15 -56,14 +56,16 @@@ import java.util.regex.Pattern
import javax.ejb.Local;
import javax.naming.ConfigurationException;
-import org.apache.log4j.Logger;
-import org.apache.cloudstack.utils.qemu.QemuImg.PhysicalDiskFormat;
+import org.apache.cloudstack.storage.command.StorageSubSystemCommand;
+import org.apache.cloudstack.storage.to.PrimaryDataStoreTO;
import org.apache.cloudstack.utils.qemu.QemuImg;
-import org.apache.cloudstack.utils.qemu.QemuImgFile;
+import org.apache.cloudstack.utils.qemu.QemuImg.PhysicalDiskFormat;
import org.apache.cloudstack.utils.qemu.QemuImgException;
+import org.apache.cloudstack.utils.qemu.QemuImgFile;
+import org.apache.log4j.Logger;
import org.libvirt.Connect;
import org.libvirt.Domain;
+ import org.libvirt.DomainBlockStats;
import org.libvirt.DomainInfo;
import org.libvirt.DomainInterfaceStats;
import org.libvirt.DomainSnapshot;
@@@ -3866,19 -3987,23 +3917,23 @@@ ServerResource
final HashMap<String, State> vmStates = new HashMap<String, State>();
Connect conn = null;
+ if (_hypervisorType == HypervisorType.LXC) {
- try {
- conn = LibvirtConnection.getConnectionByType(HypervisorType.LXC.toString());
- vmStates.putAll(getAllVms(conn));
- } catch (LibvirtException e) {
- s_logger.debug("Failed to get connection: " + e.getMessage());
- }
+ try {
+ conn = LibvirtConnection.getConnectionByType(HypervisorType.LXC.toString());
+ vmStates.putAll(getAllVms(conn));
+ } catch (LibvirtException e) {
+ s_logger.debug("Failed to get connection: " + e.getMessage());
+ }
+ }
+ if (_hypervisorType == HypervisorType.KVM) {
- try {
- conn = LibvirtConnection.getConnectionByType(HypervisorType.KVM.toString());
- vmStates.putAll(getAllVms(conn));
- } catch (LibvirtException e) {
- s_logger.debug("Failed to get connection: " + e.getMessage());
- }
+ try {
+ conn = LibvirtConnection.getConnectionByType(HypervisorType.KVM.toString());
+ vmStates.putAll(getAllVms(conn));
+ } catch (LibvirtException e) {
+ s_logger.debug("Failed to get connection: " + e.getMessage());
+ }
+ }
return vmStates;
}
@@@ -4391,8 -4523,71 +4446,40 @@@
return command.execute();
}
- private String executeBashScript(String script, OutputInterpreter parser) {
- Script command = new Script("/bin/bash", _timeout, s_logger);
- command.add("-c");
- command.add(script);
- return command.execute(parser);
- }
- private void deletExitingLinkLocalRoutTable(String linkLocalBr) {
- Script command = new Script("/bin/bash", _timeout);
- command.add("-c");
- command.add("ip route | grep " + NetUtils.getLinkLocalCIDR());
- OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser();
- String result = command.execute(parser);
- boolean foundLinkLocalBr = false;
- if (result == null && parser.getLines() != null) {
- String[] lines = parser.getLines().split("\\n");
- for (String line : lines) {
- String[] tokens = line.split(" ");
- if (!tokens[2].equalsIgnoreCase(linkLocalBr)) {
- Script.runSimpleBashScript("ip route del "
- + NetUtils.getLinkLocalCIDR());
- } else {
- foundLinkLocalBr = true;
- }
- }
- }
- if (!foundLinkLocalBr) {
- Script.runSimpleBashScript("ip route add "
- + NetUtils.getLinkLocalCIDR() + " dev " + linkLocalBr
- + " src " + NetUtils.getLinkLocalGateway());
- }
- }
+ private List<VmDiskStatsEntry> getVmDiskStat(Connect conn, String vmName)
+ throws LibvirtException {
+ Domain dm = null;
+ try {
+ dm = getDomain(conn, vmName);
+
+ List<VmDiskStatsEntry> stats = new ArrayList<VmDiskStatsEntry>();
+
+ List<DiskDef> disks = getDisks(conn, vmName);
+
+ for (DiskDef disk : disks) {
+ DomainBlockStats blockStats = dm.blockStats(disk.getDiskLabel());
+ String path = disk.getDiskPath(); // for example, path = /mnt/pool_uuid/disk_path/
+ String diskPath = null;
+ if (path != null) {
+ String[] token = path.split("/");
+ if (token.length > 3) {
+ diskPath = token[3];
+ VmDiskStatsEntry stat = new VmDiskStatsEntry(vmName, diskPath, blockStats.wr_req, blockStats.rd_req, blockStats.wr_bytes, blockStats.rd_bytes);
+ stats.add(stat);
+ }
+ }
+ }
+
+ return stats;
+ } finally {
+ if (dm != null) {
+ dm.free();
+ }
+ }
+ }
+
private class vmStats {
long _usedTime;
long _tx;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java
----------------------------------------------------------------------
diff --cc plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java
index 5ddf60a,1f1f4c5..c13d37e
--- a/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/agent/manager/SimulatorManagerImpl.java
@@@ -46,8 -33,11 +47,10 @@@ import com.cloud.agent.api.ComputeCheck
import com.cloud.agent.api.CreatePrivateTemplateFromSnapshotCommand;
import com.cloud.agent.api.CreatePrivateTemplateFromVolumeCommand;
import com.cloud.agent.api.CreateStoragePoolCommand;
+ import com.cloud.agent.api.CreateVMSnapshotCommand;
import com.cloud.agent.api.CreateVolumeFromSnapshotCommand;
-import com.cloud.agent.api.DeleteSnapshotBackupCommand;
import com.cloud.agent.api.DeleteStoragePoolCommand;
+ import com.cloud.agent.api.DeleteVMSnapshotCommand;
import com.cloud.agent.api.GetDomRVersionCmd;
import com.cloud.agent.api.GetHostStatsCommand;
import com.cloud.agent.api.GetStorageStatsCommand;
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/18aeef3e/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
----------------------------------------------------------------------
diff --cc plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
index edd26a3,a604392..68acd9e
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
@@@ -35,8 -36,8 +36,10 @@@ import javax.ejb.Local
import javax.inject.Inject;
import javax.naming.ConfigurationException;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
+import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
+ import org.apache.cloudstack.api.command.admin.zone.AddVmwareDcCmd;
+ import org.apache.cloudstack.api.command.admin.zone.RemoveVmwareDcCmd;
import org.apache.log4j.Logger;
import com.cloud.agent.AgentManager;
@@@ -53,11 -54,15 +56,15 @@@ import com.cloud.configuration.dao.Conf
import com.cloud.dc.ClusterDetailsDao;
import com.cloud.dc.ClusterVO;
import com.cloud.dc.ClusterVSMMapVO;
+ import com.cloud.dc.DataCenterVO;
import com.cloud.dc.dao.ClusterDao;
import com.cloud.dc.dao.ClusterVSMMapDao;
+ import com.cloud.dc.dao.DataCenterDao;
import com.cloud.exception.DiscoveredWithErrorException;
+import com.cloud.host.Host;
- import com.cloud.host.HostVO;
+ import com.cloud.exception.DiscoveryException;
+ import com.cloud.exception.InvalidParameterValueException;
+ import com.cloud.exception.ResourceInUseException;
-import com.cloud.host.HostVO;
import com.cloud.host.Status;
import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
@@@ -98,12 -113,11 +115,11 @@@ import com.cloud.vm.DomainRouterVO
import com.google.gson.Gson;
import com.vmware.vim25.AboutInfo;
import com.vmware.vim25.HostConnectSpec;
--import com.vmware.vim25.ManagedObjectReference;
- import org.apache.cloudstack.engine.subsystem.api.storage.ZoneScope;;
++import com.vmware.vim25.ManagedObjectReference;;
- @Local(value = {VmwareManager.class})
- public class VmwareManagerImpl extends ManagerBase implements VmwareManager, VmwareStorageMount, Listener {
+ @Local(value = {VmwareManager.class, VmwareDatacenterService.class})
+ public class VmwareManagerImpl extends ManagerBase implements VmwareManager, VmwareStorageMount, Listener, VmwareDatacenterService {
private static final Logger s_logger = Logger.getLogger(VmwareManagerImpl.class);
private static final int STARTUP_DELAY = 60000; // 60 seconds