def contrail_cinder_ceph_multirole(self): """Check deploy contrail with Controller + Cinder + Ceph multirole Scenario: 1. Create an environment with "Neutron with tunneling segmentation" as a network configuration and CEPH storage 2. Enable and configure Contrail plugin 3. Add 1 node with "controller" + "storage-cinder" + "Ceph-OSD" multirole 4. Add 1 node with "controller" + "storage-cinder" and 1 node with "controller" + "Ceph-OSD" multiroles 5. Add 2 nodes with "compute" role 6. Add 3 nodes with "contrail-config", "contrail-control" and "contrail-db" roles 7. Deploy cluster with plugin 8. Run OSTF tests """ plugin.prepare_contrail_plugin( self, slaves=9, options={'images_ceph': True} ) # enable plugin in contrail settings plugin.activate_plugin(self) # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() self.fuel_web.update_nodes( self.cluster_id, { 'slave-01': ['controller', 'cinder', 'ceph-osd'], 'slave-02': ['controller', 'cinder'], 'slave-03': ['controller', 'ceph-osd'], 'slave-04': ['compute'], 'slave-05': ['compute'], 'slave-06': ['contrail-config', 'contrail-control', 'contrail-db'], 'slave-07': ['contrail-config', 'contrail-control', 'contrail-db'], 'slave-08': ['contrail-config', 'contrail-control', 'contrail-db'] }) # deploy cluster openstack.deploy_cluster(self) # run OSTF tests if vsrx_setup_result: self.fuel_web.run_ostf(cluster_id=self.cluster_id)
def contrail_ceilometer(self): """Check deploy environment with Contrail and Ceilometer Scenario: 1. Create an environment with "Neutron with tunneling segmentation" as a network configuration and CEPH storage 2. Enable and configure Contrail plugin 3. Add 2 nodes with "controller" role 4. Add a node with "controller" + "MongoDB" multirole 5. Add a node with "compute"+"ceph-OSD"+"cinder" multiroles 6. Add node with "compute" + "ceph-OSD" + " MongoDB" multiroles 7. Add a node with "MongoDB" role 8. Add a node with "contrail-config", "contrail-control" and "contrail-db" roles 9. Deploy cluster with plugin 10. Run OSTF tests Duration 120 min """ plugin.prepare_contrail_plugin( self, slaves=9, options={'images_ceph': True, 'ceilometer': True}) # enable plugin in contrail settings plugin.activate_plugin(self) # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() self.fuel_web.update_nodes( self.cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller', 'mongo'], 'slave-04': ['compute', 'ceph-osd', 'mongo'], 'slave-05': ['compute', 'ceph-osd', 'cinder'], 'slave-06': ['mongo'], 'slave-07': ['contrail-config', 'contrail-control', 'contrail-db'], }) # deploy cluster openstack.deploy_cluster(self) if vsrx_setup_result: self.fuel_web.run_ostf( cluster_id=self.cluster_id, test_sets=['smoke', 'sanity', 'ha', 'tests_platform'],)
def contrail_plugin_add_delete_compute_node(self): """Verify that Compute node can be deleted and added after deploying Scenario: 1. Create an environment with "Neutron with tunneling segmentation" as a network configuration and CEPH storage 2. Enable and configure Contrail plugin 3. Add some controller, compute + storage (at least 4) nodes 4. Add a node with "contrail-db", "contarail-config" and "contrail-control" roles 5. Deploy cluster 6. Run OSTF tests 7. Delete a compute node and deploy changes 8. Run OSTF tests 9. Add a node with "compute" role and deploy changes 10. Run OSTF tests """ plugin.prepare_contrail_plugin(self, slaves=9) # enable plugin in contrail settings plugin.activate_plugin(self) # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() conf_no_controller = { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller'], 'slave-04': ['controller'], 'slave-05': ['compute', 'cinder'], 'slave-06': ['compute', 'cinder'], 'slave-07': ['compute', 'cinder'], # Here slave-8 'slave-09': ['contrail-db', 'contrail-config', 'contrail-control'], } conf_compute = {'slave-08': ['compute', 'cinder']} openstack.update_deploy_check(self, dict(conf_no_controller, **conf_compute), is_vsrx=vsrx_setup_result) openstack.update_deploy_check(self, conf_compute, delete=True, is_vsrx=vsrx_setup_result) openstack.update_deploy_check(self, conf_compute, is_vsrx=vsrx_setup_result)
def contrail_plugin_add_delete_controller_node(self): """Verify that Controller node can be deleted and added after deploying Scenario: 1. Create an environment with "Neutron with tunneling segmentation" as a network configuration 2. Enable and configure Contrail plugin 3. Add some controller (at least 3), compute and storage nodes 4. Add 3 nodes with "contrail-db", "contarail-config" and "contrail-control" roles on all nodes 5. Deploy cluster 6. Run OSTF tests 7. Delete a Controller node and deploy changes 8. Run OSTF tests 9. Add a node with "Controller" role and deploy changes 10. Run OSTF tests. All steps must be completed successfully, without any errors. """ plugin.prepare_contrail_plugin(self, slaves=9) # enable plugin in contrail settings plugin.activate_plugin(self) # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() conf_no_controller = { 'slave-01': ['controller'], 'slave-02': ['controller'], # Here slave-03 'slave-04': ['compute'], 'slave-05': ['cinder'], 'slave-06': ['contrail-db', 'contrail-config', 'contrail-control'], 'slave-07': ['contrail-db', 'contrail-config', 'contrail-control'], 'slave-08': ['contrail-db', 'contrail-config', 'contrail-control'], } conf_ctrl = {'slave-03': ['controller']} openstack.update_deploy_check(self, dict(conf_no_controller, **conf_ctrl), is_vsrx=vsrx_setup_result) openstack.update_deploy_check(self, conf_ctrl, delete=True, is_vsrx=vsrx_setup_result) openstack.update_deploy_check(self, conf_ctrl, is_vsrx=vsrx_setup_result)
def contrail_vlan(self): """Check deploy contrail on an environment with vlan-tagging Scenario: 1. Create an environment with "Neutron with tunneling segmentation" as a network configuration 2. Enable and configure Contrail plugin 3. Add 3 nodes with controller role 4. Add 2 nodes with "compute" and "Storage-cinder" roles 5. Add a node with "contrail-config" and "contrail-db" roles 6. Add a node with "contrail-db", "contrail-control" roles 7. Add a node with "contrail-db" role 8. Configure VLAN on network interfaces 9. Deploy cluster with plugin 10. Run OSTF tests Duration 120 min """ plugin.prepare_contrail_plugin(self, slaves=9) # enable plugin in contrail settings plugin.activate_plugin(self) # configure vlan on storage and management interfaces openstack.assign_vlan(self, storage=101, management=102) # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() self.fuel_web.update_nodes( self.cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller'], 'slave-04': ['compute', 'cinder'], 'slave-05': ['compute', 'cinder'], 'slave-06': ['contrail-config', 'contrail-db'], 'slave-07': ['contrail-control', 'contrail-db'], 'slave-08': ['contrail-db'], }) # deploy cluster openstack.deploy_cluster(self) if vsrx_setup_result: self.fuel_web.run_ostf( cluster_id=self.cluster_id, test_sets=['smoke', 'sanity', 'ha'])
def contrail_ha_baseos(self): """Check deploy HA-contrail on an environment with a base-os node Scenario: 1. Create an environment with "Neutron with tunneling segmentation" as a network configuration 2. Enable and configure Contrail plugin 3. Add a node with controller role 4. Add 2 nodes with "compute" and "Storage-cinder" roles 5. Add a node with Base-OS role 6. Add 3 nodes with "contrail-config", "contrail-control" and "contrail-db" roles 7. Deploy cluster with plugin 8. Run OSTF tests Duration 120 min """ plugin.prepare_contrail_plugin(self, slaves=9) # enable plugin in contrail settings plugin.activate_plugin(self) # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() self.fuel_web.update_nodes( self.cluster_id, { 'slave-01': ['controller'], 'slave-02': ['compute', 'cinder'], 'slave-03': ['compute', 'cinder'], 'slave-04': ['base-os'], 'slave-05': ['contrail-config', 'contrail-control', 'contrail-db'], 'slave-06': ['contrail-config', 'contrail-control', 'contrail-db'], 'slave-07': ['contrail-config', 'contrail-control', 'contrail-db'], }) # deploy cluster openstack.deploy_cluster(self) if vsrx_setup_result: self.fuel_web.run_ostf(cluster_id=self.cluster_id)
def contrail_ha(self): """Check Contrail deploy on HA environment Scenario: 1. Create an environment with "Neutron with tunneling segmentation" as a network configuration and CEPH storage 2. Enable and configure Contrail plugin 3. Add 3 nodes with controller role 4. Add 2 nodes with "compute" and "Ceph-OSD" roles 5. Add a node with contrail-config role 6. Add a node with contrail-control role 7. Add a node with contrail-db role 8. Deploy cluster with plugin 9. Run OSTF tests Duration 120 min """ plugin.prepare_contrail_plugin( self, slaves=9, options={'images_ceph': True} ) # enable plugin in contrail settings plugin.activate_plugin(self) # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() self.fuel_web.update_nodes( self.cluster_id, { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller'], 'slave-04': ['compute', 'ceph-osd'], 'slave-05': ['compute', 'ceph-osd'], 'slave-06': ['contrail-config'], 'slave-07': ['contrail-control'], 'slave-08': ['contrail-db'], }) # deploy cluster openstack.deploy_cluster(self) if vsrx_setup_result: self.fuel_web.run_ostf(cluster_id=self.cluster_id)
def contrail_bvt(self): """BVT test for contrail plugin Deploy cluster with 1 controller, 1 compute, 3 contrail-config, contrail-control, contrail-db roles and install contrail plugin Scenario: 1. Revert snapshot "ready_with_9_slaves" 2. Create cluster 3. Add 3 nodes with contrail-db role 4. Add a node with contrail-config role 5. Add a node with contrail-control role 6. Add a node with with controller role 7. Add a node with compute + cinder role 8. Enable Contrail plugin 9. Deploy cluster with plugin 10. Create net and subnet 11. Run OSTF tests Duration 110 min """ plugin.prepare_contrail_plugin(self, slaves=9) # enable plugin in contrail settings plugin.activate_plugin(self) # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() self.fuel_web.update_nodes( self.cluster_id, { 'slave-01': ['contrail-config'], 'slave-02': ['contrail-control'], 'slave-03': ['contrail-db'], 'slave-04': ['contrail-db'], 'slave-05': ['contrail-db'], 'slave-06': ['controller'], 'slave-07': ['compute', 'cinder'], }) # deploy cluster openstack.deploy_cluster(self) if vsrx_setup_result: self.fuel_web.run_ostf(cluster_id=self.cluster_id)
def contrail_add_config(self): """Verify that Contrail config role can be added after deploying Scenario: 1. Create an environment with "Neutron with tunneling segmentation" as a network configuration 2. Enable and configure Contrail plugin 3. Add some controller, compute nodes 4. Add 1 node with "contrail-control", "contrail-config" and "contrail-db" roles 5. Deploy cluster 6. Run OSTF tests 7. Check Controller and Contrail nodes status 8. Add one node with "contrail-config" role 9. Deploy changes 10. Run OSTF tests 11. Check Controller and Contrail nodes status """ plugin.prepare_contrail_plugin(self, slaves=5) # enable plugin in contrail settings plugin.activate_plugin(self) # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() conf_nodes = { 'slave-01': ['controller'], 'slave-02': ['compute'], 'slave-03': ['contrail-control', 'contrail-config', 'contrail-db'], } conf_config = {'slave-04': ['contrail-config']} openstack.update_deploy_check(self, conf_nodes, is_vsrx=vsrx_setup_result) openstack.update_deploy_check(self, conf_config, is_vsrx=vsrx_setup_result)
def contrail_net_template(self): """Deploy cluster with Contrail plugin and network template Scenario: 1. Configure interfaces 2. Next we need to set gateway for private network with Fuel CLI: * Login with ssh to Fuel master node. * List existing network-groups fuel network-group --env 1 3. Remove and create again network-group *private* to set a gateway fuel network-group --delete --network 5 fuel network-group --create --name / private --cidr 10.109.3.0/24 --gateway 10.109.3.1 --nodegroup 1 4. Set the ``render_addr_mask`` parameter to `internal` for this network by typing: fuel network-group --set --network 6 --meta '{"name": "private", "notation": "cidr", "render_type": null, "map_priority": 2, "configurable": true, "use_gateway": true, "render_addr_mask": "internal", "vlan_start": null, "cidr": "10.109.3.0/24"}' 5. Save sample :download: `network template<examples/network_template_1.yaml>` 6. Upload the network template by typing: fuel --env 1 network-template --upload --dir /root/ 7. Start deploy, pressing "Deploy changes" button. """ plugin.prepare_contrail_plugin(self, slaves=5) # enable plugin in contrail settings plugin.activate_plugin(self) # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() self.fuel_web.update_nodes( self.cluster_id, { 'slave-01': ['controller'], 'slave-02': ['compute'], 'slave-03': ['contrail-config', 'contrail-control', 'contrail-db'], 'slave-04': ['contrail-config', 'contrail-control', 'contrail-db'], 'slave-05': ['contrail-config', 'contrail-control', 'contrail-db'], }, ) plugin.net_group_preparation(self) network_template = self.get_network_templ('network_template_1') self.fuel_web.client.upload_network_template( cluster_id=self.cluster_id, network_template=network_template) openstack.deploy_cluster(self) # run OSTF tests if vsrx_setup_result: self.fuel_web.run_ostf(cluster_id=self.cluster_id)
def contrail_ha_with_shutdown_contrail_node(self): """Verify HA with deleting Contrail roles Scenario: 1. Create an environment with "Neutron with tunneling segmentation" as a network configuration 2. Enable and configure Contrail plugin 3. Add some controller, compute and storage nodes 4. Add 4 nodes with "contrail-db", "contarail-config" and "contrail-control" roles 5. Deploy cluster 6. Run OSTF tests 7. Check Controller and Contrail nodes status 8. Shutdown node with 'contrail-db', "contarail-config" and "contrail-control" roles 9. Deploy changes 10. Run OSTF tests 11. Check Controller and Contrail nodes status """ plugin.prepare_contrail_plugin(self, slaves=9) plugin.activate_plugin(self) # enable plugin in contrail settings vsrx_setup_result = plugin.activate_vsrx() # activate vSRX image conf_no_contrail = { 'slave-01': ['controller'], 'slave-02': ['controller'], 'slave-03': ['controller'], 'slave-04': ['compute'], 'slave-05': ['cinder'], # Here slave-06 with contrail 'slave-07': ['contrail-db', 'contrail-config', 'contrail-control'], 'slave-08': ['contrail-db', 'contrail-config', 'contrail-control'], 'slave-09': ['contrail-db', 'contrail-config', 'contrail-control'], } conf_contrail = { 'slave-06': ['contrail-db', 'contrail-config', 'contrail-control'] } def check_node_state(cluster_id, node_name, node_state): """Checks node state by it's name""" for node in self.fuel_web.client.list_cluster_nodes(cluster_id): if node_name in node['name']: assert_equal( node['status'], node_state, 'Nailgun node status is not %s but %s' % (node_state, node['status'])) # Deploy cluster and run OSTF openstack.update_deploy_check(self, dict(conf_no_contrail, **conf_contrail), is_vsrx=vsrx_setup_result) # Check all nodes are 'ready' for node_name in dict(conf_no_contrail, **conf_contrail): check_node_state(self.cluster_id, node_name, 'ready') # Shutdown contrail node for node in self.fuel_web.client.list_cluster_nodes(self.cluster_id): if 'slave-06' in node['name']: logger.info('Shutdown node "%s"' % node['name']) self.fuel_web.warm_shutdown_nodes( self.fuel_web.get_devops_nodes_by_nailgun_nodes([node])) break # Run OSTF tests again if vsrx_setup_result: self.fuel_web.run_ostf(cluster_id=self.cluster_id) # Check controller and contrail nodes states node_roles = {'controller', 'contrail-config'} for node_name, roles in conf_no_contrail.items(): if node_roles & set(roles): check_node_state(self.cluster_id, node_name, 'ready')
def contrail_jumbo(self): """Check deploy contrail on an environment with jumbo-frames support Scenario: 1. Create an environment with "Neutron with tunneling segmentation" as a network configuration 2. Enable and configure Contrail plugin 3. Add a node with controller role 4. Add 2 nodes with "compute" and "Storage-Ceph OSD" roles 5. Add a node with "contrail-config", "contrail-control" and "contrail-db" roles 6. Add 2 nodes with "contrail-config", "contrail-control" roles 7. Configure MTU on network interfaces (Jumbo-frames) 8. Deploy cluster with plugin 9. Run OSTF tests Duration 120 min """ plugin.prepare_contrail_plugin( self, slaves=9, options={'images_ceph': True} ) jumbo = TestJumboFrames() devops_env = self.env.d_env private_bridge = devops_env.get_network(name='private').bridge_name() logger.info("Search for {0} interfaces for update". format(private_bridge)) # find private bridge interface bridge_interfaces = jumbo.get_host_bridge_ifaces(private_bridge) logger.info("Found {0} interfaces for update: {1}" .format(len(bridge_interfaces), bridge_interfaces)) # set MTU 9000 to private bridge interface for iface in bridge_interfaces: jumbo.set_host_iface_mtu(iface, 9000) logger.info("MTU of {0} was changed to 9000".format(iface)) logger.debug("New {0} interface properties:\n{1}" .format(iface, jumbo.get_host_iface(iface))) # enable plugin in contrail settings plugin.activate_plugin(self) interfaces = { 'eth0': ['fuelweb_admin'], 'eth1': ['public'], 'eth2': ['management'], 'eth3': ['private'], 'eth4': ['storage'], } interfaces_update = [{ 'name': 'eth3', 'interface_properties': { 'mtu': 9000, 'disable_offloading': False }, }] # activate vSRX image vsrx_setup_result = plugin.activate_vsrx() self.fuel_web.update_nodes( self.cluster_id, { 'slave-01': ['controller'], 'slave-02': ['compute', 'ceph-osd'], 'slave-03': ['compute', 'ceph-osd'], 'slave-04': ['contrail-config', 'contrail-control', 'contrail-db'], 'slave-05': ['contrail-config', 'contrail-control'], 'slave-06': ['contrail-config', 'contrail-control'], }) slave_nodes = \ self.fuel_web.client.list_cluster_nodes(self.cluster_id) for node in slave_nodes: self.fuel_web.update_node_networks( node['id'], interfaces, override_ifaces_params=interfaces_update) # deploy cluster openstack.deploy_cluster(self) if vsrx_setup_result: self.fuel_web.run_ostf(cluster_id=self.cluster_id) for node_name in ['slave-01', 'slave-02', 'slave-03', 'slave-04', 'slave-05', 'slave-06']: node = self.fuel_web.get_nailgun_node_by_name(node_name) with self.env.d_env.get_ssh_to_remote(node['ip']) as remote: asserts.assert_true( jumbo.check_node_iface_mtu(remote, "eth3", 9000), "MTU on {0} is not 9000. Actual value: {1}" .format(remote.host, jumbo.get_node_iface(remote, "eth3")))