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
This commit is contained in:
Tatyana Leontovich 2015-10-29 17:11:42 +02:00
parent fefeefe961
commit c1ab3a2d0b
10 changed files with 97 additions and 46 deletions

View File

@ -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))

View File

@ -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):
"""

View File

@ -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})

View File

@ -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')

View File

@ -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")

View File

@ -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:

View File

@ -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),

View File

@ -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

View File

@ -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)

View File

@ -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))