# Copyright 2014 Mirantis, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. from proboscis import test from proboscis.asserts import assert_true from devops.helpers.helpers import wait from devops.error import TimeoutError from fuelweb_test.helpers.decorators import log_snapshot_after_test from fuelweb_test import logger from fuelweb_test.settings import DEPLOYMENT_MODE from fuelweb_test.settings import SERVTEST_USERNAME from fuelweb_test.settings import SERVTEST_PASSWORD from fuelweb_test.settings import SERVTEST_TENANT from fuelweb_test.settings import iface_alias from fuelweb_test.tests.base_test_case import SetupEnvironment from fuelweb_test.tests.base_test_case import TestBasic from fuelweb_test.helpers import os_actions @test(groups=["vcenter"]) class VcenterDeploy(TestBasic): """VcenterDeploy.""" # TODO documentation def node_name(self, name_node): return self.fuel_web.get_nailgun_node_by_name(name_node)['hostname'] @staticmethod def create_vm(os_conn=None, vm_count=None): # Get list of available images,flavors and hypervisors images_list = os_conn.nova.images.list() flavors_list = os_conn.nova.flavors.list() hypervisors_list = os_conn.get_hypervisors() # Create VMs on each of hypervisor for image in images_list: for i in range(0, vm_count): if image.name == 'TestVM-VMDK': os_conn.nova.servers.create( flavor=flavors_list[0], name='test_{0}_{1}'.format(image.name, i), image=image, availability_zone='vcenter') else: os_conn.nova.servers.create( flavor=flavors_list[0], name='test_{0}_{1}'.format(image.name, i), image=image) # Wait for launch VMs for hypervisor in hypervisors_list: wait(lambda: os_conn.get_hypervisor_vms_count(hypervisor) != 0, timeout=300) def configure_nova_vlan(self, cluster_id): # Configure network interfaces. # Public and Fixed networks are on the same interface # because Nova will use the same vSwitch for PortGroups creating # as a ESXi management interface is located in. interfaces = { iface_alias('eth0'): ["fuelweb_admin"], iface_alias('eth1'): ["public", "fixed"], iface_alias('eth2'): ["management", ], iface_alias('eth3'): [], iface_alias('eth4'): ["storage"] } slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id) for node in slave_nodes: self.fuel_web.update_node_networks(node['id'], interfaces) # Configure Nova-Network VLanManager. self.fuel_web.update_vlan_network_fixed( cluster_id, amount=8, network_size=32) @test(depends_on=[SetupEnvironment.prepare_slaves_5], groups=["vcenter_bvt"]) @log_snapshot_after_test def vcenter_bvt(self): """Deploy environment in HA with cinder-vmware, compute-vmware, \ vCenter as backend for glance and multiple clusters. Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Set VMWare vCenter/ESXi datastore for images (Glance) 4. Add nodes with following roles: controller controller controller + cinder-vmware compute-vmware compute + cinder 5. Assign vCenter cluster(s) to: controller compute-vmware 6. Deploy the cluster 7. Run network verification 8. Run OSTF Duration: 2h """ self.env.revert_snapshot("ready_with_5_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'images_vcenter': True}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['cinder-vmware', 'controller'], 'slave-04': ['compute-vmware'], 'slave-05': ['compute', 'cinder'] } ) # Configure VMWare vCenter settings target_node_1 = self.node_name('slave-04') self.configure_nova_vlan(cluster_id) self.fuel_web.vcenter_configure( cluster_id, multiclusters=True, vc_glance=True, target_node_1=target_node_1 ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_1], groups=["smoke", "vcenter_smoke"]) @log_snapshot_after_test def vcenter_smoke(self): """Deploy dual hypervisors cluster with controller node only Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network FlatDHCP Manager as a network backend 3. Add nodes with following roles: controller 4. Assign vCenter cluster(s) to: controller 5. Deploy the cluster 6. Run OSTF Duration: 1h 40min """ self.env.revert_snapshot("ready_with_1_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, {'slave-01': ['controller']}) # Configure VMWare vCenter settings self.fuel_web.vcenter_configure(cluster_id) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_3], groups=["vcenter_cindervmdk"]) @log_snapshot_after_test def vcenter_cindervmdk(self): """Deploy environment with vCenter and CinderVMDK Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network FlatDHCP Manager as a network backend 3. Add nodes with following roles: controller cinder-vmware 4. Assign vCenter cluster(s) to: controller 5. Deploy the cluster 6. Run network verification 7. Run OSTF Duration: 1h 40min """ self.env.revert_snapshot("ready_with_3_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['cinder-vmware'] } ) # Configure VMWare vCenter settings self.fuel_web.vcenter_configure(cluster_id) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_3], groups=["vcenter_cindervmdk_and_computevmware"]) @log_snapshot_after_test def vcenter_cindervmdk_and_computevmware(self): """Deploy environment with vCenter, CinderVMDK and ComputeVMWare Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network FlatDHCP Manager as a network backend 3. Add nodes with following roles: controller cinder-vmware compute-vmware 4. Assign vCenter cluster(s) to: controller 5. Deploy the cluster 6. Run network verification 7. Run OSTF Duration: 1h 40min """ self.env.revert_snapshot("ready_with_3_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['cinder-vmware'], 'slave-03': ['compute-vmware'] } ) # Configure VMWare vCenter settings target_node_1 = self.node_name('slave-03') self.fuel_web.vcenter_configure( cluster_id, target_node_1=target_node_1, ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_3], groups=["vcenter_computevmware"]) @log_snapshot_after_test def vcenter_computevmware(self): """Deploy environment with vCenter and compute-vmware Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network FlatDHCP Manager as a network backend 3. Add nodes with following roles: controller compute-vmware 4. Assign vCenter cluster(s) to: compute-vmware 5. Deploy the cluster 6. Run network verification 7. Run OSTF Duration: 1h 40min """ self.env.revert_snapshot("ready_with_3_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['compute-vmware'] } ) # Configure VMWare vCenter settings target_node_1 = self.node_name('slave-02') self.fuel_web.vcenter_configure( cluster_id, target_node_1=target_node_1, ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_1], groups=["vcenter_glance_backend"]) @log_snapshot_after_test def vcenter_glance_backend(self): """Deploy environment with VMWare vCenter/ESXi datastore as backend / for glance Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Set VMWare vCenter/ESXi datastore for images (Glance) 4. Add nodes with following roles: controller 5. Assign vCenter cluster(s) to: controller 6. Deploy the cluster 7. Run OSTF Duration: 1h 40min """ self.env.revert_snapshot("ready_with_1_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'images_vcenter': True, 'images_ceph': False}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'] } ) # Configure VMWare vCenter settings self.fuel_web.vcenter_configure(cluster_id, vc_glance=True) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_3], groups=["vcenter_glance_backend_and_computevmware"]) @log_snapshot_after_test def vcenter_glance_backend_and_computevmware(self): """Deploy environment with VMWare vCenter/ESXi datastore as backend / for glance and compute-vmware Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Set VMWare vCenter/ESXi datastore for images (Glance) 4. Add nodes with following roles: controller compute-vmware 5. Assign vCenter cluster(s) to: compute-vmware 6. Deploy the cluster 7. Run network verification 8. Run OSTF Duration: ?h """ self.env.revert_snapshot("ready_with_3_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'images_vcenter': True, 'images_ceph': False}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['compute-vmware'] } ) # Configure VMWare vCenter settings target_node_1 = self.node_name('slave-02') self.fuel_web.vcenter_configure( cluster_id, target_node_1=target_node_1, vc_glance=True ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_3], groups=["vcenter_multiple_cluster_with_computevmware"]) @log_snapshot_after_test def vcenter_multiple_cluster_with_computevmware(self): """Deploy environment in DualHypervisors mode with cinder-vmware, \ compute-vmware and multiple clusters. Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Add nodes with following roles: controller cinder-vmware compute-vmware 4. Assign vCenter cluster(s) to: controller compute-vmware 5. Deploy the cluster 6. Run network verification 7. Run OSTF Duration 1h 40min """ self.env.revert_snapshot("ready_with_3_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE ) logger.debug("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['cinder-vmware'], 'slave-03': ['compute-vmware'] } ) # Configure VMWare vCenter settings target_node_2 = self.node_name('slave-03') self.fuel_web.vcenter_configure( cluster_id, target_node_2=target_node_2, multiclusters=True ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_5], groups=["vcenter_ceph"]) @log_snapshot_after_test def vcenter_ceph(self): """Deploy environment in HA with CephOSD as backend for Cinder and \ Glance Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Set CephOSD as backend for Glance and Cinder 4. Add nodes with following roles: controller compute ceph-osd ceph-osd 5. Assign vCenter cluster(s) to: controller 6. Deploy the cluster 7. Run network verification 8. Run OSTF Duration: 2h 30min """ self.env.revert_snapshot("ready_with_5_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'images_ceph': True, 'volumes_ceph': True, 'osd_pool_size': '2', 'objects_ceph': True, 'volumes_lvm': False}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['compute'], 'slave-03': ['ceph-osd'], 'slave-04': ['ceph-osd'], } ) # Configure VMWare vCenter settings self.fuel_web.vcenter_configure(cluster_id, multiclusters=True) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_9], groups=["vcenter_computevmware_and_ceph"]) @log_snapshot_after_test def vcenter_computevmware_and_ceph(self): """Deploy environment in DualHypervisors mode with Ceph as backend \ for Cinder and Glance and compute-vmware nodes Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Set CephOSD as backend for Glance and Cinder 4. Add nodes with following roles: controller compute-vmware compute-vmware compute ceph-osd ceph-osd 5. Assign vCenter cluster(s) to: compute-vmware 6. Deploy the cluster 7. Run network verification 8. Run OSTF Duration: 2h """ self.env.revert_snapshot("ready_with_9_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'images_ceph': True, 'volumes_ceph': True, 'osd_pool_size': '2', 'volumes_lvm': False}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['compute-vmware'], 'slave-03': ['compute-vmware'], 'slave-04': ['compute'], 'slave-05': ['ceph-osd'], 'slave-06': ['ceph-osd'] } ) # Configure VMWare vCenter settings target_node_1 = self.node_name('slave-02') target_node_2 = self.node_name('slave-03') self.fuel_web.vcenter_configure( cluster_id, target_node_1=target_node_1, target_node_2=target_node_2, multiclusters=True ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_3], groups=["vcenter_multiroles_cindervmdk_and_ceph"]) @log_snapshot_after_test def vcenter_multiroles_cindervmdk_and_ceph(self): """Deploy environment in DualHypervisors mode with Ceph and nodes \ with multiroles (combinations with CinderVMDK and CephOSD) Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Set CephOSD as backend for Glance and Cinder 4. Add nodes with following roles: controller + cinder-vmware + ceph-osd compute + cinderVMDK + ceph-osd 5. Assign vCenter cluster(s) to: controller 6. Deploy the cluster 7. Run network verification 8. Run OSTF Duration: 2h """ self.env.revert_snapshot("ready_with_3_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'volumes_ceph': True, 'osd_pool_size': '2', 'volumes_lvm': False, 'ephemeral_ceph': True}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, {'slave-01': ['controller', 'cinder-vmware', 'ceph-osd'], 'slave-02': ['compute', 'cinder-vmware', 'ceph-osd']}) self.configure_nova_vlan(cluster_id) # Configure VMWare vCenter settings self.fuel_web.vcenter_configure(cluster_id) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_3], groups=["vcenter_multiroles_cindervmdk_and_cinder"]) @log_snapshot_after_test def vcenter_multiroles_cindervmdk_and_cinder(self): """Deploy environment in DualHypervisors mode with nodes \ with multiroles (combinations with CinderVMDK and Cinder) Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Add nodes with following roles: controller + cinder-vmware + cinder compute + cinderVMDK + cinder 4. Assign vCenter cluster(s) to: controller 5. Deploy the cluster 6. Run network verification 7. Run OSTF Duration: 2h """ self.env.revert_snapshot("ready_with_3_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller', 'cinder-vmware', 'cinder'], 'slave-02': ['compute', 'cinder-vmware', 'cinder'] } ) self.configure_nova_vlan(cluster_id) # Configure VMWare vCenter settings self.fuel_web.vcenter_configure(cluster_id) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_5], groups=["vcenter_ceilometer"]) @log_snapshot_after_test def vcenter_ceilometer(self): """Deploy environment with vCenter and Ceilometer enabled Scenario: 1. Create cluster with vCenter and Ceilometer support 2. Set Nova-Network FlatDHCP Manager as a network backend 3. Add nodes with following roles: controller compute + cinder cinder-vmware mongo 4. Assign vCenter cluster(s) to: controller 5. Deploy the cluster 6. Run network verification 7. Run OSTF Duration: 2h """ self.env.revert_snapshot("ready_with_5_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'ceilometer': True}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['compute', 'cinder'], 'slave-03': ['cinder-vmware'], 'slave-04': ['mongo'] } ) # Configure VMWare vCenter settings self.fuel_web.vcenter_configure(cluster_id, multiclusters=True) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha', 'tests_platform'] ) @test(depends_on=[SetupEnvironment.prepare_slaves_9], groups=["vcenter_ceilometer_and_computevmware"]) @log_snapshot_after_test def vcenter_ceilometer_and_computevmware(self): """Deploy environment with vCenter, Ceilometer enabled and\ ComputeVMWare Scenario: 1. Create cluster with vCenter and Ceilometer support 2. Set Nova-Network VLAN Manager as a network backend 3. Add nodes with following roles: controller compute + cinder cinder-vmware compute-vmware compute-vmware mongo 4. Assign vCenter cluster(s) to: compute-vmware 5. Deploy the cluster 6. Run network verification 7. Run OSTF Duration: 2h """ self.env.revert_snapshot("ready_with_9_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'ceilometer': True}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['compute', 'cinder'], 'slave-03': ['cinder-vmware'], 'slave-04': ['compute-vmware'], 'slave-05': ['compute-vmware'], 'slave-06': ['mongo'] } ) self.configure_nova_vlan(cluster_id) # Configure VMWare vCenter settings target_node_1 = self.node_name('slave-04') target_node_2 = self.node_name('slave-05') self.fuel_web.vcenter_configure( cluster_id, target_node_1=target_node_1, target_node_2=target_node_2, multiclusters=True ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha', 'tests_platform'] ) @test(depends_on=[SetupEnvironment.prepare_slaves_3], groups=["vcenter_multiroles_ceilometer"]) @log_snapshot_after_test def vcenter_multiroles_ceilometer(self): """Deploy environment with vCenter, Ceilometer and nodes with \ multiroles (combinations with CinderVMDK, Cinder and MongoDB) Scenario: 1. Create cluster with vCenter and Ceilometer support 2. Set Nova-Network VLAN Manager as a network backend 3. Add nodes with following roles: controller + cinder + cinder-vmware + mongo compute + cinder + cinder-vmware + mongo compute-vmware 4. Assign vCenter cluster(s) to: controller compute-vmware 5. Deploy the cluster 6. Run network verification 7. Run OSTF Duration: 2h """ self.env.revert_snapshot("ready_with_3_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'ceilometer': True}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller', 'cinder', 'cinder-vmware', 'mongo'], 'slave-02': ['compute'], 'slave-03': ['compute-vmware'] } ) self.configure_nova_vlan(cluster_id) # Configure VMWare vCenter settings target_node_2 = self.node_name('slave-03') self.fuel_web.vcenter_configure( cluster_id, target_node_2=target_node_2, multiclusters=True ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha', 'tests_platform']) @test(depends_on=[SetupEnvironment.prepare_slaves_9], groups=["vcenter_add_delete_nodes"]) @log_snapshot_after_test def vcenter_add_delete_nodes(self): """Deploy environment of vcenter+qemu nova vlan and default backend for glance and with addition and deletion of nodes with different roles Scenario: 1. Create cluster with vCenter support. 2. Add 1 node with controller role. 3. Set Nova-Network VlanManager as a network backend. 4. Deploy the cluster. 5. Run OSTF. 6. Add 1 node with cinder role and redeploy cluster. 7. Run OSTF. 8. Remove 1 node with cinder role. 9. Add 1 node with cinder-vmdk role and redeploy cluster. 10. Run OSTF. 11. Add 1 node with cinder role and redeploy cluster. 12. Run OSTF. 13. Remove nodes with roles: cinder-vmdk and cinder. 14. Add 1 node with compute role and redeploy cluster. 15. Run OSTF. 16. Add 1 node with cinder role. 17. Run OSTF. 18. Remove node with cinder role. 19. Add 1 node with cinder-vmdk role and redeploy cluster. 20. Run OSTF. 21. Add 1 node with compute role, 1 node with cinder role and redeploy cluster. 22. Run OSTF. Duration 5 hours """ self.env.revert_snapshot("ready_with_9_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE) logger.debug("cluster is {}".format(cluster_id)) # Add role controller for node 1 self.fuel_web.update_nodes( cluster_id, {'slave-01': ['controller']} ) # Configure network interfaces. # Public and Fixed networks are on the same interface # because Nova will use the same vSwitch for PortGroups creating # as a ESXi management interface is located in. interfaces = { iface_alias('eth0'): ["fuelweb_admin"], iface_alias('eth1'): ["public", "fixed"], iface_alias('eth2'): ["management", ], iface_alias('eth3'): [], iface_alias('eth4'): ["storage"] } self.configure_nova_vlan(cluster_id) # Configure VMWare vCenter self.fuel_web.vcenter_configure(cluster_id) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke']) # Add 1 node with cinder role and redeploy cluster self.fuel_web.update_nodes( cluster_id, {'slave-02': ['cinder']} ) slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id) self.fuel_web.update_node_networks(slave_nodes[-1]['id'], interfaces) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke']) # Remove 1 node with cinder role self.fuel_web.update_nodes( cluster_id, {'slave-02': ['cinder']}, False, True) # Add 1 node with cinder-vmware role and redeploy cluster self.fuel_web.update_nodes( cluster_id, {'slave-03': ['cinder-vmware']} ) slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id) self.fuel_web.update_node_networks(slave_nodes[-1]['id'], interfaces) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke']) # Add 1 node with cinder role and redeploy cluster self.fuel_web.update_nodes( cluster_id, {'slave-02': ['cinder']} ) slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id) self.fuel_web.update_node_networks(slave_nodes[-1]['id'], interfaces) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke']) # Remove nodes with roles: cinder-vmdk and cinder self.fuel_web.update_nodes( cluster_id, {'slave-02': ['cinder'], 'slave-03': ['cinder-vmware']}, False, True) # Add 1 node with compute role and redeploy cluster self.fuel_web.update_nodes( cluster_id, {'slave-04': ['compute']} ) slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id) self.fuel_web.update_node_networks(slave_nodes[-1]['id'], interfaces) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke']) # Add 1 node with cinder role and redeploy cluster self.fuel_web.update_nodes( cluster_id, {'slave-03': ['cinder']} ) slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id) self.fuel_web.update_node_networks(slave_nodes[-1]['id'], interfaces) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke']) # Remove node with cinder role self.fuel_web.update_nodes( cluster_id, {'slave-03': ['cinder']}, False, True) # Add 1 node with cinder-vmdk role and redeploy cluster self.fuel_web.update_nodes( cluster_id, {'slave-02': ['cinder-vmware']} ) slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id) self.fuel_web.update_node_networks(slave_nodes[-1]['id'], interfaces) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke']) # Add 1 node with compute role and 1 node with cinder role and redeploy # cluster self.fuel_web.update_nodes( cluster_id, {'slave-03': ['compute'], 'slave-05': ['cinder']} ) slave_nodes = self.fuel_web.client.list_cluster_nodes(cluster_id) for node_index in range(-1, -3, -1): self.fuel_web.update_node_networks( slave_nodes[node_index]['id'], interfaces ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) @test(depends_on=[SetupEnvironment.prepare_slaves_9], groups=["vcenter_delete_controler"]) @log_snapshot_after_test def vcenter_delete_controller(self): """Deploy environment of vcenter+qemu nova vlan, default backend for glance and deletion one node with controller role Scenario: 1. Create cluster with vCenter support 2. Add 4 nodes with Controller roles 3. Add 2 nodes with compute role 4. Add 1 node with cinder role 5. Add 1 node with cinder-vmware role 6. Add a node with compute-vmware role 7. Set Nova-Network VlanManager as a network backend. 8. Deploy the cluster 9. Run OSTF. 10. Remove 1 node with controller role and redeploy cluster. 11. Run OSTF. Duration 3 hours """ self.env.revert_snapshot("ready_with_9_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE) logger.debug("cluster is {}".format(cluster_id)) # Configure network interfaces. # Public and Fixed networks are on the same interface # because Nova will use the same vSwitch for PortGroups creating # as a ESXi management interface is located in. # Assign role to node self.fuel_web.update_nodes( cluster_id, {'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller'], 'slave-04': ['controller'], 'slave-05': ['compute'], 'slave-06': ['compute'], 'slave-07': ['cinder'], 'slave-08': ['cinder-vmware'], 'slave-09': ['compute-vmware']}) self.configure_nova_vlan(cluster_id) target_node_1 = self.node_name('slave-09') self.fuel_web.vcenter_configure( cluster_id, target_node_1=target_node_1 ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['smoke', 'sanity', 'ha'], timeout=60 * 60) # Remove 1 node with controller role and redeploy cluster self.fuel_web.update_nodes( cluster_id, {'slave-04': ['controller'], }, False, True) self.fuel_web.deploy_cluster_wait(cluster_id, check_services=False) # TODO: Fix the function when bug #1457515 will be fixed. self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['smoke', 'sanity', 'ha'], should_fail=1, failed_test_name=['Check that required services are running']) @test(depends_on=[SetupEnvironment.prepare_slaves_5], groups=["vcenter_ha_nova_flat_multiple_clusters"]) @log_snapshot_after_test def vcenter_ha_nova_flat_multiple_clusters(self): """Deploy environment in HA with compute-vmware and multiple \ clusters. Check network connection between VM's from different \ hypervisors. Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network FlatDHCP Manager as a network backend 3. Add nodes with following roles: controller controller controller compute cinder-vmware 4. Assign vCenter cluster(s) to: controller 5. Deploy the cluster 6. Run network verification 7. Run OSTF 8. Create 2 VMs on each hypervisor 9. Verify that VMs on different hypervisors should communicate between each other Duration 112 min """ self.env.revert_snapshot("ready_with_5_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE ) logger.debug("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller'], 'slave-04': ['compute', 'cinder'], 'slave-05': ['cinder-vmware'] } ) # Configure VMWare vCenter settings self.fuel_web.vcenter_configure(cluster_id, multiclusters=True) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) # TODO: Fix the function when bug #1457404 will be fixed. os_ip = self.fuel_web.get_public_vip(cluster_id) os_conn = os_actions.OpenStackActions( os_ip, SERVTEST_USERNAME, SERVTEST_PASSWORD, SERVTEST_TENANT) try: self.create_vm(os_conn=os_conn, vm_count=6) except TimeoutError: logger.warning("Tests failed to create VMs on each hypervisors," " try add 4 VMs" " and if it fails again - test will fails ") self.create_vm(os_conn=os_conn, vm_count=4) # Verify that current state of each VMs is Active srv_list = os_conn.get_servers() for srv in srv_list: assert_true(os_conn.get_instance_detail(srv).status != 'ERROR', "Current state of Vm {0} is {1}".format( srv.name, os_conn.get_instance_detail(srv).status)) try: # pylint: disable=undefined-loop-variable wait( lambda: os_conn.get_instance_detail(srv).status == "ACTIVE", timeout=60 * 60) # pylint: enable=undefined-loop-variable except TimeoutError: logger.error( "Current state of Vm {0} is {1}".format( srv.name, os_conn.get_instance_detail(srv).status)) # Get ip of VMs srv_ip = [] srv_list = os_conn.get_servers() for srv in srv_list: ip = srv.networks[srv.networks.keys()[0]][0] srv_ip.append(ip) # VMs on different hypervisors should communicate between each other for ip_1 in srv_ip: primary_controller = self.fuel_web.get_nailgun_primary_node( self.env.d_env.nodes().slaves[0]) ssh = self.fuel_web.get_ssh_for_node(primary_controller.name) logger.info("Connect to VM {0}".format(ip_1)) for ip_2 in srv_ip: if ip_1 != ip_2: # Check server's connectivity res = int( os_conn.execute_through_host( ssh, ip_1, "ping -q -c3 " + ip_2 + "| grep -o '[0-9] packets received'" "| cut -f1 -d ' '")['stdout']) assert_true( res == 3, "VM{0} not ping from Vm {1}, received {2} icmp".format( ip_1, ip_2, res)) @test(depends_on=[SetupEnvironment.prepare_slaves_5], groups=["vcenter_ha_nova_vlan_multiple_clusters"]) @log_snapshot_after_test def vcenter_ha_nova_vlan_multiple_clusters(self): """Deploy environment in HA with compute-vmware and multiple \ clusters. Check network connection between VM's from different \ hypervisors. Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Add nodes with following roles: controller controller controller compute cinder-vmware 4. Assign vCenter cluster(s) to: controller 5. Deploy the cluster 6. Run network verification 7. Run OSTF 8. Create 2 VMs on each hypervisor 9. Verify that VMs on different hypervisors should communicate between each other Duration 112 min """ self.env.revert_snapshot("ready_with_5_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE ) logger.debug("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller'], 'slave-04': ['compute', 'cinder'], 'slave-05': ['cinder-vmware'] } ) # Configure VMWare vCenter settings self.configure_nova_vlan(cluster_id) self.fuel_web.vcenter_configure(cluster_id, multiclusters=True) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.verify_network(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha']) # TODO: Fix the function when bug #1457404 will be fixed. os_ip = self.fuel_web.get_public_vip(cluster_id) os_conn = os_actions.OpenStackActions( os_ip, SERVTEST_USERNAME, SERVTEST_PASSWORD, SERVTEST_TENANT) try: self.create_vm(os_conn=os_conn, vm_count=6) except TimeoutError: logger.warning("Tests failed to create VMs on each hypervisors," " try add 4 VMs" " and if it fails again - test will fails ") self.create_vm(os_conn=os_conn, vm_count=4) # Verify that current state of each VMs is Active srv_list = os_conn.get_servers() for srv in srv_list: assert_true(os_conn.get_instance_detail(srv).status != 'ERROR', "Current state of Vm {0} is {1}".format( srv.name, os_conn.get_instance_detail(srv).status)) try: # pylint: disable=undefined-loop-variable wait( lambda: os_conn.get_instance_detail(srv).status == "ACTIVE", timeout=60 * 60) # pylint: enable=undefined-loop-variable except TimeoutError: logger.error( "Current state of Vm {0} is {1}".format( srv.name, os_conn.get_instance_detail(srv).status)) # Get ip of VMs srv_ip = [] srv_list = os_conn.get_servers() for srv in srv_list: ip = srv.networks[srv.networks.keys()[0]][0] srv_ip.append(ip) # VMs on different hypervisors should communicate between each other for ip_1 in srv_ip: primary_controller = self.fuel_web.get_nailgun_primary_node( self.env.d_env.nodes().slaves[0]) ssh = self.fuel_web.get_ssh_for_node(primary_controller.name) logger.info("Connect to VM {0}".format(ip_1)) for ip_2 in srv_ip: if ip_1 != ip_2: # Check server's connectivity res = int( os_conn.execute_through_host( ssh, ip_1, "ping -q -c3 " + ip_2 + "| grep -o '[0-9] packets received'" "| cut -f1 -d ' '")['stdout']) assert_true( res == 3, "VM{0} not ping from Vm {1}, received {2} icmp".format( ip_1, ip_2, res)) @test(depends_on=[SetupEnvironment.prepare_slaves_5], groups=["vcenter_ha_glance_backend_multiple_cluster"]) @log_snapshot_after_test def vcenter_ha_glance_backend_multiple_cluster(self): """Deploy environment with nova-vlan in HA with multiple cluster \ (Controller + ComputeVMWare), CinderVMDK, Cinder and VMWare \ datastore as backend for Glance Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Set VMWare vCenter/ESXi datastore for images (Glance) 4. Add nodes with following roles: controller controller controller compute + cinder compute-vmware 5. Assign vCenter cluster(s) to: controller compute-vmware 6. Deploy the cluster 7. Run network verification 8. Run OSTF Duration: 2h 10min """ self.env.revert_snapshot("ready_with_5_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'images_vcenter': True, 'images_ceph': False}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller'], 'slave-04': ['compute', 'cinder'], 'slave-05': ['compute-vmware'] } ) # Configure VMWare vCenter settings self.configure_nova_vlan(cluster_id) target_node_2 = self.node_name('slave-05') self.fuel_web.vcenter_configure( cluster_id, vc_glance=True, multiclusters=True, target_node_2=target_node_2 ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha', 'tests_platform']) @test(depends_on=[SetupEnvironment.prepare_slaves_9], groups=["vcenter_ha_ceph"]) @log_snapshot_after_test def vcenter_ha_ceph(self): """Deploy environment in HA with ComputeVMWare and Ceph \ (Ceph RBD for volumes/images and RadosGW) Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Set Ceph as storage backend 4. Add nodes with following roles: controller controller controller ceph-osd ceph-osd compute compute-vmware 5. Assign vCenter cluster(s) to: controller compute-vmware 6. Deploy the cluster 7. Run network verification 8. Run OSTF Duration: 2h 10min """ self.env.revert_snapshot("ready_with_9_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'images_ceph': True, 'volumes_ceph': True, 'osd_pool_size': '2', 'objects_ceph': True, 'volumes_lvm': False}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller'], 'slave-04': ['ceph-osd'], 'slave-05': ['ceph-osd'], 'slave-06': ['compute'], 'slave-07': ['compute-vmware'] } ) # Configure VMWare vCenter settings target_node_2 = self.node_name('slave-07') self.fuel_web.vcenter_configure( cluster_id, multiclusters=True, target_node_2=target_node_2 ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha', 'tests_platform']) @test(depends_on=[SetupEnvironment.prepare_slaves_9], groups=["vcenter_ha_cinder_and_ceph"]) @log_snapshot_after_test def vcenter_ha_cinder_and_ceph(self): """Deploy environment in HA with Cinder and Ceph \ (Ceph RBD for images/ephemeral volumes and RadosGW) Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network VLAN Manager as a network backend 3. Set Ceph RBD for images/ephemeral volumes and RadosGW 4. Add nodes with following roles: controller controller controller ceph-osd + cinder ceph-osd + cinder-vmware 5. Assign vCenter cluster(s) to: controller 6. Deploy the cluster 7. Run network verification 8. Run OSTF Duration: 2h 10min """ self.env.revert_snapshot("ready_with_9_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'images_ceph': True, 'volumes_ceph': False, 'objects_ceph': True, 'osd_pool_size': '2', 'volumes_lvm': True}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller'], 'slave-04': ['ceph-osd', 'cinder'], 'slave-05': ['ceph-osd', 'cinder-vmware'] } ) # Configure VMWare vCenter settings self.configure_nova_vlan(cluster_id) self.fuel_web.vcenter_configure(cluster_id) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha', 'tests_platform']) @test(depends_on=[SetupEnvironment.prepare_slaves_5], groups=["vcenter_ha_multiroles_cindervmdk_and_cinder"]) @log_snapshot_after_test def vcenter_ha_multiroles_cindervmdk_and_cinder(self): """Deploy environment in HA with ComputeVMWare, Cinder and \ check multiroles with CinderVMDK Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network FlatDHCP Manager as a network backend 3. Add nodes with following roles: controller controller controller + cinder + cinder-vmware compute + cinder + cinder-vmware compute-vmware 4. Assign vCenter cluster(s) to: controller compute-vmware 5. Deploy the cluster 6. Run network verification 7. Run OSTF Duration: 2h 10min """ self.env.revert_snapshot("ready_with_5_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller', 'cinder', 'cinder-vmware'], 'slave-04': ['compute', 'cinder', 'cinder-vmware'], 'slave-05': ['compute-vmware'] } ) # Configure VMWare vCenter settings target_node_2 = self.node_name('slave-05') self.fuel_web.vcenter_configure( cluster_id, target_node_2=target_node_2, multiclusters=True ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha', 'tests_platform']) @test(depends_on=[SetupEnvironment.prepare_slaves_5], groups=["vcenter_ha_multiroles_cindervmdk_and_ceph"]) @log_snapshot_after_test def vcenter_ha_multiroles_cindervmdk_and_ceph(self): """Deploy environment in HA with ComputeVMWare, Ceph and \ check multiroles with CinderVMDK Scenario: 1. Create cluster with vCenter support 2. Set Nova-Network FlatDHCP Manager as a network backend 3. Set Ceph as storage backend 4. Add nodes with following roles: controller controller controller + ceph-osd + cinder-vmware compute + ceph-osd + cinder-vmware compute-vmware 5. Assign vCenter cluster(s) to: controller compute-vmware 6. Deploy the cluster 7. Run network verification 8. Run OSTF Duration: 2h 10min """ self.env.revert_snapshot("ready_with_5_slaves") # Configure cluster cluster_id = self.fuel_web.create_cluster( name=self.__class__.__name__, mode=DEPLOYMENT_MODE, settings={'images_ceph': True, 'volumes_ceph': True, 'osd_pool_size': '2', 'objects_ceph': True, 'volumes_lvm': False}) logger.info("cluster is {}".format(cluster_id)) # Assign roles to nodes self.fuel_web.update_nodes( cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller', 'ceph-osd', 'cinder-vmware'], 'slave-04': ['compute', 'ceph-osd', 'cinder-vmware'], 'slave-05': ['compute-vmware'] } ) # Configure VMWare vCenter settings target_node_2 = self.node_name('slave-05') self.fuel_web.vcenter_configure( cluster_id, target_node_2=target_node_2, multiclusters=True ) self.fuel_web.deploy_cluster_wait(cluster_id) self.fuel_web.run_ostf( cluster_id=cluster_id, test_sets=['sanity', 'smoke', 'ha', 'tests_platform'])