Merge branch 'master' into cisco-vnmc-api-integration Conflicts: api/src/org/apache/cloudstack/api/ApiConstants.java client/tomcatconf/commands.properties.in setup/db/db/schema-410to420.sql tools/marvin/marvin/integration/lib/base.py
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0232048f Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0232048f Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0232048f Branch: refs/heads/cisco-vnmc-api-integration Commit: 0232048f904b850700899d65ded089d8d7e7ab83 Parents: 735c4c8 97911e9 Author: Koushik Das <koushik....@citrix.com> Authored: Mon Apr 15 17:05:59 2013 +0530 Committer: Koushik Das <koushik....@citrix.com> Committed: Mon Apr 15 17:05:59 2013 +0530 ---------------------------------------------------------------------- DISCLAIMER | 7 - agent/src/com/cloud/agent/AgentShell.java | 3 +- .../consoleproxy/ConsoleProxyResource.java | 4 +- api/src/com/cloud/agent/api/to/FirewallRuleTO.java | 6 + .../api/commands/CreatePrivateNetworkCmd.java | 197 - .../cloud/api/commands/DestroyConsoleProxyCmd.java | 93 - api/src/com/cloud/async/AsyncJob.java | 3 +- .../cloud/configuration/ConfigurationService.java | 6 + .../cloud/consoleproxy/ConsoleProxyService.java | 23 - api/src/com/cloud/event/EventTypes.java | 15 +- .../cloud/exception/AffinityConflictException.java | 34 + api/src/com/cloud/network/NetworkService.java | 2 +- api/src/com/cloud/offering/NetworkOffering.java | 1 + api/src/com/cloud/server/ManagementService.java | 4 +- api/src/com/cloud/vm/DiskProfile.java | 2 +- api/src/com/cloud/vm/UserVmService.java | 183 +- .../apache/cloudstack/affinity/AffinityGroup.java | 31 + .../affinity/AffinityGroupProcessor.java | 49 + .../cloudstack/affinity/AffinityGroupResponse.java | 155 + .../cloudstack/affinity/AffinityGroupService.java | 79 + .../affinity/AffinityGroupTypeResponse.java | 48 + .../cloudstack/affinity/AffinityProcessorBase.java | 44 + .../org/apache/cloudstack/api/ApiConstants.java | 6 +- api/src/org/apache/cloudstack/api/BaseCmd.java | 10 +- .../apache/cloudstack/api/ResponseGenerator.java | 18 +- .../command/admin/cluster/UpdateClusterCmd.java | 15 +- .../admin/config/ListDeploymentPlannersCmd.java | 71 + .../admin/offering/CreateServiceOfferingCmd.java | 7 + .../admin/vlan/DedicatePublicIpRangeCmd.java | 108 + .../admin/vlan/ReleasePublicIpRangeCmd.java | 77 + .../command/user/address/AssociateIPAddrCmd.java | 31 +- .../user/affinitygroup/CreateAffinityGroupCmd.java | 167 + .../user/affinitygroup/DeleteAffinityGroupCmd.java | 154 + .../affinitygroup/ListAffinityGroupTypesCmd.java | 67 + .../user/affinitygroup/ListAffinityGroupsCmd.java | 90 + .../affinitygroup/UpdateVMAffinityGroupCmd.java | 164 + .../ha/gslb/CreateGlobalLoadBalancerRuleCmd.java | 3 + .../ha/gslb/ListGlobalLoadBalancerRuleCmd.java | 2 +- .../api/command/user/vm/DeployVMCmd.java | 41 +- .../user/vmsnapshot/CreateVMSnapshotCmd.java | 2 +- .../user/vmsnapshot/DeleteVMSnapshotCmd.java | 2 +- .../command/user/vmsnapshot/ListVMSnapshotCmd.java | 2 +- .../user/vmsnapshot/RevertToSnapshotCmd.java | 2 +- .../api/response/DeploymentPlannersResponse.java | 37 + .../api/response/FirewallRuleResponse.java | 12 + .../api/response/GlobalLoadBalancerResponse.java | 8 + .../cloudstack/api/response/UserVmResponse.java | 14 + .../org/apache/cloudstack/query/QueryService.java | 4 + .../com/cloud/bridge/service/EC2RestServlet.java | 2 +- client/pom.xml | 23 +- client/tomcatconf/applicationContext.xml.in | 19 +- client/tomcatconf/commands.properties.in | 14 +- client/tomcatconf/componentContext.xml.in | 11 +- client/tomcatconf/nonossComponentContext.xml.in | 15 +- client/tomcatconf/simulatorComponentContext.xml.in | 23 +- .../cloud/hypervisor/HypervisorCapabilitiesVO.java | 13 +- .../src/com/cloud/resource/ServerResourceBase.java | 2 +- .../resource/CifsSecondaryStorageResource.java | 755 -- .../resource/LocalSecondaryStorageResource.java | 246 - .../resource/NfsSecondaryStorageResource.java | 1842 ----- .../storage/resource/SecondaryStorageResource.java | 28 - .../resource/SecondaryStorageResourceHandler.java | 24 - .../cloud/storage/template/DownloadManager.java | 103 - .../storage/template/DownloadManagerImpl.java | 1049 --- .../com/cloud/storage/template/UploadManager.java | 85 - .../cloud/storage/template/UploadManagerImpl.java | 645 -- core/src/com/cloud/vm/VmDetailConstants.java | 1 + debian/cloudstack-agent.install | 6 +- debian/cloudstack-awsapi.install | 10 +- debian/cloudstack-common.install | 8 +- debian/cloudstack-management.install | 10 +- debian/rules | 36 +- deps/install-non-oss.sh | 13 - docs/en-US/Book_Info.xml | 39 +- docs/en-US/Installation_Guide.xml | 2 + docs/en-US/Release_Notes.xml | 6030 ++++++++++++--- docs/en-US/add-clusters-vsphere.xml | 11 +- docs/en-US/added-API-commands-4.2.xml | 43 + docs/en-US/added-API-commands.xml | 2 +- docs/en-US/aws-ec2-introduction.xml | 2 +- docs/en-US/building-documentation.xml | 2 +- docs/en-US/building-marvin.xml | 2 +- docs/en-US/building-translation.xml | 2 +- ...change-console-proxy-ssl-certificate-domain.xml | 2 +- docs/en-US/citrix-xenserver-installation.xml | 2 +- docs/en-US/configure-package-repository.xml | 2 +- docs/en-US/configure-vpn.xml | 2 +- docs/en-US/console-proxy.xml | 2 +- docs/en-US/global-config.xml | 79 + docs/en-US/hypervisor-host-install-firewall.xml | 4 +- docs/en-US/hypervisor-host-install-libvirt.xml | 2 +- ...hypervisor-host-install-network-openvswitch.xml | 2 +- docs/en-US/hypervisor-host-install-network.xml | 12 +- docs/en-US/hypervisor-installation.xml | 1 + docs/en-US/hypervisor-kvm-install-flow.xml | 1 + docs/en-US/lxc-install.xml | 110 + docs/en-US/lxc-topology-req.xml | 24 + .../en-US/management-server-install-prepare-os.xml | 2 +- docs/en-US/management-server-install-systemvm.xml | 4 + docs/en-US/management-server-lb.xml | 2 +- docs/en-US/minimum-system-requirements.xml | 3 +- docs/en-US/multiple-ip-nic.xml | 91 + docs/en-US/networks.xml | 1 + docs/en-US/prepare-system-vm-template.xml | 4 + docs/en-US/topology-req.xml | 3 +- docs/en-US/translating-documentation.xml | 2 +- docs/en-US/using-sshkeys.xml | 2 +- docs/en-US/vmware-cluster-config-dvswitch.xml | 35 +- docs/en-US/vmware-install.xml | 4 +- docs/en-US/vmware-requirements.xml | 2 +- docs/en-US/whats-new.xml | 6 +- docs/en-US/writing-new-documentation.xml | 4 +- docs/publican-cloudstack/defaults.cfg | 4 +- .../subsystem/api/storage/CommandResult.java | 2 +- .../api/storage/ObjectInDataStoreStateMachine.java | 2 +- .../cloud/entity/api/VMEntityManagerImpl.java | 84 +- .../platform/orchestration/CloudOrchestrator.java | 63 +- .../image/motion/DefaultImageMotionStrategy.java | 4 +- .../cloudstack/storage/test/DirectAgentTest.java | 4 +- .../test/MockHypervisorHostEndPointRpcServer.java | 72 + .../test/MockHypervsiorHostEndPointRpcServer.java | 72 - .../integration-test/test/resource/component.xml | 2 +- .../storage/HypervisorHostEndPointRpcServer.java | 119 + .../storage/HypervsiorHostEndPointRpcServer.java | 119 - .../allocator/AbstractStoragePoolAllocator.java | 2 +- .../allocator/ZoneWideStoragePoolAllocator.java | 2 +- .../command/CreateVolumeFromBaseImageCommand.java | 6 +- .../storage/datastore/DataObjectManagerImpl.java | 6 +- .../provider/DataStoreProviderManagerImpl.java | 4 +- .../storage/to/ImageOnPrimaryDataStoreTO.java | 44 + .../storage/to/ImageOnPrimayDataStoreTO.java | 44 - .../driver/DefaultPrimaryDataStoreDriverImpl.java | 4 +- .../DefaultPrimaryDatastoreProviderImpl.java | 6 +- .../volume/TemplateInstallStrategyImpl.java | 6 +- .../debian/config/etc/init.d/cloud-early-config | 56 +- .../host-anti-affinity/pom.xml | 33 + .../affinity/HostAntiAffinityProcessor.java | 93 + .../cloudstack/syslog/AlertsSyslogAppender.java | 4 +- plugins/hypervisors/simulator/pom.xml | 5 + .../com/cloud/resource/AgentStorageResource.java | 2 +- .../resource/SimulatorSecondaryDiscoverer.java | 3 +- plugins/hypervisors/vmware/pom.xml | 5 + .../src/com/cloud/hypervisor/guru/VMwareGuru.java | 24 +- .../hypervisor/vmware/resource/VmwareResource.java | 18 + .../resource/PremiumSecondaryStorageResource.java | 2 + .../VmwareSecondaryStorageResourceHandler.java | 1 + .../xen/resource/CitrixResourceBase.java | 2 +- .../xen/resource/XenServerStorageResource.java | 4 +- .../dns-notifier/resources/components-example.xml | 2 +- .../element/F5ExternalLoadBalancerElement.java | 15 +- .../element/JuniperSRXExternalFirewallElement.java | 60 +- .../cloud/network/resource/JuniperSrxResource.java | 322 +- plugins/network-elements/netscaler/pom.xml | 6 +- .../cloud/network/element/NetscalerElement.java | 3 +- plugins/pom.xml | 1 + .../CloudStackPrimaryDataStoreProviderImpl.java | 6 +- pom.xml | 4 + scripts/network/juniper/application-add.xml | 2 +- scripts/network/juniper/security-policy-add.xml | 4 +- scripts/vm/hypervisor/kvm/patchviasocket.pl | 2 +- scripts/vm/systemvm/injectkeys.sh | 26 +- server/pom.xml | 2 - server/src/com/cloud/api/ApiDBUtils.java | 28 +- server/src/com/cloud/api/ApiResponseHelper.java | 72 +- .../src/com/cloud/api/query/QueryManagerImpl.java | 177 +- .../com/cloud/api/query/ViewResponseHelper.java | 20 +- .../cloud/api/query/dao/AffinityGroupJoinDao.java | 37 + .../api/query/dao/AffinityGroupJoinDaoImpl.java | 142 + .../com/cloud/api/query/dao/UserVmJoinDaoImpl.java | 27 + .../cloud/api/query/vo/AffinityGroupJoinVO.java | 248 + .../src/com/cloud/api/query/vo/UserVmJoinVO.java | 37 + server/src/com/cloud/configuration/Config.java | 5 +- .../cloud/configuration/ConfigurationManager.java | 8 +- .../configuration/ConfigurationManagerImpl.java | 179 +- .../AgentBasedConsoleProxyManager.java | 184 +- .../src/com/cloud/consoleproxy/AgentHookBase.java | 266 + .../cloud/consoleproxy/ConsoleProxyManager.java | 17 +- .../consoleproxy/ConsoleProxyManagerImpl.java | 380 +- .../cloud/consoleproxy/ConsoleProxyService.java | 25 + .../consoleproxy/StaticConsoleProxyManager.java | 84 +- .../cloud/deploy/DeploymentPlanningManager.java | 45 + .../deploy/DeploymentPlanningManagerImpl.java | 96 + server/src/com/cloud/deploy/FirstFitPlanner.java | 95 +- server/src/com/cloud/domain/dao/DomainDaoImpl.java | 11 +- .../hypervisor/dao/HypervisorCapabilitiesDao.java | 2 + .../dao/HypervisorCapabilitiesDaoImpl.java | 7 + .../cloud/network/ExteralIpAddressAllocator.java | 165 - .../network/ExternalFirewallDeviceManagerImpl.java | 12 +- .../cloud/network/ExternalIpAddressAllocator.java | 165 + server/src/com/cloud/network/IpAddrAllocator.java | 2 +- .../src/com/cloud/network/NetworkManagerImpl.java | 333 +- server/src/com/cloud/network/NetworkModelImpl.java | 26 +- .../src/com/cloud/network/NetworkServiceImpl.java | 109 +- .../src/com/cloud/network/vpc/VpcManagerImpl.java | 7 +- .../com/cloud/resource/ResourceManagerImpl.java | 22 +- .../PremiumSecondaryStorageManagerImpl.java | 6 +- .../com/cloud/server/ConfigurationServerImpl.java | 22 +- .../src/com/cloud/server/ManagementServerImpl.java | 124 +- .../src/com/cloud/service/ServiceOfferingVO.java | 81 +- .../storage/download/DownloadMonitorImpl.java | 28 +- .../secondary/SecondaryStorageDiscoverer.java | 322 - .../secondary/SecondaryStorageManagerImpl.java | 10 +- .../com/cloud/template/TemplateManagerImpl.java | 2 +- .../src/com/cloud/upgrade/dao/Upgrade410to420.java | 60 + server/src/com/cloud/user/AccountManagerImpl.java | 22 +- server/src/com/cloud/vm/UserVmManagerImpl.java | 90 +- .../com/cloud/vm/VirtualMachineManagerImpl.java | 132 +- .../cloud/vm/snapshot/VMSnapshotManagerImpl.java | 13 +- .../affinity/AffinityGroupServiceImpl.java | 346 + .../cloudstack/affinity/AffinityGroupVMMapVO.java | 66 + .../cloudstack/affinity/AffinityGroupVO.java | 114 + .../cloudstack/affinity/dao/AffinityGroupDao.java | 30 + .../affinity/dao/AffinityGroupDaoImpl.java | 102 + .../affinity/dao/AffinityGroupVMMapDao.java | 47 + .../affinity/dao/AffinityGroupVMMapDaoImpl.java | 167 + .../configuration/ConfigurationManagerTest.java | 413 + .../com/cloud/network/MockNetworkManagerImpl.java | 38 +- .../test/com/cloud/vm/MockUserVmManagerImpl.java | 16 +- .../cloud/vm/snapshot/VMSnapshotManagerTest.java | 20 +- .../cloud/vpc/MockConfigurationManagerImpl.java | 25 +- .../test/com/cloud/vpc/MockNetworkManagerImpl.java | 54 +- .../affinity/AffinityApiTestConfiguration.java | 344 + .../cloudstack/affinity/AffinityApiUnitTest.java | 187 + .../networkoffering/ChildTestConfiguration.java | 7 +- .../networkoffering/CreateNetworkOfferingTest.java | 1 - server/test/resources/affinityContext.xml | 47 + server/test/resources/network-mgr-component.xml | 2 +- .../console-proxy/server/conf/agent.properties | 17 - .../server/conf/environment.properties | 2 + services/console-proxy/server/conf/log4j-cloud.xml | 2 +- services/console-proxy/server/pom.xml | 41 + services/console-proxy/server/scripts/_run.sh | 3 +- .../console-proxy/server/scripts/consoleproxy.sh | 33 + .../console-proxy/server/scripts/secstorage.sh | 33 + .../src/com/cloud/consoleproxy/ConsoleProxy.java | 16 +- services/pom.xml | 1 + services/secondary-storage/conf/agent.properties | 2 + .../secondary-storage/conf/environment.properties | 2 + services/secondary-storage/conf/log4j-cloud.xml | 102 + services/secondary-storage/pom.xml | 103 + services/secondary-storage/scripts/_run.sh | 64 + services/secondary-storage/scripts/config_auth.sh | 69 + services/secondary-storage/scripts/config_ssl.sh | 174 + services/secondary-storage/scripts/ipfirewall.sh | 50 + services/secondary-storage/scripts/run-proxy.sh | 48 + services/secondary-storage/scripts/run.bat | 18 + services/secondary-storage/scripts/run.sh | 45 + services/secondary-storage/scripts/ssvm-check.sh | 136 + .../resource/CifsSecondaryStorageResource.java | 755 ++ .../resource/LocalSecondaryStorageResource.java | 246 + .../resource/NfsSecondaryStorageResource.java | 1882 +++++ .../resource/SecondaryStorageDiscoverer.java | 320 + .../storage/resource/SecondaryStorageResource.java | 28 + .../resource/SecondaryStorageResourceHandler.java | 24 + .../storage/template/DownloadManager.java | 105 + .../storage/template/DownloadManagerImpl.java | 1074 +++ .../cloudstack/storage/template/UploadManager.java | 87 + .../storage/template/UploadManagerImpl.java | 648 ++ setup/db/db/schema-40to410.sql | 29 - setup/db/db/schema-410to420.sql | 284 +- setup/dev/basic.cfg | 6 +- setup/dev/local.cfg | 44 + test/integration/smoke/test_ScaleVm.py | 4 +- test/integration/smoke/test_affinity_groups.py | 194 + test/integration/smoke/test_public_ip_range.py | 173 + test/integration/smoke/test_volumes.py | 55 +- tools/apidoc/build-apidoc.sh | 2 +- tools/apidoc/gen_toc.py | 4 +- tools/apidoc/pom.xml | 3 +- tools/appliance/build.sh | 5 +- .../definitions/systemvmtemplate/postinstall.sh | 20 +- .../definitions/systemvmtemplate/preseed.cfg | 14 +- .../definitions/systemvmtemplate64/postinstall.sh | 20 +- .../definitions/systemvmtemplate64/preseed.cfg | 14 +- tools/build/build_docs.sh | 19 +- tools/devcloud/devcloud.cfg | 1 + tools/devcloud/pom.xml | 33 + tools/devcloud/quickcloud.cfg | 121 + tools/marvin/marvin/cloudstackConnection.py | 6 +- tools/marvin/marvin/deployDataCenter.py | 19 +- tools/marvin/marvin/integration/lib/base.py | 61 +- tools/marvin/pom.xml | 18 +- ui/index.jsp | 2 +- ui/scripts/cloudStack.js | 4 +- ui/scripts/dashboard.js | 2 +- ui/scripts/instances.js | 33 +- ui/scripts/network.js | 414 +- ui/scripts/regions.js | 169 +- ui/scripts/sharedFunctions.js | 25 + ui/scripts/system.js | 89 +- ui/scripts/ui-custom/healthCheck.js | 10 +- ui/scripts/ui-custom/regions.js | 2 +- ui/scripts/ui/widgets/listView.js | 6 +- ui/scripts/ui/widgets/multiEdit.js | 16 +- utils/src/com/cloud/utils/SerialVersionUID.java | 1 + .../cloud/utils/component/ComponentContext.java | 4 +- utils/src/com/cloud/utils/nio/NioClient.java | 3 +- utils/src/com/cloud/utils/nio/NioConnection.java | 2 +- .../vmware/util/VmwareGuestOsMapper.java | 5 + 299 files changed, 20350 insertions(+), 8696 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/api/src/org/apache/cloudstack/api/ApiConstants.java ---------------------------------------------------------------------- diff --cc api/src/org/apache/cloudstack/api/ApiConstants.java index f4bcf36,b08e992..37cb59f --- a/api/src/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/org/apache/cloudstack/api/ApiConstants.java @@@ -473,9 -473,10 +473,11 @@@ public class ApiConstants public static final String HEALTHCHECK_HEALTHY_THRESHOLD = "healthythreshold"; public static final String HEALTHCHECK_UNHEALTHY_THRESHOLD = "unhealthythreshold"; public static final String HEALTHCHECK_PINGPATH = "pingpath"; + public static final String AFFINITY_GROUP_IDS = "affinitygroupids"; + public static final String AFFINITY_GROUP_NAMES = "affinitygroupnames"; + public static final String DEPLOYMENT_PLANNER = "deploymentplanner"; + public static final String ASA_INSIDE_PORT_PROFILE = "insideportprofile"; - public enum HostDetails { all, capacity, events, stats, min; } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/client/pom.xml ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/client/tomcatconf/commands.properties.in ---------------------------------------------------------------------- diff --cc client/tomcatconf/commands.properties.in index 39ed714,798d226..10fcfe3 --- a/client/tomcatconf/commands.properties.in +++ b/client/tomcatconf/commands.properties.in @@@ -569,12 -571,9 +571,20 @@@ revertToSnapshot=1 #### Baremetal commands addBaremetalHost=1 - #### Cisco Vnmc command + #### Affinity group commands + createAffinityGroup=15 + deleteAffinityGroup=15 + listAffinityGroups=15 + updateVMAffinityGroup=15 + listAffinityGroupTypes=15 ++ ++#### Cisco Vnmc commands +addCiscoVnmcResource=1 +deleteCiscoVnmcResource=1 +listCiscoVnmcResources=1 + - #### Cisco Asa1000v command ++#### Cisco Asa1000v commands +addCiscoAsa1000vResource=1 +deleteCiscoAsa1000vResource=1 +listCiscoAsa1000vResources=1 ++ http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/client/tomcatconf/nonossComponentContext.xml.in ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java ---------------------------------------------------------------------- diff --cc plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java index dcee367,f6f0923..122ba3b --- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java +++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java @@@ -137,23 -139,11 +141,22 @@@ public class VMwareGuru extends Hypervi if (!(vm.getVirtualMachine() instanceof DomainRouterVO || vm.getVirtualMachine() instanceof ConsoleProxyVO || vm.getVirtualMachine() instanceof SecondaryStorageVmVO)){ // user vm - if (diskDeviceType != null){ - details.remove(VmDetailConstants.ROOK_DISK_CONTROLLER); + if (diskDeviceType == null){ + details.put(VmDetailConstants.ROOK_DISK_CONTROLLER, _vmwareMgr.getRootDiskController()); } - details.put(VmDetailConstants.ROOK_DISK_CONTROLLER, _vmwareMgr.getRootDiskController()); } - + + List<NicProfile> nicProfiles = vm.getNics(); + + for(NicProfile nicProfile : nicProfiles) { + if(nicProfile.getTrafficType() == TrafficType.Guest) { + if(_networkMgr.isProviderSupportServiceInNetwork(nicProfile.getNetworkId(), Service.Firewall, Provider.CiscoVnmc)) { + details.put("ConfigureVServiceInNexus", Boolean.TRUE.toString()); + } + break; + } + } + to.setDetails(details); if(vm.getVirtualMachine() instanceof DomainRouterVO) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/plugins/pom.xml ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/server/src/com/cloud/api/ApiResponseHelper.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/server/src/com/cloud/configuration/ConfigurationManagerImpl.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/setup/db/db/schema-410to420.sql ---------------------------------------------------------------------- diff --cc setup/db/db/schema-410to420.sql index dae4763,92b2d9c..fb760bf --- a/setup/db/db/schema-410to420.sql +++ b/setup/db/db/schema-410to420.sql @@@ -406,35 -438,249 +438,283 @@@ INSERT INTO `cloud`.`vm_template` (id, -- END: support for LXC + CREATE TABLE `cloud`.`vm_snapshots` ( + `id` bigint(20) unsigned NOT NULL auto_increment COMMENT 'Primary Key', + `uuid` varchar(40) NOT NULL, + `name` varchar(255) NOT NULL, + `display_name` varchar(255) default NULL, + `description` varchar(255) default NULL, + `vm_id` bigint(20) unsigned NOT NULL, + `account_id` bigint(20) unsigned NOT NULL, + `domain_id` bigint(20) unsigned NOT NULL, + `vm_snapshot_type` varchar(32) default NULL, + `state` varchar(32) NOT NULL, + `parent` bigint unsigned default NULL, + `current` int(1) unsigned default NULL, + `update_count` bigint unsigned NOT NULL DEFAULT 0, + `updated` datetime default NULL, + `created` datetime default NULL, + `removed` datetime default NULL, + PRIMARY KEY (`id`), + CONSTRAINT UNIQUE KEY `uc_vm_snapshots_uuid` (`uuid`), + INDEX `vm_snapshots_name` (`name`), + INDEX `vm_snapshots_vm_id` (`vm_id`), + INDEX `vm_snapshots_account_id` (`account_id`), + INDEX `vm_snapshots_display_name` (`display_name`), + INDEX `vm_snapshots_removed` (`removed`), + INDEX `vm_snapshots_parent` (`parent`), + CONSTRAINT `fk_vm_snapshots_vm_id__vm_instance_id` FOREIGN KEY `fk_vm_snapshots_vm_id__vm_instance_id` (`vm_id`) REFERENCES `vm_instance` (`id`), + CONSTRAINT `fk_vm_snapshots_account_id__account_id` FOREIGN KEY `fk_vm_snapshots_account_id__account_id` (`account_id`) REFERENCES `account` (`id`), + CONSTRAINT `fk_vm_snapshots_domain_id__domain_id` FOREIGN KEY `fk_vm_snapshots_domain_id__domain_id` (`domain_id`) REFERENCES `domain` (`id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + ALTER TABLE `cloud`.`hypervisor_capabilities` ADD COLUMN `vm_snapshot_enabled` tinyint(1) DEFAULT 0 NOT NULL COMMENT 'Whether VM snapshot is supported by hypervisor'; + UPDATE `cloud`.`hypervisor_capabilities` SET `vm_snapshot_enabled`=1 WHERE `hypervisor_type` in ('VMware', 'XenServer'); + + + DROP VIEW IF EXISTS `cloud`.`user_vm_view`; + CREATE VIEW `cloud`.`user_vm_view` AS + select + vm_instance.id id, + vm_instance.name name, + user_vm.display_name display_name, + user_vm.user_data user_data, + account.id account_id, + account.uuid account_uuid, + account.account_name account_name, + account.type account_type, + domain.id domain_id, + domain.uuid domain_uuid, + domain.name domain_name, + domain.path domain_path, + projects.id project_id, + projects.uuid project_uuid, + projects.name project_name, + instance_group.id instance_group_id, + instance_group.uuid instance_group_uuid, + instance_group.name instance_group_name, + vm_instance.uuid uuid, + vm_instance.last_host_id last_host_id, + vm_instance.vm_type type, + vm_instance.vnc_password vnc_password, + vm_instance.limit_cpu_use limit_cpu_use, + vm_instance.created created, + vm_instance.state state, + vm_instance.removed removed, + vm_instance.ha_enabled ha_enabled, + vm_instance.hypervisor_type hypervisor_type, + vm_instance.instance_name instance_name, + vm_instance.guest_os_id guest_os_id, + guest_os.uuid guest_os_uuid, + vm_instance.pod_id pod_id, + host_pod_ref.uuid pod_uuid, + vm_instance.private_ip_address private_ip_address, + vm_instance.private_mac_address private_mac_address, + vm_instance.vm_type vm_type, + data_center.id data_center_id, + data_center.uuid data_center_uuid, + data_center.name data_center_name, + data_center.is_security_group_enabled security_group_enabled, + host.id host_id, + host.uuid host_uuid, + host.name host_name, + vm_template.id template_id, + vm_template.uuid template_uuid, + vm_template.name template_name, + vm_template.display_text template_display_text, + vm_template.enable_password password_enabled, + iso.id iso_id, + iso.uuid iso_uuid, + iso.name iso_name, + iso.display_text iso_display_text, + service_offering.id service_offering_id, + disk_offering.uuid service_offering_uuid, + service_offering.cpu cpu, + service_offering.speed speed, + service_offering.ram_size ram_size, + disk_offering.name service_offering_name, + storage_pool.id pool_id, + storage_pool.uuid pool_uuid, + storage_pool.pool_type pool_type, + volumes.id volume_id, + volumes.uuid volume_uuid, + volumes.device_id volume_device_id, + volumes.volume_type volume_type, + security_group.id security_group_id, + security_group.uuid security_group_uuid, + security_group.name security_group_name, + security_group.description security_group_description, + nics.id nic_id, + nics.uuid nic_uuid, + nics.network_id network_id, + nics.ip4_address ip_address, + nics.ip6_address ip6_address, + nics.ip6_gateway ip6_gateway, + nics.ip6_cidr ip6_cidr, + nics.default_nic is_default_nic, + nics.gateway gateway, + nics.netmask netmask, + nics.mac_address mac_address, + nics.broadcast_uri broadcast_uri, + nics.isolation_uri isolation_uri, + vpc.id vpc_id, + vpc.uuid vpc_uuid, + networks.uuid network_uuid, + networks.name network_name, + networks.traffic_type traffic_type, + networks.guest_type guest_type, + user_ip_address.id public_ip_id, + user_ip_address.uuid public_ip_uuid, + user_ip_address.public_ip_address public_ip_address, + ssh_keypairs.keypair_name keypair_name, + resource_tags.id tag_id, + resource_tags.uuid tag_uuid, + resource_tags.key tag_key, + resource_tags.value tag_value, + resource_tags.domain_id tag_domain_id, + resource_tags.account_id tag_account_id, + resource_tags.resource_id tag_resource_id, + resource_tags.resource_uuid tag_resource_uuid, + resource_tags.resource_type tag_resource_type, + resource_tags.customer tag_customer, + async_job.id job_id, + async_job.uuid job_uuid, + async_job.job_status job_status, + async_job.account_id job_account_id, + affinity_group.id affinity_group_id, + affinity_group.uuid affinity_group_uuid, + affinity_group.name affinity_group_name, + affinity_group.description affinity_group_description + from + `cloud`.`user_vm` + inner join + `cloud`.`vm_instance` ON vm_instance.id = user_vm.id + and vm_instance.removed is NULL + inner join + `cloud`.`account` ON vm_instance.account_id = account.id + inner join + `cloud`.`domain` ON vm_instance.domain_id = domain.id + left join + `cloud`.`guest_os` ON vm_instance.guest_os_id = guest_os.id + left join + `cloud`.`host_pod_ref` ON vm_instance.pod_id = host_pod_ref.id + left join + `cloud`.`projects` ON projects.project_account_id = account.id + left join + `cloud`.`instance_group_vm_map` ON vm_instance.id = instance_group_vm_map.instance_id + left join + `cloud`.`instance_group` ON instance_group_vm_map.group_id = instance_group.id + left join + `cloud`.`data_center` ON vm_instance.data_center_id = data_center.id + left join + `cloud`.`host` ON vm_instance.host_id = host.id + left join + `cloud`.`vm_template` ON vm_instance.vm_template_id = vm_template.id + left join + `cloud`.`vm_template` iso ON iso.id = user_vm.iso_id + left join + `cloud`.`service_offering` ON vm_instance.service_offering_id = service_offering.id + left join + `cloud`.`disk_offering` ON vm_instance.service_offering_id = disk_offering.id + left join + `cloud`.`volumes` ON vm_instance.id = volumes.instance_id + left join + `cloud`.`storage_pool` ON volumes.pool_id = storage_pool.id + left join + `cloud`.`security_group_vm_map` ON vm_instance.id = security_group_vm_map.instance_id + left join + `cloud`.`security_group` ON security_group_vm_map.security_group_id = security_group.id + left join + `cloud`.`nics` ON vm_instance.id = nics.instance_id + left join + `cloud`.`networks` ON nics.network_id = networks.id + left join + `cloud`.`vpc` ON networks.vpc_id = vpc.id + left join + `cloud`.`user_ip_address` ON user_ip_address.vm_id = vm_instance.id + left join + `cloud`.`user_vm_details` ON user_vm_details.vm_id = vm_instance.id + and user_vm_details.name = 'SSH.PublicKey' + left join + `cloud`.`ssh_keypairs` ON ssh_keypairs.public_key = user_vm_details.value + left join + `cloud`.`resource_tags` ON resource_tags.resource_id = vm_instance.id + and resource_tags.resource_type = 'UserVm' + left join + `cloud`.`async_job` ON async_job.instance_id = vm_instance.id + and async_job.instance_type = 'VirtualMachine' + and async_job.job_status = 0 + left join + `cloud`.`affinity_group_vm_map` ON vm_instance.id = affinity_group_vm_map.instance_id + left join + `cloud`.`affinity_group` ON affinity_group_vm_map.affinity_group_id = affinity_group.id; + + DROP VIEW IF EXISTS `cloud`.`affinity_group_view`; + CREATE VIEW `cloud`.`affinity_group_view` AS + select + affinity_group.id id, + affinity_group.name name, + affinity_group.description description, + affinity_group.uuid uuid, + account.id account_id, + account.uuid account_uuid, + account.account_name account_name, + account.type account_type, + domain.id domain_id, + domain.uuid domain_uuid, + domain.name domain_name, + domain.path domain_path, + vm_instance.id vm_id, + vm_instance.uuid vm_uuid, + vm_instance.name vm_name, + vm_instance.state vm_state, + user_vm.display_name vm_display_name + from + `cloud`.`affinity_group` + inner join + `cloud`.`account` ON affinity_group.account_id = account.id + inner join + `cloud`.`domain` ON affinity_group.domain_id = domain.id + left join + `cloud`.`affinity_group_vm_map` ON affinity_group.id = affinity_group_vm_map.affinity_group_id + left join + `cloud`.`vm_instance` ON vm_instance.id = affinity_group_vm_map.instance_id + left join - `cloud`.`user_vm` ON user_vm.id = vm_instance.id; - ++ `cloud`.`user_vm` ON user_vm.id = vm_instance.id; ++ +CREATE TABLE `cloud`.`external_cisco_vnmc_devices` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', + `uuid` varchar(255) UNIQUE, + `physical_network_id` bigint unsigned NOT NULL COMMENT 'id of the physical network in to which cisco vnmc device is added', + `provider_name` varchar(255) NOT NULL COMMENT 'Service Provider name corresponding to this cisco vnmc device', + `device_name` varchar(255) NOT NULL COMMENT 'name of the cisco vnmc device', + `host_id` bigint unsigned NOT NULL COMMENT 'host id coresponding to the external cisco vnmc device', + PRIMARY KEY (`id`), + CONSTRAINT `fk_external_cisco_vnmc_devices__host_id` FOREIGN KEY (`host_id`) REFERENCES `host`(`id`) ON DELETE CASCADE, + CONSTRAINT `fk_external_cisco_vnmc_devices__physical_network_id` FOREIGN KEY (`physical_network_id`) REFERENCES `physical_network`(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `cloud`.`external_cisco_asa1000v_devices` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', + `uuid` varchar(255) UNIQUE, + `physical_network_id` bigint unsigned NOT NULL COMMENT 'id of the physical network in to which cisco asa1kv device is added', + `management_ip` varchar(255) UNIQUE NOT NULL COMMENT 'mgmt. ip of cisco asa1kv device', + `in_port_profile` varchar(255) NOT NULL COMMENT 'inside port profile name of cisco asa1kv device', + `cluster_id` bigint unsigned NOT NULL COMMENT 'id of the Vmware cluster to which cisco asa1kv device is attached (cisco n1kv switch)', + PRIMARY KEY (`id`), + CONSTRAINT `fk_external_cisco_asa1000v_devices__physical_network_id` FOREIGN KEY (`physical_network_id`) REFERENCES `physical_network`(`id`) ON DELETE CASCADE, + CONSTRAINT `fk_external_cisco_asa1000v_devices__cluster_id` FOREIGN KEY (`cluster_id`) REFERENCES `cluster`(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `cloud`.`network_asa1000v_map` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', + `network_id` bigint unsigned NOT NULL UNIQUE COMMENT 'id of guest network', + `asa1000v_id` bigint unsigned NOT NULL UNIQUE COMMENT 'id of asa1000v device', + PRIMARY KEY (`id`), + CONSTRAINT `fk_network_asa1000v_map__network_id` FOREIGN KEY (`network_id`) REFERENCES `networks`(`id`) ON DELETE CASCADE, + CONSTRAINT `fk_network_asa1000v_map__asa1000v_id` FOREIGN KEY (`asa1000v_id`) REFERENCES `external_cisco_asa1000v_devices`(`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; ++ + -- Re-enable foreign key checking, at the end of the upgrade path + SET foreign_key_checks = 1; ++ http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0232048f/tools/marvin/marvin/integration/lib/base.py ---------------------------------------------------------------------- diff --cc tools/marvin/marvin/integration/lib/base.py index e930dfa,3df68ab..f3959b0 mode 100644,100755..100755 --- a/tools/marvin/marvin/integration/lib/base.py +++ b/tools/marvin/marvin/integration/lib/base.py @@@ -2425,66 -2444,32 +2444,94 @@@ class VPC [setattr(cmd, k, v) for k, v in kwargs.items()] return(apiclient.listVPCs(cmd)) - + class AffinityGroup: + def __init__(self, items): + self.__dict__.update(items) + + @classmethod - def create(cls, apiclient, services, account=None, domainid=None): ++ def create(cls, apiclient, services, account=None, domainid=None): + agCmd = createAffinityGroup.createAffinityGroupCmd() + agCmd.name = services['name'] + agCmd.displayText = services['displaytext'] if 'displaytext' in services else services['name'] + agCmd.type = services['type'] + agCmd.account = services['account'] if 'account' in services else account + agCmd.domainid = services['domainid'] if 'domainid' in services else domainid + return AffinityGroup(apiclient.createAffinityGroup(agCmd).__dict__) + + def update(self, apiclient): + pass + + def delete(self, apiclient): + cmd = deleteAffinityGroup.deleteAffinityGroupCmd() + cmd.id = self.id + return apiclient.deleteVPC(cmd) + + + @classmethod + def list(cls, apiclient, **kwargs): + cmd = listAffinityGroups.listAffinityGroupsCmd() + [setattr(cmd, k, v) for k, v in kwargs.items()] + return(apiclient.listVPCs(cmd)) ++ +class VNMC: + """Manage VNMC lifecycle""" + + def __init__(self, items): + self.__dict__.update(items) + - @classmethod + def create(cls, apiclient, hostname, username, password, physicalnetworkid): + """Registers VNMC appliance""" + + cmd = addCiscoVnmcResource.addCiscoVnmcResourceCmd() + cmd.hostname = hostname + cmd.username = username + cmd.password = password + cmd.physicalnetworkid = physicalnetworkid + return VNMC(apiclient.addCiscoVnmcResource(cmd)) + + def delete(self, apiclient): + """Removes VNMC appliance""" + + cmd = deleteCiscoVnmcResource.deleteCiscoVnmcResourceCmd() + cmd.resourceid = self.resourceid + return apiclient.deleteCiscoVnmcResource(cmd) + + @classmethod + def list(cls, apiclient, **kwargs): + """List VNMC appliances""" + + cmd = listCiscoVnmcResources.listCiscoVnmcResourcesCmd() + [setattr(cmd, k, v) for k, v in kwargs.items()] + return(apiclient.listCiscoVnmcResources(cmd)) + +class ASA1000V: + """Manage ASA 1000v lifecycle""" + + def __init__(self, items): + self.__dict__.update(items) + + @classmethod + def create(cls, apiclient, hostname, insideportprofile, clusterid, physicalnetworkid): + """Registers ASA 1000v appliance""" + + cmd = addCiscoAsa1000vResource.addCiscoAsa1000vResourceCmd() + cmd.hostname = hostname + cmd.insideportprofile = insideportprofile + cmd.clusterid = clusterid + cmd.physicalnetworkid = physicalnetworkid + return ASA1000V(apiclient.addCiscoAsa1000vResource(cmd)) + + def delete(self, apiclient): + """Removes ASA 1000v appliance""" + + cmd = deleteCiscoAsa1000vResource.deleteCiscoAsa1000vResourceCmd() + cmd.resourceid = self.resourceid + return apiclient.deleteCiscoAsa1000vResource(cmd) + + @classmethod + def list(cls, apiclient, **kwargs): + """List ASA 1000v appliances""" + + cmd = listCiscoAsa1000vResources.listCiscoAsa1000vResourcesCmd() + [setattr(cmd, k, v) for k, v in kwargs.items()] + return(apiclient.listCiscoAsa1000vResources(cmd))