From c1ab3a2d0bc4c06225742f02e9840f0ca7a61f87 Mon Sep 17 00:00:00 2001 From: Tatyana Leontovich Date: Thu, 29 Oct 2015 17:11:42 +0200 Subject: [PATCH] Get predifened net name from nailgun Neutron predefined network names like net04 and net04_ext can be modified, so we need get such data from nailgun Change-Id: Ia23ea08303d08abc9bcc31a7749ad23b34755997 Partial-Bug: #1349702 --- fuelweb_test/helpers/common.py | 5 ++- fuelweb_test/helpers/conf_tempest.py | 5 ++- fuelweb_test/helpers/os_actions.py | 5 ++- fuelweb_test/models/fuel_web_client.py | 24 +++++++--- fuelweb_test/tests/test_ceph.py | 18 +++++--- fuelweb_test/tests/test_jumbo_frames.py | 25 ++++++----- .../tests/test_node_reinstallation.py | 5 ++- .../tests_strength/test_failover_base.py | 7 ++- .../test_master_node_failover.py | 5 ++- .../tests/tests_strength/test_neutron_base.py | 44 ++++++++++++------- 10 files changed, 97 insertions(+), 46 deletions(-) diff --git a/fuelweb_test/helpers/common.py b/fuelweb_test/helpers/common.py index 3fecf2861..b51a70cf7 100644 --- a/fuelweb_test/helpers/common.py +++ b/fuelweb_test/helpers/common.py @@ -104,7 +104,7 @@ class Common(object): def create_instance(self, flavor_name='test_flavor', ram=64, vcpus=1, disk=1, server_name='test_instance', image_name=None, - neutron_network=True): + neutron_network=True, label=None): LOGGER.debug('Try to create instance') start_time = time.time() @@ -123,7 +123,8 @@ class Common(object): kwargs = {} if neutron_network: - network = self.nova.networks.find(label='net04') + net_label = label if label else 'net04' + network = self.nova.networks.find(label=net_label) kwargs['nics'] = [{'net-id': network.id, 'v4-fixed-ip': ''}] LOGGER.info('image uuid is {0}'.format(image)) diff --git a/fuelweb_test/helpers/conf_tempest.py b/fuelweb_test/helpers/conf_tempest.py index a06060bb2..45304ed9f 100644 --- a/fuelweb_test/helpers/conf_tempest.py +++ b/fuelweb_test/helpers/conf_tempest.py @@ -31,7 +31,6 @@ class TempestConfigState(object): 'alt_username': 'alt_test', 'alt_password': 'alt_test', 'alt_tenant_name': 'alt_test', - 'public_network_name': 'net04_ext', 'image_name': 'TestVM'} def __init__(self, admin_ip, cluster_id, @@ -74,6 +73,10 @@ class TempestConfigState(object): self.options['internal_cidr'] = cidr _, self.options['internal_mask'] = cidr.split('/') self.options['management_vip'] = network_attrs['management_vip'] + self.options['public_network_name'] = networking_params.get( + 'floating_name', 'net04_ext') + self.options['private_network_name'] = networking_params.get( + 'internal_name', 'net04') def configure_openstack(self): """ diff --git a/fuelweb_test/helpers/os_actions.py b/fuelweb_test/helpers/os_actions.py index b55a1a9f2..e0290cf97 100644 --- a/fuelweb_test/helpers/os_actions.py +++ b/fuelweb_test/helpers/os_actions.py @@ -66,7 +66,7 @@ class OpenStackActions(common.Common): def create_server_for_migration(self, neutron=True, scenario='', timeout=100, file=None, key_name=None, - **kwargs): + label=None, **kwargs): name = "test-serv" + str(random.randint(1, 0x7fffffff)) security_group = {} try: @@ -83,8 +83,9 @@ class OpenStackActions(common.Common): self.keystone.tenant_id].name] if neutron: + net_label = label if label else 'net04' network = [net.id for net in self.nova.networks.list() - if net.label == 'net04'] + if net.label == net_label] kwargs.update({'nics': [{'net-id': network[0]}], 'security_groups': security_group}) diff --git a/fuelweb_test/models/fuel_web_client.py b/fuelweb_test/models/fuel_web_client.py index 0ad01adac..872c7d4d4 100644 --- a/fuelweb_test/models/fuel_web_client.py +++ b/fuelweb_test/models/fuel_web_client.py @@ -726,11 +726,20 @@ class FuelWebClient(object): logger.info('Launch deployment of a cluster #%s', cluster_id) return self.client.deploy_cluster_changes(cluster_id) + @logwrap + def get_cluster_predefined_networks_name(self, cluster_id): + net_params = self.client.get_networks( + cluster_id)['networking_parameters'] + return {'private_net': net_params.get('internal_name', 'net04'), + 'external_net': net_params.get('floating_name', 'net04_ext')} + @logwrap def get_cluster_floating_list(self, os_conn, cluster_id): logger.info('Get floating IPs list at cluster #{0}'.format(cluster_id)) - subnet = os_conn.get_subnet('net04_ext__subnet') + subnet = os_conn.get_subnet('{0}__subnet'.format( + self.get_cluster_predefined_networks_name( + cluster_id)['external_net'])) ret = [] for pool in subnet['allocation_pools']: ip = ipaddr.IPv4Address(pool['start']) @@ -2012,12 +2021,15 @@ class FuelWebClient(object): elif net_provider == 'neutron': nailgun_cidr = self.get_nailgun_cidr_neutron(cluster_id) logger.debug('nailgun cidr is {0}'.format(nailgun_cidr)) - subnet = os_conn.get_subnet('net04__subnet') - logger.debug('net04__subnet: {0}'.format( + private_net_name = self.get_cluster_predefined_networks_name( + cluster_id)['private_net'] + subnet = os_conn.get_subnet('{0}__subnet'.format(private_net_name)) + logger.debug('subnet of pre-defined fixed network: {0}'.format( subnet)) - assert_true(subnet, "net04__subnet does not exists") - logger.debug('cidr net04__subnet: {0}'.format( - subnet['cidr'])) + assert_true(subnet, '{0}__subnet does not exists'.format( + private_net_name)) + logger.debug('cidr {0}__subnet: {1}'.format( + private_net_name, subnet['cidr'])) assert_equal(nailgun_cidr, subnet['cidr'].rstrip(), 'Cidr after deployment is not equal' ' to cidr by default') diff --git a/fuelweb_test/tests/test_ceph.py b/fuelweb_test/tests/test_ceph.py index 3c0436d59..3a5e3ce3e 100644 --- a/fuelweb_test/tests/test_ceph.py +++ b/fuelweb_test/tests/test_ceph.py @@ -353,8 +353,10 @@ class CephHA(TestBasic): # Check resources addition # create instance + net_name = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] server = os_conn.create_instance( - neutron_network=True) + neutron_network=True, label=net_name) # create flavor flavor = os_conn.create_flavor('openstackstat', 1024, 1, 1) @@ -621,19 +623,24 @@ class VmBackedWithCephMigrationBasic(TestBasic): # Create new server os = os_actions.OpenStackActions( self.fuel_web.get_public_vip(cluster_id)) + net_name = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] logger.info("Create new server") srv = os.create_server_for_migration( neutron=True, - scenario='./fuelweb_test/helpers/instance_initial_scenario') + scenario='./fuelweb_test/helpers/instance_initial_scenario', + label=net_name) logger.info("Srv is currently in status: %s" % srv.status) # Prepare to DHCP leases checks - srv_instance_ip = os.get_nova_instance_ip(srv, net_name='net04') + net_name = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] + srv_instance_ip = os.get_nova_instance_ip(srv, net_name=net_name) srv_host_name = self.fuel_web.find_devops_node_by_nailgun_fqdn( os.get_srv_hypervisor_name(srv), self.env.d_env.nodes().slaves[:3]).name - net_id = os.get_network('net04')['id'] + net_id = os.get_network(net_name)['id'] ports = os.get_neutron_dhcp_ports(net_id) dhcp_server_ip = ports[0]['fixed_ips'][0]['ip_address'] with self.fuel_web.get_ssh_for_node(srv_host_name) as srv_remote_node: @@ -714,7 +721,8 @@ class VmBackedWithCephMigrationBasic(TestBasic): logger.info("Create a new server for migration with volume") srv = os.create_server_for_migration( neutron=True, - scenario='./fuelweb_test/helpers/instance_initial_scenario') + scenario='./fuelweb_test/helpers/instance_initial_scenario', + label=net_name) logger.info("Srv is currently in status: %s" % srv.status) logger.info("Assigning floating ip to server") diff --git a/fuelweb_test/tests/test_jumbo_frames.py b/fuelweb_test/tests/test_jumbo_frames.py index 9a06d97e8..0e13aad99 100644 --- a/fuelweb_test/tests/test_jumbo_frames.py +++ b/fuelweb_test/tests/test_jumbo_frames.py @@ -62,10 +62,10 @@ class TestJumboFrames(base_test_case.TestBasic): return ifaces - def boot_instance_on_node(self, hypervisor_name, boot_timeout=300): + def boot_instance_on_node(self, hypervisor_name, label, boot_timeout=300): instance = self.os_conn.create_server_for_migration( neutron=True, - availability_zone="nova:{0}".format(hypervisor_name)) + availability_zone="nova:{0}".format(hypervisor_name), label=label) logger.info("New instance {0} created on {1}" .format(instance.id, hypervisor_name)) @@ -84,12 +84,13 @@ class TestJumboFrames(base_test_case.TestBasic): def ping_instance_from_instance(self, source_instance, destination_instance, - size, count=1): + size, count=1, net_name=None): creds = ("cirros", "cubswin:)") + net = net_name if net_name else 'net04' source_floating_ip = self.os_conn.get_nova_instance_ip( - source_instance, net_name='net04', type='floating') + source_instance, net_name=net, type='floating') destination_fixed_ip = self.os_conn.get_nova_instance_ip( - destination_instance, net_name='net04', type='fixed') + destination_instance, net_name=net, type='fixed') with self.fuel_web.get_ssh_for_node("slave-01") as ssh: command = "ping -c {0} -s {1} {2}"\ @@ -130,9 +131,12 @@ class TestJumboFrames(base_test_case.TestBasic): self.fuel_web.get_public_vip(cluster_id)) instances = [] + fixed_net_name = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] for hypervisor in self.os_conn.get_hypervisors(): instances.append( - self.boot_instance_on_node(hypervisor.hypervisor_hostname)) + self.boot_instance_on_node(hypervisor.hypervisor_hostname, + label=fixed_net_name)) source_instance = instances[0] for destination_instance in instances[1:]: @@ -140,28 +144,29 @@ class TestJumboFrames(base_test_case.TestBasic): self.ping_instance_from_instance( source_instance=source_instance, destination_instance=destination_instance, - size=1472 - mtu_offset, count=3), + size=1472 - mtu_offset, count=3, net_name=fixed_net_name), "Ping response was not received for 1500 bytes package") asserts.assert_true( self.ping_instance_from_instance( source_instance=source_instance, destination_instance=destination_instance, - size=8972 - mtu_offset, count=3), + size=8972 - mtu_offset, count=3, net_name=fixed_net_name), "Ping response was not received for 9000 bytes package") asserts.assert_false( self.ping_instance_from_instance( source_instance=source_instance, destination_instance=destination_instance, - size=8973 - mtu_offset, count=3), + size=8973 - mtu_offset, count=3, net_name=fixed_net_name), "Ping response was received for 9001 bytes package") asserts.assert_false( self.ping_instance_from_instance( source_instance=source_instance, destination_instance=destination_instance, - size=14472 - mtu_offset, count=3), + size=14472 - mtu_offset, count=3, + net_name=fixed_net_name), "Ping response was received for 15000 bytes package") for instance in instances: diff --git a/fuelweb_test/tests/test_node_reinstallation.py b/fuelweb_test/tests/test_node_reinstallation.py index 299db3d02..691d0bd9b 100644 --- a/fuelweb_test/tests/test_node_reinstallation.py +++ b/fuelweb_test/tests/test_node_reinstallation.py @@ -500,10 +500,13 @@ class PartitionPreservation(TestBasic): cmp_host = os_conn.get_hypervisors()[0] + net_label = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] + vm = os_conn.create_server_for_migration( neutron=True, availability_zone="nova:{0}".format( - cmp_host.hypervisor_hostname)) + cmp_host.hypervisor_hostname), label=net_label) vm_floating_ip = os_conn.assign_floating_ip(vm) devops_helpers.wait( lambda: devops_helpers.tcp_ping(vm_floating_ip.ip, 22), diff --git a/fuelweb_test/tests/tests_strength/test_failover_base.py b/fuelweb_test/tests/tests_strength/test_failover_base.py index afcb9f762..06491aed3 100644 --- a/fuelweb_test/tests/tests_strength/test_failover_base.py +++ b/fuelweb_test/tests/tests_strength/test_failover_base.py @@ -697,9 +697,12 @@ class TestHaFailoverBase(TestBasic): public_vip = self.fuel_web.get_public_vip(cluster_id) os_conn = os_actions.OpenStackActions(public_vip) + net_label = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] + # Create instance - instance = os_conn.create_server_for_migration(neutron=True) \ - if net_provider == 'neutron' \ + instance = os_conn.create_server_for_migration( + neutron=True, label=net_label) if net_provider == 'neutron' \ else os_conn.create_server_for_migration() # Check ping diff --git a/fuelweb_test/tests/tests_strength/test_master_node_failover.py b/fuelweb_test/tests/tests_strength/test_master_node_failover.py index 10a39d915..ddebd77af 100644 --- a/fuelweb_test/tests/tests_strength/test_master_node_failover.py +++ b/fuelweb_test/tests/tests_strength/test_master_node_failover.py @@ -97,6 +97,8 @@ class DeployHAOneControllerMasterNodeFail(base_test_case.TestBasic): os_conn = os_actions.OpenStackActions(controller_ip) self.fuel_web.assert_cluster_ready(os_conn, smiles_count=5) + net_name = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] self.fuel_web.verify_network(cluster_id) logger.info('PASS DEPLOYMENT') @@ -116,7 +118,8 @@ class DeployHAOneControllerMasterNodeFail(base_test_case.TestBasic): settings.SERVTEST_TENANT) # create instance - server = common_func.create_instance(neutron_network=True) + server = common_func.create_instance(neutron_network=True, + label=net_name) # get_instance details details = common_func.get_instance_detail(server) diff --git a/fuelweb_test/tests/tests_strength/test_neutron_base.py b/fuelweb_test/tests/tests_strength/test_neutron_base.py index 02460ff38..c56a7c4c7 100644 --- a/fuelweb_test/tests/tests_strength/test_neutron_base.py +++ b/fuelweb_test/tests/tests_strength/test_neutron_base.py @@ -45,8 +45,9 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): @staticmethod @logwrap - def create_instance_with_keypair(os_conn, key_name): - return os_conn.create_server_for_migration(key_name=key_name) + def create_instance_with_keypair(os_conn, key_name, label): + return os_conn.create_server_for_migration(key_name=key_name, + label=label) @staticmethod @logwrap @@ -173,7 +174,9 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): cluster_id = self.fuel_web.get_last_created_cluster() os_conn = os_actions.OpenStackActions( self.fuel_web.get_public_vip(cluster_id)) - net_id = os_conn.get_network('net04')['id'] + net_name = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] + net_id = os_conn.get_network(net_name)['id'] router_id = os_conn.get_routers_ids()[0] devops_node = self.get_node_with_dhcp(os_conn, net_id) _ip = self.fuel_web.get_nailgun_node_by_name(devops_node.name)['ip'] @@ -182,7 +185,8 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): # create instance for check neutron migration processes instance_ip = self.create_instance_with_keypair( - os_conn, instance_keypair.name).addresses['net04'][0]['addr'] + os_conn, instance_keypair.name, + label=net_name).addresses[net_name][0]['addr'] with self.env.d_env.get_ssh_to_remote(_ip) as remote: dhcp_namespace = ''.join(remote.execute( @@ -205,7 +209,7 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): # Reshedule router for net for created instance to new controller self.reshedule_router_manually(os_conn, router_id) - # Get remote to the controller with running DHCP agent for net04 + # Get remote to the controller with running DHCP agent with self.env.d_env.get_ssh_to_remote(_ip) as remote: dhcp_namespace = ''.join(remote.execute( 'ip netns | grep {0}'.format(net_id))['stdout']).rstrip() @@ -253,7 +257,9 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): cluster_id = self.fuel_web.get_last_created_cluster() os_conn = os_actions.OpenStackActions( self.fuel_web.get_public_vip(cluster_id)) - net_id = os_conn.get_network('net04')['id'] + net_name = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] + net_id = os_conn.get_network(net_name)['id'] devops_node = self.get_node_with_dhcp(os_conn, net_id) instance_keypair = os_conn.create_key(key_name='instancekey') router_id = os_conn.get_routers_ids()[0] @@ -261,13 +267,14 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): # create instance for check neutron migration processes instance_ip = self.create_instance_with_keypair( - os_conn, instance_keypair.name).addresses['net04'][0]['addr'] + os_conn, instance_keypair.name, + label=net_name).addresses[net_name][0]['addr'] logger.debug('instance internal ip is {0}'.format(instance_ip)) # Reshedule router for net for created instance to new controller self.reshedule_router_manually(os_conn, router_id) - # Get remote to the controller with running DHCP agent for net04 + # Get remote to the controller with running DHCP agent with self.env.d_env.get_ssh_to_remote(_ip) as remote: dhcp_namespace = ''.join(remote.execute( 'ip netns | grep {0}'.format(net_id))['stdout']).rstrip() @@ -309,12 +316,12 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): router_id)[0], timeout=60 * 3, timeout_msg=err_msg.format(node_with_l3)) - # Find host with dhcp agent for net04 network + # Find host with dhcp agent for private network # after reset one of controllers devops_node = self.get_node_with_dhcp(os_conn, net_id) _ip = self.fuel_web.get_nailgun_node_by_devops_node(devops_node)['ip'] - # Get remote to the controller with running DHCP agent for net04 + # Get remote to the controller with running DHCP agent with self.env.d_env.get_ssh_to_remote(_ip) as remote: # Check connect to public network from instance after # reset controller with l3 agent from this instance @@ -332,7 +339,9 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): cluster_id = self.fuel_web.get_last_created_cluster() os_conn = os_actions.OpenStackActions( self.fuel_web.get_public_vip(cluster_id)) - net_id = os_conn.get_network('net04')['id'] + net_name = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] + net_id = os_conn.get_network(net_name)['id'] router_id = os_conn.get_routers_ids()[0] devops_node = self.get_node_with_dhcp(os_conn, net_id) _ip = self.fuel_web.get_nailgun_node_by_name(devops_node.name)['ip'] @@ -340,13 +349,14 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): # create instance for check neutron migration processes instance_ip = self.create_instance_with_keypair( - os_conn, instance_keypair.name).addresses['net04'][0]['addr'] + os_conn, instance_keypair.name, + label=net_name).addresses[net_name][0]['addr'] logger.debug('instance internal ip is {0}'.format(instance_ip)) # Reshedule router for net for created instance to new controller self.reshedule_router_manually(os_conn, router_id) - # Get remote to the controller with running DHCP agent for net04 + # Get remote to the controller with running DHCP agent with self.env.d_env.get_ssh_to_remote(_ip) as remote: dhcp_namespace = ''.join(remote.execute( 'ip netns | grep {0}'.format(net_id))['stdout']).rstrip() @@ -391,7 +401,7 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): router_id)[0], timeout=60 * 3, timeout_msg=err_msg.format(node_with_l3)) - # Find host with dhcp agent for net04 network + # Find host with dhcp agent for private network # after reset one of controllers err_msg = ("Not found new controller node after destroy old " "controller node:{node} with dhcp for net:{net}") @@ -401,7 +411,7 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): _ip = self.fuel_web.get_nailgun_node_by_devops_node( new_devops_node)['ip'] - # Get remote to the controller with running DHCP agent for net04 + # Get remote to the controller with running DHCP agent with self.env.d_env.get_ssh_to_remote(_ip) as remote: # Check connect to public network from instance after # reset controller with l3 agent from this instance @@ -440,9 +450,11 @@ class TestNeutronFailoverBase(base_test_case.TestBasic): _ip = self.fuel_web.get_nailgun_node_by_name('slave-01')['ip'] # Size of the header in ICMP package in bytes ping_header_size = 28 + net_label = self.fuel_web.get_cluster_predefined_networks_name( + cluster_id)['private_net'] # Create instance with floating ip for check ping from ext network - instance = os_conn.create_server_for_migration() + instance = os_conn.create_server_for_migration(label=net_label) floating_ip = os_conn.assign_floating_ip( instance, use_neutron=True)['floating_ip_address'] logger.debug("Instance floating ip is {ip}".format(ip=floating_ip))