Remove methods from openstack file.
-remove methods add_router, add_subnet_to_router, create_network, create_subnet from openstack file and replace them by methods from os_actions -fix D103 Change-Id: I9c370729057f3a43c9005b5347b28571ef242d51
This commit is contained in:
parent
07239bc2a5
commit
3362afb42b
@ -208,6 +208,7 @@ Steps
|
||||
* Controller
|
||||
* Compute + CephOSD
|
||||
* Compute + CephOSD
|
||||
* Compute + CephOSD
|
||||
* CinderVMware + ComputeVMware
|
||||
4. Configure interfaces on nodes.
|
||||
5. Configure network settings.
|
||||
|
@ -15,20 +15,23 @@ under the License.
|
||||
|
||||
from devops.error import TimeoutError
|
||||
|
||||
from devops.helpers.helpers import icmp_ping
|
||||
from devops.helpers.helpers import wait
|
||||
|
||||
from fuelweb_test import logger
|
||||
|
||||
from fuelweb_test.settings import SERVTEST_TENANT
|
||||
|
||||
import paramiko
|
||||
|
||||
from proboscis.asserts import assert_true
|
||||
|
||||
import yaml
|
||||
|
||||
# timeouts
|
||||
BOOT_TIMEOUT = 300
|
||||
|
||||
|
||||
def get_defaults():
|
||||
"""Get default parameters from config.yaml."""
|
||||
with open('plugin_test/helpers/config.yaml') as config:
|
||||
defaults = yaml.load(config.read())
|
||||
logger.info(''.format(defaults))
|
||||
@ -43,7 +46,7 @@ instance_creds = (
|
||||
|
||||
|
||||
def verify_instance_state(os_conn, instances=None, expected_state='ACTIVE',
|
||||
boot_timeout=300):
|
||||
boot_timeout=BOOT_TIMEOUT):
|
||||
"""Verify that current state of each instance/s is expected.
|
||||
|
||||
:param os_conn: type object, openstack
|
||||
@ -51,7 +54,6 @@ def verify_instance_state(os_conn, instances=None, expected_state='ACTIVE',
|
||||
:param expected_state: type string, expected state of instance
|
||||
:param boot_timeout: type int, time in seconds to build instance
|
||||
"""
|
||||
boot_timeout = 300
|
||||
if not instances:
|
||||
instances = os_conn.nova.servers.list()
|
||||
for instance in instances:
|
||||
@ -59,7 +61,7 @@ def verify_instance_state(os_conn, instances=None, expected_state='ACTIVE',
|
||||
wait(
|
||||
lambda:
|
||||
os_conn.get_instance_detail(instance).status == expected_state,
|
||||
timeout=boot_timeout)
|
||||
timeout=BOOT_TIMEOUT)
|
||||
except TimeoutError:
|
||||
current_state = os_conn.get_instance_detail(instance).status
|
||||
assert_true(
|
||||
@ -102,57 +104,76 @@ def create_instances(os_conn, nics, vm_count=1,
|
||||
return instances
|
||||
|
||||
|
||||
def check_connection_vms(os_conn, srv_list, remote, command='pingv4',
|
||||
def check_connection_vms(os_conn, fip, remote, command='pingv4',
|
||||
result_of_command=0,
|
||||
destination_ip=None):
|
||||
"""Check network connectivity between instances.
|
||||
|
||||
:param os_conn: type object, openstack
|
||||
:param srv_list: type list, instances
|
||||
:param packets: type int, packets count of icmp reply
|
||||
:param fip: type list, floating ips of instances
|
||||
:param remote: SSHClient to primary controller
|
||||
:param destination_ip: type list, remote destination ip to
|
||||
check by ping
|
||||
check by ping, by default is None
|
||||
:param command: type string, key from dictionary 'commands'
|
||||
by default is 'pingv4'
|
||||
:param result_of_command: type interger, exite code of command execution
|
||||
by default is 0
|
||||
"""
|
||||
commands = {
|
||||
"pingv4": "ping -c 5 {}",
|
||||
"pingv6": "ping6 -c 5 {}",
|
||||
"arping": "sudo arping -I eth0 {}"}
|
||||
|
||||
for srv in srv_list:
|
||||
addresses = srv.addresses[srv.addresses.keys()[0]]
|
||||
fip = [
|
||||
add['addr']
|
||||
for add in addresses
|
||||
if add['OS-EXT-IPS:type'] == 'floating'][0]
|
||||
if not destination_ip:
|
||||
ip_pair = [
|
||||
(ip_1, ip_2)
|
||||
for ip_1 in fip
|
||||
for ip_2 in fip
|
||||
if ip_1 != ip_2]
|
||||
else:
|
||||
ip_pair = [
|
||||
(ip_1, ip_2)
|
||||
for ip_1 in fip
|
||||
for ip_2 in destination_ip]
|
||||
for ips in ip_pair:
|
||||
logger.info("Connect to VM {0}".format(ips[0]))
|
||||
command_result = os_conn.execute_through_host(
|
||||
remote, ips[0],
|
||||
commands[command].format(ips[1]), instance_creds)
|
||||
|
||||
if not destination_ip:
|
||||
destination_ip = [s.networks[s.networks.keys()[0]][0]
|
||||
for s in srv_list if s != srv]
|
||||
assert_true(
|
||||
result_of_command == command_result['exit_code'],
|
||||
" Command {0} from Vm {1},"
|
||||
" executed with code {2}".format(
|
||||
commands[command].format(ips[1]),
|
||||
ips[0], command_result)
|
||||
)
|
||||
|
||||
for ip in destination_ip:
|
||||
if ip != srv.networks[srv.networks.keys()[0]][0]:
|
||||
logger.info("Connect to VM {0}".format(fip))
|
||||
command_result = os_conn.execute_through_host(
|
||||
remote, fip,
|
||||
commands[command].format(ip), instance_creds)
|
||||
logger.info("Command result: \n"
|
||||
"{0}\n"
|
||||
"{1}\n"
|
||||
"exit_code={2}"
|
||||
.format(command_result['stdout'],
|
||||
command_result['stderr'],
|
||||
command_result['exit_code']))
|
||||
assert_true(
|
||||
result_of_command == command_result['exit_code'],
|
||||
" Command {0} from Vm {1},"
|
||||
" executed with code {2}".format(
|
||||
commands[command].format(ip),
|
||||
fip, command_result)
|
||||
)
|
||||
|
||||
def create_and_assign_floating_ips(os_conn, instances_list):
|
||||
"""Create Vms on available hypervisors.
|
||||
|
||||
:param os_conn: type object, openstack
|
||||
:param instances_list: type list, instances
|
||||
"""
|
||||
fips = []
|
||||
for instance in instances_list:
|
||||
ip = os_conn.assign_floating_ip(
|
||||
instance).ip
|
||||
fips.append(ip)
|
||||
wait(lambda: icmp_ping(ip), timeout=60 * 3, interval=5)
|
||||
return fips
|
||||
|
||||
|
||||
def get_ssh_connection(ip, username, userpassword, timeout=30, port=22):
|
||||
"""Get ssh to host.
|
||||
|
||||
:param ip: string, host ip to connect to
|
||||
:param username: string, a username to use for authentication
|
||||
:param userpassword: string, a password to use for authentication
|
||||
:param timeout: timeout (in seconds) for the TCP connection
|
||||
:param port: host port to connect to
|
||||
"""
|
||||
ssh = paramiko.SSHClient()
|
||||
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
ssh.connect(
|
||||
@ -162,34 +183,6 @@ def get_ssh_connection(ip, username, userpassword, timeout=30, port=22):
|
||||
return ssh
|
||||
|
||||
|
||||
def check_ssh_between_instances(instance1_ip, instance2_ip):
|
||||
"""Check ssh conection between instances.
|
||||
|
||||
:param instance1: string, instance ip connect from
|
||||
:param instance2: string, instance ip connect to
|
||||
"""
|
||||
ssh = get_ssh_connection(instance1_ip, instance_creds[0],
|
||||
instance_creds[1], timeout=30)
|
||||
|
||||
interm_transp = ssh.get_transport()
|
||||
logger.info("Opening channel to VM")
|
||||
logger.info('{0}, {1}'.format(instance2_ip, instance1_ip))
|
||||
interm_chan = interm_transp.open_channel('direct-tcpip',
|
||||
(instance2_ip, 22),
|
||||
(instance1_ip, 0))
|
||||
logger.info("Opening paramiko transport")
|
||||
transport = paramiko.Transport(interm_chan)
|
||||
logger.info("Starting client")
|
||||
transport.start_client()
|
||||
logger.info("Passing authentication to VM")
|
||||
transport.auth_password(
|
||||
instance_creds[0], instance_creds[1])
|
||||
channel = transport.open_session()
|
||||
assert_true(channel.send_ready())
|
||||
logger.debug("Closing channel")
|
||||
channel.close()
|
||||
|
||||
|
||||
def remote_execute_command(instance1_ip, instance2_ip, command):
|
||||
"""Check execute remote command.
|
||||
|
||||
@ -236,92 +229,8 @@ def remote_execute_command(instance1_ip, instance2_ip, command):
|
||||
return result
|
||||
|
||||
|
||||
def create_and_assign_floating_ip(os_conn, srv_list=None,
|
||||
ext_net=None, tenant_id=None):
|
||||
"""Create Vms on available hypervisors.
|
||||
|
||||
:param os_conn: type object, openstack
|
||||
:param srv_list: type list, objects of created instances
|
||||
:param ext_net: type object, neutron external network
|
||||
:param tenant_id: type string, tenant id
|
||||
"""
|
||||
if not ext_net:
|
||||
ext_net = [net for net
|
||||
in os_conn.neutron.list_networks()["networks"]
|
||||
if net['name'] == external_net_name][0]
|
||||
if not tenant_id:
|
||||
tenant_id = os_conn.get_tenant(SERVTEST_TENANT).id
|
||||
|
||||
if not srv_list:
|
||||
srv_list = os_conn.get_servers()
|
||||
for srv in srv_list:
|
||||
fip = os_conn.neutron.create_floatingip(
|
||||
{'floatingip': {
|
||||
'floating_network_id': ext_net['id'],
|
||||
'tenant_id': tenant_id}})
|
||||
os_conn.nova.servers.add_floating_ip(
|
||||
srv, fip['floatingip']['floating_ip_address']
|
||||
)
|
||||
|
||||
|
||||
def add_router(os_conn, router_name, ext_net_name=external_net_name,
|
||||
tenant_name=SERVTEST_TENANT):
|
||||
"""Create router with gateway.
|
||||
|
||||
:param router_name: type string
|
||||
:param ext_net_name: type string
|
||||
:param tenant_name: type string
|
||||
"""
|
||||
ext_net = [net for net
|
||||
in os_conn.neutron.list_networks()["networks"]
|
||||
if net['name'] == ext_net_name][0]
|
||||
|
||||
gateway = {"network_id": ext_net["id"],
|
||||
"enable_snat": True
|
||||
}
|
||||
tenant_id = os_conn.get_tenant(tenant_name).id
|
||||
router_param = {'router': {'name': router_name,
|
||||
'external_gateway_info': gateway,
|
||||
'tenant_id': tenant_id}}
|
||||
router = os_conn.neutron.create_router(body=router_param)['router']
|
||||
return router
|
||||
|
||||
|
||||
def add_subnet_to_router(os_conn, router_id, sub_id):
|
||||
os_conn.neutron.add_interface_router(
|
||||
router_id,
|
||||
{'subnet_id': sub_id}
|
||||
)
|
||||
|
||||
|
||||
def create_network(os_conn, name,
|
||||
tenant_name=SERVTEST_TENANT):
|
||||
tenant_id = os_conn.get_tenant(tenant_name).id
|
||||
|
||||
net_body = {"network": {"name": name,
|
||||
"tenant_id": tenant_id
|
||||
}
|
||||
}
|
||||
network = os_conn.neutron.create_network(net_body)['network']
|
||||
return network
|
||||
|
||||
|
||||
def create_subnet(os_conn, network,
|
||||
cidr, tenant_name=SERVTEST_TENANT):
|
||||
tenant_id = os_conn.get_tenant(tenant_name).id
|
||||
subnet_body = {"subnet": {"network_id": network['id'],
|
||||
"ip_version": 4,
|
||||
"cidr": cidr,
|
||||
"name": 'subnet_{}'.format(
|
||||
network['name'][-1]),
|
||||
"tenant_id": tenant_id
|
||||
}
|
||||
}
|
||||
subnet = os_conn.neutron.create_subnet(subnet_body)['subnet']
|
||||
return subnet
|
||||
|
||||
|
||||
def get_role(os_conn, role_name):
|
||||
"""Get role by name."""
|
||||
role_list = os_conn.keystone.roles.list()
|
||||
for role in role_list:
|
||||
if role.name == role_name:
|
||||
@ -330,6 +239,13 @@ def get_role(os_conn, role_name):
|
||||
|
||||
|
||||
def add_role_to_user(os_conn, user_name, role_name, tenant_name):
|
||||
"""Assign role to user.
|
||||
|
||||
:param os_conn: type object
|
||||
:param user_name: type string,
|
||||
:param role_name: type string
|
||||
:param tenant_name: type string
|
||||
"""
|
||||
tenant_id = os_conn.get_tenant(tenant_name).id
|
||||
user_id = os_conn.get_user(user_name).id
|
||||
role_id = get_role(os_conn, role_name).id
|
||||
@ -362,7 +278,6 @@ def create_volume(os_conn, availability_zone, size=1,
|
||||
:param expected_state: type string, expected state of instance
|
||||
:param size: type int, size of volume
|
||||
"""
|
||||
boot_timeout = 300
|
||||
images_list = os_conn.nova.images.list()
|
||||
image = [
|
||||
image for image
|
||||
@ -372,7 +287,7 @@ def create_volume(os_conn, availability_zone, size=1,
|
||||
size=size, imageRef=image.id, availability_zone=availability_zone)
|
||||
wait(
|
||||
lambda: os_conn.cinder.volumes.get(volume.id).status == expected_state,
|
||||
timeout=boot_timeout)
|
||||
timeout=BOOT_TIMEOUT)
|
||||
logger.info("Created volume: '{0}', parent image: '{1}'"
|
||||
.format(volume.id, image.id))
|
||||
return volume
|
||||
|
@ -31,6 +31,7 @@ from fuelweb_test.settings import SERVTEST_USERNAME
|
||||
|
||||
from fuelweb_test.tests.base_test_case import SetupEnvironment
|
||||
from fuelweb_test.tests.base_test_case import TestBasic
|
||||
from tests.test_plugin_vmware_dvs_system import TestDVSSystem
|
||||
|
||||
from helpers import openstack
|
||||
from helpers import plugin
|
||||
@ -54,84 +55,30 @@ class TestDVSDestructive(TestBasic):
|
||||
"""Get node by name."""
|
||||
return self.fuel_web.get_nailgun_node_by_name(name_node)['hostname']
|
||||
|
||||
# constants
|
||||
cmds = ['nova-manage service list | grep vcenter-vmcluster1',
|
||||
'nova-manage service list | grep vcenter-vmcluster2']
|
||||
|
||||
net_data = [{'net_1': '192.168.112.0/24'},
|
||||
{'net_2': '192.168.113.0/24'}]
|
||||
# defaults
|
||||
inter_net_name = openstack.get_defaults()['networks']['internal']['name']
|
||||
ext_net_name = openstack.get_defaults()['networks']['floating']['name']
|
||||
|
||||
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
|
||||
groups=["dvs_vcenter_destructive_setup", "dvs_vcenter_plugin"])
|
||||
@log_snapshot_after_test
|
||||
def dvs_vcenter_destructive_setup(self):
|
||||
"""Deploy cluster with plugin and vmware datastore backend.
|
||||
|
||||
Scenario:
|
||||
1. Upload plugins to the master node
|
||||
2. Install plugin.
|
||||
3. Create cluster with vcenter.
|
||||
4. Add 1 node with controller role.
|
||||
5. Add 1 node with compute role.
|
||||
6. Add 1 node with compute-vmware role.
|
||||
7. Deploy the cluster.
|
||||
8. Run OSTF.
|
||||
|
||||
Duration: 1.8 hours
|
||||
|
||||
"""
|
||||
self.env.revert_snapshot("ready_with_5_slaves")
|
||||
|
||||
plugin.install_dvs_plugin(
|
||||
self.env.d_env.get_admin_remote())
|
||||
|
||||
# Configure cluster with 2 vcenter clusters and vcenter glance
|
||||
cluster_id = self.fuel_web.create_cluster(
|
||||
name=self.__class__.__name__,
|
||||
mode=DEPLOYMENT_MODE,
|
||||
settings={
|
||||
"net_provider": 'neutron',
|
||||
"net_segment_type": NEUTRON_SEGMENT_TYPE,
|
||||
'images_vcenter': True
|
||||
}
|
||||
)
|
||||
plugin.enable_plugin(cluster_id, self.fuel_web)
|
||||
|
||||
# Assign role to node
|
||||
self.fuel_web.update_nodes(
|
||||
cluster_id,
|
||||
{'slave-01': ['controller'],
|
||||
'slave-02': ['compute-vmware'],
|
||||
'slave-03': ['compute']
|
||||
}
|
||||
)
|
||||
|
||||
# Configure VMWare vCenter settings
|
||||
target_node_2 = self.node_name('slave-02')
|
||||
self.fuel_web.vcenter_configure(
|
||||
cluster_id,
|
||||
target_node_2=target_node_2,
|
||||
multiclusters=True,
|
||||
vc_glance=True
|
||||
)
|
||||
|
||||
self.fuel_web.deploy_cluster_wait(cluster_id)
|
||||
|
||||
self.fuel_web.run_ostf(
|
||||
cluster_id=cluster_id, test_sets=['smoke'])
|
||||
|
||||
self.env.make_snapshot("dvs_vcenter_destructive_setup", is_make=True)
|
||||
|
||||
@test(depends_on=[dvs_vcenter_destructive_setup],
|
||||
@test(depends_on=[TestDVSSystem.dvs_vcenter_systest_setup],
|
||||
groups=["dvs_vcenter_uninstall", 'dvs_vcenter_system'])
|
||||
@log_snapshot_after_test
|
||||
def dvs_vcenter_uninstall(self):
|
||||
"""Negative uninstall of Fuel DVS plugin with deployed environment.
|
||||
|
||||
Scenario:
|
||||
1. Revert snapshot to dvs_vcenter_destructive_setup.
|
||||
1. Revert snapshot to dvs_vcenter_systest_setup.
|
||||
2. Try to uninstall dvs plugin.
|
||||
|
||||
Duration: 1.8 hours
|
||||
|
||||
"""
|
||||
self.env.revert_snapshot("dvs_vcenter_destructive_setup")
|
||||
self.env.revert_snapshot("dvs_vcenter_systest_setup")
|
||||
|
||||
# Try to uninstall dvs plugin
|
||||
cmd = 'fuel plugins --remove {0}=={1}'.format(
|
||||
@ -148,8 +95,8 @@ class TestDVSDestructive(TestBasic):
|
||||
"Plugin is removed {}".format(plugin.plugin_name)
|
||||
)
|
||||
|
||||
@test(depends_on=[dvs_vcenter_destructive_setup],
|
||||
groups=["dvs_vcenter_bind_port", "dvs_vcenter_destructive_setup"])
|
||||
@test(depends_on=[TestDVSSystem.dvs_vcenter_systest_setup],
|
||||
groups=["dvs_vcenter_bind_port"])
|
||||
@log_snapshot_after_test
|
||||
def dvs_vcenter_bind_port(self):
|
||||
"""Check abilities to bind port on DVS to VM, disable/enable this port.
|
||||
@ -171,7 +118,7 @@ class TestDVSDestructive(TestBasic):
|
||||
Duration: 1,5 hours
|
||||
|
||||
"""
|
||||
self.env.revert_snapshot("dvs_vcenter_destructive_setup")
|
||||
self.env.revert_snapshot("dvs_vcenter_systest_setup")
|
||||
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
|
||||
@ -185,74 +132,86 @@ class TestDVSDestructive(TestBasic):
|
||||
# create security group with rules for ssh and ping
|
||||
security_group = os_conn.create_sec_group_for_ssh()
|
||||
|
||||
logger.info("Create non default network with subnet.")
|
||||
logger.info('Create network {}'.format(self.net_data[0].keys()[0]))
|
||||
network = os_conn.create_network(
|
||||
network_name=self.net_data[0].keys()[0])['network']
|
||||
|
||||
subnet = os_conn.create_subnet(
|
||||
subnet_name=network['name'],
|
||||
network_id=network['id'],
|
||||
cidr=self.net_data[0][self.net_data[0].keys()[0]])
|
||||
|
||||
logger.info("Check that network are created.")
|
||||
assert_true(
|
||||
os_conn.get_network(network['name'])['id'] == network['id']
|
||||
)
|
||||
|
||||
logger.info("Add net_1 to default router")
|
||||
router = os_conn.get_router(os_conn.get_network(self.ext_net_name))
|
||||
os_conn.add_router_interface(
|
||||
router_id=router["id"],
|
||||
subnet_id=subnet["id"])
|
||||
|
||||
# Launch instance VM_1 and VM_2
|
||||
network = os_conn.nova.networks.find(label=self.inter_net_name)
|
||||
openstack.create_instances(
|
||||
os_conn=os_conn, nics=[{'net-id': network.id}], vm_count=1,
|
||||
instances = openstack.create_instances(
|
||||
os_conn=os_conn, nics=[{'net-id': network['id']}], vm_count=1,
|
||||
security_groups=[security_group.name]
|
||||
)
|
||||
openstack.verify_instance_state(os_conn)
|
||||
|
||||
openstack.create_and_assign_floating_ip(os_conn=os_conn)
|
||||
|
||||
time.sleep(30) # need time to apply updates
|
||||
|
||||
# Bind sub_net ports of instances
|
||||
ports = os_conn.neutron.list_ports()['ports']
|
||||
srv_list = os_conn.get_servers()
|
||||
for srv in srv_list:
|
||||
srv_addr = srv.networks[srv.networks.keys()[0]][0]
|
||||
floating_ip = openstack.create_and_assign_floating_ips(
|
||||
os_conn, instances)
|
||||
instance_ports = []
|
||||
for instance in instances:
|
||||
instance_addr = os_conn.get_nova_instance_ip(
|
||||
instance, net_name=network['name'])
|
||||
for port in ports:
|
||||
port_addr = port['fixed_ips'][0]['ip_address']
|
||||
if srv_addr == port_addr:
|
||||
os_conn.neutron.update_port(
|
||||
port['id'], {'port': {'admin_state_up': False}}
|
||||
)
|
||||
if instance_addr == port_addr:
|
||||
instance_ports.append(port)
|
||||
for port in instance_ports:
|
||||
os_conn.neutron.update_port(
|
||||
port['id'], {'port': {'admin_state_up': False}}
|
||||
)
|
||||
|
||||
srv_list = os_conn.get_servers()
|
||||
|
||||
# Verify that not connection to instances
|
||||
primary_controller = self.fuel_web.get_nailgun_primary_node(
|
||||
controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.env.d_env.nodes().slaves[0]
|
||||
)
|
||||
ssh_controller = self.fuel_web.get_ssh_for_node(
|
||||
primary_controller.name
|
||||
)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_controller:
|
||||
# Verify that not connection to instances
|
||||
try:
|
||||
openstack.check_connection_vms(
|
||||
os_conn, floating_ip, remote=ssh_controller,
|
||||
command='pingv4')
|
||||
except Exception as e:
|
||||
logger.info(str(e))
|
||||
|
||||
try:
|
||||
# Enable sub_net ports of instances
|
||||
for port in instance_ports:
|
||||
os_conn.neutron.update_port(
|
||||
port['id'], {'port': {'admin_state_up': True}}
|
||||
)
|
||||
|
||||
instance.reboot()
|
||||
wait(
|
||||
lambda:
|
||||
os_conn.get_instance_detail(instance).status == "ACTIVE",
|
||||
timeout=300)
|
||||
|
||||
time.sleep(60) # need time after reboot to get ip by instance
|
||||
|
||||
# Verify that instances should communicate between each other.
|
||||
# Send icmp ping between instances
|
||||
openstack.check_connection_vms(
|
||||
os_conn=os_conn, srv_list=srv_list, remote=ssh_controller)
|
||||
except Exception as e:
|
||||
logger.info(str(e))
|
||||
|
||||
# Enable sub_net ports of instances
|
||||
for srv in srv_list:
|
||||
srv_addr = srv.networks[srv.networks.keys()[0]][0]
|
||||
for port in ports:
|
||||
port_addr = port['fixed_ips'][0]['ip_address']
|
||||
if srv_addr == port_addr:
|
||||
os_conn.neutron.update_port(
|
||||
port['id'], {'port': {'admin_state_up': True}}
|
||||
)
|
||||
|
||||
srv_list = os_conn.get_servers()
|
||||
for srv in srv_list:
|
||||
srv.reboot()
|
||||
wait(
|
||||
lambda:
|
||||
os_conn.get_instance_detail(srv).status == "ACTIVE",
|
||||
timeout=300)
|
||||
time.sleep(60) # need time after reboot to get ip by instance
|
||||
|
||||
# Verify that instances should communicate between each other.
|
||||
# Send icmp ping between instances
|
||||
openstack.check_connection_vms(os_conn=os_conn, srv_list=srv_list,
|
||||
remote=ssh_controller)
|
||||
os_conn, floating_ip, remote=ssh_controller,
|
||||
command='pingv4')
|
||||
|
||||
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
|
||||
groups=["dvs_vcenter_reset_controller", 'dvs_vcenter_system'])
|
||||
groups=["dvs_destructive_setup_2", 'dvs_vcenter_system'])
|
||||
@log_snapshot_after_test
|
||||
def dvs_vcenter_reset_controller(self):
|
||||
def dvs_destructive_setup_2(self):
|
||||
"""Verify that vmclusters should be migrate after reset controller.
|
||||
|
||||
Scenario:
|
||||
@ -263,12 +222,6 @@ class TestDVSDestructive(TestBasic):
|
||||
5. Add 2 node with compute role.
|
||||
6. Deploy the cluster.
|
||||
7. Launch instances.
|
||||
8. Verify connection between instances. Send ping,
|
||||
check that ping get reply
|
||||
9. Reset controller.
|
||||
10. Check that vmclusters should be migrate to another controller.
|
||||
11. Verify connection between instances.
|
||||
Send ping, check that ping get reply
|
||||
|
||||
Duration: 1.8 hours
|
||||
|
||||
@ -316,156 +269,130 @@ class TestDVSDestructive(TestBasic):
|
||||
security_group = os_conn.create_sec_group_for_ssh()
|
||||
|
||||
network = os_conn.nova.networks.find(label=self.inter_net_name)
|
||||
openstack.create_instances(
|
||||
instances = openstack.create_instances(
|
||||
os_conn=os_conn, nics=[{'net-id': network.id}], vm_count=1,
|
||||
security_groups=[security_group.name]
|
||||
)
|
||||
openstack.verify_instance_state(os_conn)
|
||||
|
||||
for instance in instances:
|
||||
os_conn.assign_floating_ip(instance)
|
||||
|
||||
self.env.make_snapshot("dvs_destructive_setup_2", is_make=True)
|
||||
|
||||
@test(depends_on=[dvs_destructive_setup_2],
|
||||
groups=["dvs_vcenter_reset_controller", 'dvs_vcenter_system'])
|
||||
@log_snapshot_after_test
|
||||
def dvs_vcenter_reset_controller(self):
|
||||
"""Verify that vmclusters should be migrate after reset controller.
|
||||
|
||||
Scenario:
|
||||
1. Revert to 'dvs_destructive_setup_2' snapshot.
|
||||
2. Verify connection between instances. Send ping,
|
||||
check that ping get reply
|
||||
3. Reset controller.
|
||||
4. Check that vmclusters should be migrate to another controller.
|
||||
5. Verify connection between instances.
|
||||
Send ping, check that ping get reply
|
||||
|
||||
Duration: 1.8 hours
|
||||
|
||||
"""
|
||||
self.env.revert_snapshot("dvs_destructive_setup_2")
|
||||
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
os_ip = self.fuel_web.get_public_vip(cluster_id)
|
||||
os_conn = os_actions.OpenStackActions(
|
||||
os_ip, SERVTEST_USERNAME,
|
||||
SERVTEST_PASSWORD,
|
||||
SERVTEST_TENANT)
|
||||
|
||||
# Verify connection between instances.
|
||||
# Send ping Check that ping get reply.
|
||||
openstack.create_and_assign_floating_ip(os_conn=os_conn)
|
||||
srv_list = os_conn.get_servers()
|
||||
primary_controller = self.fuel_web.get_nailgun_primary_node(
|
||||
floating_ip = []
|
||||
for srv in srv_list:
|
||||
floating_ip.append(os_conn.get_nova_instance_ip(
|
||||
srv, net_name=self.inter_net_name, type='floating'))
|
||||
controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.env.d_env.nodes().slaves[0]
|
||||
)
|
||||
ssh_controller = self.fuel_web.get_ssh_for_node(
|
||||
primary_controller.name
|
||||
)
|
||||
openstack.check_connection_vms(os_conn=os_conn, srv_list=srv_list,
|
||||
remote=ssh_controller)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_control:
|
||||
openstack.check_service(ssh=ssh_control, commands=self.cmds)
|
||||
openstack.check_connection_vms(
|
||||
os_conn, floating_ip, remote=ssh_control,
|
||||
command='pingv4')
|
||||
|
||||
cmds = ['nova-manage service list | grep vcenter-vmcluster1',
|
||||
'nova-manage service list | grep vcenter-vmcluster2']
|
||||
self.fuel_web.cold_restart_nodes(
|
||||
[self.fuel_web.environment.d_env.get_node(name=controller.name)],
|
||||
wait_offline=True, wait_online=True,
|
||||
wait_after_destroy=300)
|
||||
|
||||
openstack.check_service(ssh=ssh_controller, commands=cmds)
|
||||
|
||||
self.fuel_web.warm_restart_nodes(
|
||||
[self.fuel_web.environment.d_env.get_node(
|
||||
name=primary_controller.name)])
|
||||
primary_controller = self.fuel_web.get_nailgun_primary_node(
|
||||
controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.env.d_env.nodes().slaves[1]
|
||||
)
|
||||
|
||||
ssh_controller = self.fuel_web.get_ssh_for_node(
|
||||
primary_controller.name
|
||||
)
|
||||
openstack.check_service(ssh=ssh_controller, commands=cmds)
|
||||
|
||||
# Verify connection between instances.
|
||||
# Send ping Check that ping get reply.
|
||||
srv_list = os_conn.get_servers()
|
||||
openstack.check_connection_vms(os_conn=os_conn, srv_list=srv_list,
|
||||
remote=ssh_controller)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_control:
|
||||
openstack.check_service(ssh=ssh_control, commands=self.cmds)
|
||||
openstack.check_connection_vms(
|
||||
os_conn, floating_ip, remote=ssh_control,
|
||||
command='pingv4')
|
||||
|
||||
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
|
||||
@test(depends_on=[dvs_destructive_setup_2],
|
||||
groups=["dvs_vcenter_shutdown_controller", 'dvs_vcenter_system'])
|
||||
@log_snapshot_after_test
|
||||
def dvs_vcenter_shutdown_controller(self):
|
||||
"""Verify that vmclusters should be migrate after shutdown controller.
|
||||
|
||||
Scenario:
|
||||
1. Upload plugins to the master node
|
||||
2. Install plugin.
|
||||
3. Create cluster with vcenter.
|
||||
4. Add 3 node with controller role.
|
||||
5. Add 2 node with compute role.
|
||||
6. Deploy the cluster.
|
||||
7. Launch instances.
|
||||
8. Verify connection between instances. Send ping,
|
||||
1. Revert to 'dvs_destructive_setup_2' snapshot.
|
||||
2. Verify connection between instances. Send ping,
|
||||
check that ping get reply.
|
||||
9. Shutdown controller.
|
||||
10. Check that vmclusters should be migrate to another controller.
|
||||
11. Verify connection between instances.
|
||||
3. Shutdown controller.
|
||||
4. Check that vmclusters should be migrate to another controller.
|
||||
5. Verify connection between instances.
|
||||
Send ping, check that ping get reply
|
||||
|
||||
Duration: 1.8 hours
|
||||
|
||||
"""
|
||||
self.env.revert_snapshot("ready_with_5_slaves")
|
||||
|
||||
plugin.install_dvs_plugin(
|
||||
self.env.d_env.get_admin_remote())
|
||||
|
||||
# Configure cluster with 2 vcenter clusters and vcenter glance
|
||||
cluster_id = self.fuel_web.create_cluster(
|
||||
name=self.__class__.__name__,
|
||||
mode=DEPLOYMENT_MODE,
|
||||
settings={
|
||||
"net_provider": 'neutron',
|
||||
"net_segment_type": NEUTRON_SEGMENT_TYPE
|
||||
}
|
||||
)
|
||||
|
||||
plugin.enable_plugin(cluster_id, self.fuel_web)
|
||||
|
||||
# Assign role to node
|
||||
self.fuel_web.update_nodes(
|
||||
cluster_id,
|
||||
{'slave-01': ['controller'],
|
||||
'slave-02': ['controller'],
|
||||
'slave-03': ['controller'],
|
||||
'slave-04': ['compute'],
|
||||
'slave-05': ['compute']}
|
||||
)
|
||||
|
||||
# Configure VMWare vCenter settings
|
||||
self.fuel_web.vcenter_configure(cluster_id, multiclusters=True)
|
||||
|
||||
self.fuel_web.deploy_cluster_wait(cluster_id)
|
||||
|
||||
self.fuel_web.run_ostf(
|
||||
cluster_id=cluster_id, test_sets=['smoke'])
|
||||
self.env.revert_snapshot("dvs_destructive_setup_2")
|
||||
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
os_ip = self.fuel_web.get_public_vip(cluster_id)
|
||||
os_conn = os_actions.OpenStackActions(
|
||||
os_ip, SERVTEST_USERNAME,
|
||||
SERVTEST_PASSWORD,
|
||||
SERVTEST_TENANT)
|
||||
|
||||
# create security group with rules for ssh and ping
|
||||
security_group = os_conn.create_sec_group_for_ssh()
|
||||
|
||||
network = os_conn.nova.networks.find(label=self.inter_net_name)
|
||||
openstack.create_instances(
|
||||
os_conn=os_conn, nics=[{'net-id': network.id}], vm_count=1,
|
||||
security_groups=[security_group.name])
|
||||
openstack.verify_instance_state(os_conn)
|
||||
|
||||
# Verify connection between instances.
|
||||
# Send ping, check that ping get reply.
|
||||
openstack.create_and_assign_floating_ip(os_conn=os_conn)
|
||||
srv_list = os_conn.get_servers()
|
||||
|
||||
controlers = self.fuel_web.get_devops_nodes_by_nailgun_nodes(
|
||||
floating_ip = []
|
||||
for srv in srv_list:
|
||||
floating_ip.append(os_conn.get_nova_instance_ip(
|
||||
srv, net_name=self.inter_net_name, type='floating'))
|
||||
controllers = self.fuel_web.get_devops_nodes_by_nailgun_nodes(
|
||||
self.fuel_web.get_nailgun_cluster_nodes_by_roles(
|
||||
cluster_id=cluster_id,
|
||||
roles=['controller']))
|
||||
|
||||
ssh_controller = self.fuel_web.get_ssh_for_node(controlers[0].name)
|
||||
openstack.check_connection_vms(
|
||||
os_conn=os_conn,
|
||||
srv_list=srv_list,
|
||||
remote=ssh_controller
|
||||
)
|
||||
|
||||
cmds = ['nova-manage service list | grep vcenter-vmcluster1',
|
||||
'nova-manage service list | grep vcenter-vmcluster2']
|
||||
|
||||
openstack.check_service(ssh=ssh_controller, commands=cmds)
|
||||
with self.fuel_web.get_ssh_for_node(controllers[0].name) as ssh_contr:
|
||||
openstack.check_service(ssh=ssh_contr, commands=self.cmds)
|
||||
openstack.check_connection_vms(
|
||||
os_conn, floating_ip, remote=ssh_contr,
|
||||
command='pingv4')
|
||||
|
||||
self.fuel_web.warm_shutdown_nodes(
|
||||
[self.fuel_web.environment.d_env.get_node(
|
||||
name=controlers[0].name)])
|
||||
name=controllers[0].name)])
|
||||
|
||||
ssh_controller = self.fuel_web.get_ssh_for_node(
|
||||
controlers[1].name)
|
||||
|
||||
openstack.check_service(ssh=ssh_controller, commands=cmds)
|
||||
# Verify connection between instances.
|
||||
# Send ping Check that ping get reply.
|
||||
srv_list = os_conn.get_servers()
|
||||
openstack.check_connection_vms(
|
||||
os_conn=os_conn, srv_list=srv_list,
|
||||
remote=ssh_controller
|
||||
)
|
||||
with self.fuel_web.get_ssh_for_node(controllers[1].name) as ssh_contr:
|
||||
openstack.check_service(ssh=ssh_contr, commands=self.cmds)
|
||||
openstack.check_connection_vms(
|
||||
os_conn, floating_ip, remote=ssh_contr,
|
||||
command='pingv4')
|
||||
|
@ -21,17 +21,14 @@ from fuelweb_test.helpers import os_actions
|
||||
|
||||
from fuelweb_test.helpers.decorators import log_snapshot_after_test
|
||||
|
||||
from fuelweb_test.settings import DEPLOYMENT_MODE
|
||||
from fuelweb_test.settings import NEUTRON_SEGMENT_TYPE
|
||||
from fuelweb_test.settings import SERVTEST_PASSWORD
|
||||
from fuelweb_test.settings import SERVTEST_TENANT
|
||||
from fuelweb_test.settings import SERVTEST_USERNAME
|
||||
|
||||
from fuelweb_test.tests.base_test_case import SetupEnvironment
|
||||
from fuelweb_test.tests.base_test_case import TestBasic
|
||||
from tests.test_plugin_vmware_dvs_smoke import TestDVSSmoke
|
||||
|
||||
from helpers import openstack
|
||||
from helpers import plugin
|
||||
|
||||
from proboscis import test
|
||||
|
||||
@ -54,7 +51,7 @@ class TestDVSMaintenance(TestBasic):
|
||||
"""Get node by name."""
|
||||
return self.fuel_web.get_nailgun_node_by_name(name_node)['hostname']
|
||||
|
||||
@test(depends_on=[SetupEnvironment.prepare_slaves_9],
|
||||
@test(depends_on=[TestDVSSmoke.dvs_vcenter_bvt],
|
||||
groups=["dvs_regression"])
|
||||
@log_snapshot_after_test
|
||||
def dvs_regression(self):
|
||||
@ -64,9 +61,9 @@ class TestDVSMaintenance(TestBasic):
|
||||
1. Upload plugins to the master node
|
||||
2. Install plugin.
|
||||
3. Create cluster with vcenter.
|
||||
4. Add 3 node with controller+mongo+cinder-vmware role.
|
||||
5. Add 2 node with compute role.
|
||||
6. Add 1 node with compute-vmware role.
|
||||
4. Add 3 node with controller role.
|
||||
5. Add 2 node with compute + ceph role.
|
||||
6. Add 1 node with compute-vmware + cinder vmware role.
|
||||
7. Deploy the cluster.
|
||||
8. Run OSTF.
|
||||
9. Create non default network.
|
||||
@ -77,69 +74,38 @@ class TestDVSMaintenance(TestBasic):
|
||||
|
||||
Duration: 1.8 hours
|
||||
"""
|
||||
self.env.revert_snapshot("ready_with_9_slaves")
|
||||
plugin.install_dvs_plugin(self.env.d_env.get_admin_remote())
|
||||
# Configure cluster with 2 vcenter clusters and vcenter glance
|
||||
cluster_id = self.fuel_web.create_cluster(
|
||||
name=self.__class__.__name__,
|
||||
mode=DEPLOYMENT_MODE,
|
||||
settings={
|
||||
"net_provider": 'neutron',
|
||||
"net_segment_type": NEUTRON_SEGMENT_TYPE,
|
||||
"images_vcenter": True
|
||||
}
|
||||
)
|
||||
plugin.enable_plugin(cluster_id, self.fuel_web)
|
||||
# Assign role to node
|
||||
self.fuel_web.update_nodes(
|
||||
cluster_id,
|
||||
{'slave-01': ['controller', 'mongo', 'cinder-vmware'],
|
||||
'slave-02': ['controller', 'mongo', 'cinder-vmware'],
|
||||
'slave-03': ['controller', 'mongo', 'cinder-vmware'],
|
||||
'slave-04': ['compute'],
|
||||
'slave-05': ['compute'],
|
||||
'slave-06': ['compute-vmware']}
|
||||
)
|
||||
# Configure VMWare vCenter settings
|
||||
target_node_2 = self.node_name('slave-06')
|
||||
self.fuel_web.vcenter_configure(
|
||||
cluster_id,
|
||||
target_node_2=target_node_2,
|
||||
multiclusters=True,
|
||||
vc_glance=True
|
||||
)
|
||||
self.fuel_web.deploy_cluster_wait(cluster_id)
|
||||
self.fuel_web.run_ostf(
|
||||
cluster_id=cluster_id, test_sets=['smoke', 'tests_platform'])
|
||||
self.env.revert_snapshot("dvs_bvt")
|
||||
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
|
||||
os_ip = self.fuel_web.get_public_vip(cluster_id)
|
||||
os_conn = os_actions.OpenStackActions(
|
||||
os_ip, SERVTEST_USERNAME,
|
||||
SERVTEST_PASSWORD,
|
||||
SERVTEST_TENANT)
|
||||
|
||||
tenant = os_conn.get_tenant(SERVTEST_TENANT)
|
||||
# Create non default network with subnet.
|
||||
logger.info('Create network {}'.format(self.net_data[0].keys()[0]))
|
||||
network = openstack.create_network(
|
||||
os_conn,
|
||||
self.net_data[0].keys()[0],
|
||||
tenant_name=SERVTEST_TENANT
|
||||
)
|
||||
logger.info('Create subnet {}'.format(self.net_data[0].keys()[0]))
|
||||
subnet = openstack.create_subnet(
|
||||
os_conn,
|
||||
network,
|
||||
self.net_data[0][self.net_data[0].keys()[0]],
|
||||
tenant_name=SERVTEST_TENANT
|
||||
)
|
||||
network = os_conn.create_network(
|
||||
network_name=self.net_data[0].keys()[0],
|
||||
tenant_id=tenant.id)['network']
|
||||
|
||||
subnet = os_conn.create_subnet(
|
||||
subnet_name=network['name'],
|
||||
network_id=network['id'],
|
||||
cidr=self.net_data[0][self.net_data[0].keys()[0]],
|
||||
ip_version=4)
|
||||
|
||||
# Check that network are created.
|
||||
assert_true(
|
||||
os_conn.get_network(network['name'])['id'] == network['id']
|
||||
)
|
||||
# Add net_1 to default router
|
||||
router = os_conn.get_router(os_conn.get_network(self.ext_net_name))
|
||||
openstack.add_subnet_to_router(
|
||||
os_conn,
|
||||
router['id'], subnet['id'])
|
||||
os_conn.add_router_interface(
|
||||
router_id=router["id"],
|
||||
subnet_id=subnet["id"])
|
||||
# Launch instance 2 VMs of vcenter and 2 VMs of nova
|
||||
# in the tenant network net_01
|
||||
openstack.create_instances(
|
||||
@ -149,11 +115,11 @@ class TestDVSMaintenance(TestBasic):
|
||||
# Launch instance 2 VMs of vcenter and 2 VMs of nova
|
||||
# in the default network
|
||||
network = os_conn.nova.networks.find(label=self.inter_net_name)
|
||||
openstack.create_instances(
|
||||
instances = openstack.create_instances(
|
||||
os_conn=os_conn, vm_count=1,
|
||||
nics=[{'net-id': network.id}])
|
||||
openstack.verify_instance_state(os_conn)
|
||||
openstack.create_and_assign_floating_ip(os_conn=os_conn)
|
||||
|
||||
# Create security groups SG_1 to allow ICMP traffic.
|
||||
# Add Ingress rule for ICMP protocol to SG_1
|
||||
# Create security groups SG_2 to allow TCP traffic 22 port.
|
||||
@ -192,11 +158,12 @@ class TestDVSMaintenance(TestBasic):
|
||||
srv.add_security_group(sg1.id)
|
||||
srv.add_security_group(sg2.id)
|
||||
time.sleep(20) # need wait to update rules on dvs
|
||||
fip = openstack.create_and_assign_floating_ips(os_conn, instances)
|
||||
# Check ping between VMs
|
||||
controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.env.d_env.nodes().slaves[0]
|
||||
)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_controller:
|
||||
openstack.check_connection_vms(
|
||||
os_conn=os_conn, srv_list=srv_list,
|
||||
remote=ssh_controller)
|
||||
os_conn, fip, remote=ssh_controller,
|
||||
command='pingv4')
|
||||
|
@ -119,11 +119,10 @@ class TestDVSSmoke(TestBasic):
|
||||
* Controller
|
||||
* Controller
|
||||
* Controller
|
||||
* Compute
|
||||
* CephOSD
|
||||
* CephOSD
|
||||
* CinderVMware
|
||||
* ComputeVMware
|
||||
* Compute + CephOSD
|
||||
* Compute + CephOSD
|
||||
* Compute + CephOSD
|
||||
* CinderVMware + ComputeVMware
|
||||
5. Configure interfaces on nodes.
|
||||
6. Configure network settings.
|
||||
7. Enable and configure DVS plugin.
|
||||
@ -163,16 +162,14 @@ class TestDVSSmoke(TestBasic):
|
||||
{'slave-01': ['controller'],
|
||||
'slave-02': ['controller'],
|
||||
'slave-03': ['controller'],
|
||||
'slave-04': ['compute'],
|
||||
'slave-05': ['compute-vmware'],
|
||||
'slave-06': ['cinder-vmware'],
|
||||
'slave-07': ['ceph-osd'],
|
||||
'slave-08': ['ceph-osd'],
|
||||
'slave-09': ['ceph-osd']}
|
||||
'slave-04': ['compute', 'ceph-osd'],
|
||||
'slave-05': ['compute', 'ceph-osd'],
|
||||
'slave-06': ['compute', 'ceph-osd'],
|
||||
'slave-07': ['compute-vmware', 'cinder-vmware']}
|
||||
)
|
||||
|
||||
# Configure VMWare vCenter settings
|
||||
target_node_2 = self.node_name('slave-05')
|
||||
target_node_2 = self.node_name('slave-07')
|
||||
self.fuel_web.vcenter_configure(
|
||||
cluster_id,
|
||||
target_node_2=target_node_2,
|
||||
@ -180,11 +177,13 @@ class TestDVSSmoke(TestBasic):
|
||||
)
|
||||
|
||||
self.fuel_web.verify_network(cluster_id, timeout=60 * 15)
|
||||
self.fuel_web.deploy_cluster_wait(cluster_id)
|
||||
self.fuel_web.deploy_cluster_wait(cluster_id, timeout=3600 * 3)
|
||||
|
||||
self.fuel_web.run_ostf(
|
||||
cluster_id=cluster_id, test_sets=['smoke'])
|
||||
|
||||
self.env.make_snapshot("dvs_bvt", is_make=True)
|
||||
|
||||
@test(depends_on=[SetupEnvironment.prepare_slaves_1],
|
||||
groups=["dvs_install", "dvs_vcenter_plugin"])
|
||||
@log_snapshot_after_test
|
||||
@ -246,6 +245,9 @@ class TestDVSSmoke(TestBasic):
|
||||
cmd = 'fuel plugins --remove {0}=={1}'.format(
|
||||
plugin.plugin_name, plugin.DVS_PLUGIN_VERSION)
|
||||
|
||||
assert_true(self.env.d_env.get_admin_remote().execute(cmd) == 0,
|
||||
'Can not remove plugin.')
|
||||
|
||||
self.show_step(3)
|
||||
cmd = 'fuel plugins list'
|
||||
output = list(self.env.d_env.get_admin_remote().execute(
|
||||
@ -253,5 +255,5 @@ class TestDVSSmoke(TestBasic):
|
||||
|
||||
assert_true(
|
||||
plugin.plugin_name not in output,
|
||||
"Plugin is removed {}".format(plugin.plugin_name)
|
||||
"Plugin is not removed {}".format(plugin.plugin_name)
|
||||
)
|
||||
|
@ -89,10 +89,12 @@ class TestDVSSystem(TestBasic):
|
||||
"""
|
||||
self.env.revert_snapshot("ready_with_5_slaves")
|
||||
|
||||
self.show_step(1)
|
||||
self.show_step(2)
|
||||
plugin.install_dvs_plugin(
|
||||
self.env.d_env.get_admin_remote())
|
||||
|
||||
# Configure cluster with 2 vcenter clusters and vcenter glance
|
||||
self.show_step(3)
|
||||
cluster_id = self.fuel_web.create_cluster(
|
||||
name=self.__class__.__name__,
|
||||
mode=DEPLOYMENT_MODE,
|
||||
@ -104,7 +106,9 @@ class TestDVSSystem(TestBasic):
|
||||
)
|
||||
plugin.enable_plugin(cluster_id, self.fuel_web)
|
||||
|
||||
# Assign role to node
|
||||
self.show_step(4)
|
||||
self.show_step(5)
|
||||
self.show_step(6)
|
||||
self.fuel_web.update_nodes(
|
||||
cluster_id,
|
||||
{'slave-01': ['controller'],
|
||||
@ -123,11 +127,14 @@ class TestDVSSystem(TestBasic):
|
||||
vc_glance=True
|
||||
)
|
||||
|
||||
self.show_step(7)
|
||||
self.fuel_web.deploy_cluster_wait(cluster_id)
|
||||
|
||||
self.show_step(8)
|
||||
self.fuel_web.run_ostf(
|
||||
cluster_id=cluster_id, test_sets=['smoke'])
|
||||
|
||||
self.show_step(9)
|
||||
self.env.make_snapshot("dvs_vcenter_systest_setup", is_make=True)
|
||||
|
||||
@test(depends_on=[dvs_vcenter_systest_setup],
|
||||
@ -147,11 +154,12 @@ class TestDVSSystem(TestBasic):
|
||||
Duration: 15 min
|
||||
|
||||
"""
|
||||
self.show_step(1)
|
||||
self.env.revert_snapshot("dvs_vcenter_systest_setup")
|
||||
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
|
||||
# Create new network
|
||||
self.show_step(2)
|
||||
os_ip = self.fuel_web.get_public_vip(cluster_id)
|
||||
os_conn = os_actions.OpenStackActions(
|
||||
os_ip, SERVTEST_USERNAME,
|
||||
@ -160,49 +168,52 @@ class TestDVSSystem(TestBasic):
|
||||
|
||||
subnets = []
|
||||
networks = []
|
||||
tenant = os_conn.get_tenant(SERVTEST_TENANT)
|
||||
|
||||
for net in self.net_data:
|
||||
logger.info('Create network {}'.format(net.keys()[0]))
|
||||
network = openstack.create_network(
|
||||
os_conn,
|
||||
net.keys()[0], tenant_name=SERVTEST_TENANT
|
||||
)
|
||||
network = os_conn.create_network(
|
||||
network_name=net.keys()[0],
|
||||
tenant_id=tenant.id)['network']
|
||||
|
||||
logger.info('Create subnet {}'.format(net.keys()[0]))
|
||||
subnet = openstack.create_subnet(
|
||||
os_conn,
|
||||
network,
|
||||
net[net.keys()[0]], tenant_name=SERVTEST_TENANT
|
||||
)
|
||||
subnet = os_conn.create_subnet(
|
||||
subnet_name=net.keys()[0],
|
||||
network_id=network['id'],
|
||||
cidr=net[net.keys()[0]],
|
||||
ip_version=4)
|
||||
|
||||
subnets.append(subnet)
|
||||
networks.append(network)
|
||||
|
||||
# Check that networks are created.
|
||||
self.show_step(3)
|
||||
for network in networks:
|
||||
assert_true(
|
||||
os_conn.get_network(network['name'])['id'] == network['id']
|
||||
)
|
||||
|
||||
# Delete net_1.
|
||||
self.show_step(4)
|
||||
logger.info('Delete network net_1')
|
||||
os_conn.neutron.delete_subnet(subnets[0]['id'])
|
||||
os_conn.neutron.delete_network(networks[0]['id'])
|
||||
# Check that net_1 is deleted.
|
||||
|
||||
self.show_step(5)
|
||||
assert_true(
|
||||
os_conn.get_network(networks[0]) is None
|
||||
)
|
||||
logger.info('Networks net_1 is removed.')
|
||||
logger.info('Created net_1 again.')
|
||||
network = openstack.create_network(
|
||||
os_conn,
|
||||
self.net_data[0].keys()[0])
|
||||
subnet = openstack.create_subnet(
|
||||
os_conn,
|
||||
network,
|
||||
self.net_data[0][self.net_data[0].keys()[0]],
|
||||
tenant_name=SERVTEST_TENANT
|
||||
)
|
||||
|
||||
self.show_step(6)
|
||||
network = os_conn.create_network(
|
||||
network_name=self.net_data[0].keys()[0],
|
||||
tenant_id=tenant.id)['network']
|
||||
|
||||
logger.info('Create subnet {}'.format(net.keys()[0]))
|
||||
subnet = os_conn.create_subnet(
|
||||
subnet_name=self.net_data[0].keys()[0],
|
||||
network_id=network['id'],
|
||||
cidr=self.net_data[0][self.net_data[0].keys()[0]],
|
||||
ip_version=4)
|
||||
|
||||
assert_true(
|
||||
os_conn.get_network(network['name'])['id'] == network['id']
|
||||
)
|
||||
@ -230,71 +241,64 @@ class TestDVSSystem(TestBasic):
|
||||
Duration: 15 min
|
||||
|
||||
"""
|
||||
self.show_step(1)
|
||||
self.env.revert_snapshot("dvs_vcenter_systest_setup")
|
||||
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
|
||||
# Create new network
|
||||
os_ip = self.fuel_web.get_public_vip(cluster_id)
|
||||
os_conn = os_actions.OpenStackActions(
|
||||
os_ip, SERVTEST_USERNAME,
|
||||
SERVTEST_PASSWORD,
|
||||
SERVTEST_TENANT)
|
||||
|
||||
# Create non default network with subnet.
|
||||
logger.info('Create network {}'.format(self.net_data[0].keys()[0]))
|
||||
network = openstack.create_network(
|
||||
os_conn,
|
||||
self.net_data[0].keys()[0], tenant_name=SERVTEST_TENANT
|
||||
)
|
||||
tenant = os_conn.get_tenant(SERVTEST_TENANT)
|
||||
|
||||
logger.info('Create subnet {}'.format(self.net_data[0].keys()[0]))
|
||||
subnet = openstack.create_subnet(
|
||||
os_conn,
|
||||
network,
|
||||
self.net_data[0][self.net_data[0].keys()[0]],
|
||||
tenant_name=SERVTEST_TENANT
|
||||
)
|
||||
self.show_step(2)
|
||||
network = os_conn.create_network(
|
||||
network_name=self.net_data[0].keys()[0],
|
||||
tenant_id=tenant.id)['network']
|
||||
|
||||
self.show_step(3)
|
||||
subnet = os_conn.create_subnet(
|
||||
subnet_name=network['name'],
|
||||
network_id=network['id'],
|
||||
cidr=self.net_data[0][self.net_data[0].keys()[0]],
|
||||
ip_version=4)
|
||||
|
||||
# Check that network are created.
|
||||
assert_true(
|
||||
os_conn.get_network(network['name'])['id'] == network['id']
|
||||
)
|
||||
|
||||
self.show_step(4)
|
||||
router = os_conn.get_router(os_conn.get_network(self.ext_net_name))
|
||||
os_conn.add_router_interface(
|
||||
router_id=router["id"],
|
||||
subnet_id=subnet["id"])
|
||||
|
||||
# create security group with rules for ssh and ping
|
||||
security_group = os_conn.create_sec_group_for_ssh()
|
||||
|
||||
# Launch instance VM_1, VM_2 in the tenant network net_01
|
||||
# with image TestVMDK and flavor m1.micro in the nova az.
|
||||
# Launch instances VM_3 and VM_4 in the net01
|
||||
# with image TestVM-VMDK and flavor m1.micro in vcenter az.
|
||||
openstack.create_instances(
|
||||
self.show_step(5)
|
||||
self.show_step(6)
|
||||
instances = openstack.create_instances(
|
||||
os_conn=os_conn, nics=[{'net-id': network['id']}], vm_count=1,
|
||||
security_groups=[security_group.name]
|
||||
)
|
||||
openstack.verify_instance_state(os_conn)
|
||||
|
||||
# Add net_1 to default router
|
||||
router = os_conn.get_router(os_conn.get_network(self.ext_net_name))
|
||||
openstack.add_subnet_to_router(
|
||||
os_conn,
|
||||
router['id'], subnet['id'])
|
||||
# Get floating ip of instances.
|
||||
fip = openstack.create_and_assign_floating_ips(os_conn, instances)
|
||||
|
||||
openstack.create_and_assign_floating_ip(os_conn=os_conn)
|
||||
|
||||
# Send ping from instances VM_1 and VM_2 to 8.8.8.8
|
||||
# or other outside ip.
|
||||
srv_list = os_conn.get_servers()
|
||||
primary_controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.show_step(7)
|
||||
controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.env.d_env.nodes().slaves[0]
|
||||
)
|
||||
ssh_controller = self.fuel_web.get_ssh_for_node(
|
||||
primary_controller.name)
|
||||
openstack.check_connection_vms(
|
||||
os_conn=os_conn, srv_list=srv_list, command='pingv4',
|
||||
remote=ssh_controller,
|
||||
destination_ip=['8.8.8.8']
|
||||
)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_contr:
|
||||
openstack.check_connection_vms(
|
||||
os_conn, fip, remote=ssh_contr,
|
||||
command='pingv4', destination_ip=['8.8.8.8'])
|
||||
|
||||
@test(depends_on=[dvs_vcenter_systest_setup],
|
||||
groups=["dvs_instances_one_group", 'dvs_vcenter_system'])
|
||||
@ -316,6 +320,7 @@ class TestDVSSystem(TestBasic):
|
||||
Duration: 15 min
|
||||
|
||||
"""
|
||||
self.show_step(1)
|
||||
self.env.revert_snapshot("dvs_vcenter_systest_setup")
|
||||
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
@ -335,51 +340,42 @@ class TestDVSSystem(TestBasic):
|
||||
security_group = os_conn.create_sec_group_for_ssh()
|
||||
|
||||
# Get max count of instance which we can create according to resource
|
||||
# limitdos.py revert-resume dvs_570 error_dvs_instances_batch
|
||||
# limit
|
||||
vm_count = min(
|
||||
[os_conn.nova.hypervisors.resource_class.to_dict(h)['vcpus']
|
||||
for h in os_conn.nova.hypervisors.list()]
|
||||
)
|
||||
|
||||
logger.info(security_group)
|
||||
|
||||
self.show_step(2)
|
||||
self.show_step(3)
|
||||
openstack.create_instances(
|
||||
os_conn=os_conn, nics=[{'net-id': network.id}],
|
||||
vm_count=vm_count, security_groups=[security_group.name]
|
||||
)
|
||||
openstack.verify_instance_state(os_conn)
|
||||
|
||||
logger.info("Check ping is available between instances.")
|
||||
openstack.create_and_assign_floating_ip(os_conn=os_conn)
|
||||
|
||||
self.show_step(4)
|
||||
srv_list = os_conn.nova.servers.list()
|
||||
fip = openstack.create_and_assign_floating_ips(os_conn, srv_list)
|
||||
|
||||
primary_controller = self.fuel_web.get_nailgun_primary_node(
|
||||
controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.env.d_env.nodes().slaves[0])
|
||||
|
||||
ssh_controller = self.fuel_web.get_ssh_for_node(
|
||||
primary_controller.name)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_contr:
|
||||
openstack.check_connection_vms(
|
||||
os_conn, fip, remote=ssh_contr,
|
||||
command='pingv4')
|
||||
|
||||
openstack.check_connection_vms(os_conn=os_conn, srv_list=srv_list,
|
||||
command='pingv4', remote=ssh_controller)
|
||||
|
||||
logger.info("Check ssh connection is available between instances.")
|
||||
floating_ip = []
|
||||
for srv in srv_list:
|
||||
floating_ip.append(
|
||||
[add['addr']
|
||||
for add in srv.addresses[srv.addresses.keys()[0]]
|
||||
if add['OS-EXT-IPS:type'] == 'floating'][0])
|
||||
ip_pair = [
|
||||
(ip_1, ip_2)
|
||||
for ip_1 in floating_ip
|
||||
for ip_2 in floating_ip
|
||||
for ip_1 in fip
|
||||
for ip_2 in fip
|
||||
if ip_1 != ip_2]
|
||||
|
||||
for ips in ip_pair:
|
||||
openstack.check_ssh_between_instances(ips[0], ips[1])
|
||||
openstack.remote_execute_command(ips[0], ips[1], ' ')
|
||||
|
||||
logger.info("Delete all instances from horizon simultaneously.")
|
||||
self.show_step(5)
|
||||
for srv in srv_list:
|
||||
os_conn.nova.servers.delete(srv)
|
||||
|
||||
@ -445,6 +441,7 @@ class TestDVSSystem(TestBasic):
|
||||
"protocol": "icmp",
|
||||
"security_group_id": ""}}
|
||||
|
||||
self.show_step(1)
|
||||
self.env.revert_snapshot("dvs_vcenter_systest_setup")
|
||||
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
@ -457,8 +454,7 @@ class TestDVSSystem(TestBasic):
|
||||
|
||||
tenant = os_conn.get_tenant(SERVTEST_TENANT)
|
||||
|
||||
logger.info("Create non default network with subnet.")
|
||||
logger.info('Create network {}'.format(self.net_data[0].keys()[0]))
|
||||
self.show_step(2)
|
||||
network = os_conn.create_network(
|
||||
network_name=self.net_data[0].keys()[0],
|
||||
tenant_id=tenant.id)['network']
|
||||
@ -480,8 +476,7 @@ class TestDVSSystem(TestBasic):
|
||||
router_id=router["id"],
|
||||
subnet_id=subnet["id"])
|
||||
|
||||
logger.info("""Launch 2 instances of vcenter and 2 instances of nova
|
||||
in the tenant network net_01.""")
|
||||
self.show_step(3)
|
||||
openstack.create_instances(
|
||||
os_conn=os_conn,
|
||||
nics=[{'net-id': network['id']}],
|
||||
@ -489,9 +484,7 @@ class TestDVSSystem(TestBasic):
|
||||
)
|
||||
openstack.verify_instance_state(os_conn)
|
||||
|
||||
logger.info("""Launch 2 instances of vcenter and
|
||||
2 instances of nova
|
||||
in the default tenant network.""")
|
||||
self.show_step(4)
|
||||
network = os_conn.nova.networks.find(label=self.inter_net_name)
|
||||
openstack.create_instances(
|
||||
os_conn=os_conn,
|
||||
@ -501,25 +494,18 @@ class TestDVSSystem(TestBasic):
|
||||
openstack.verify_instance_state(os_conn)
|
||||
|
||||
srv_list = os_conn.get_servers()
|
||||
floating_ip = []
|
||||
for srv in srv_list:
|
||||
floating_ip.append(
|
||||
os_conn.assign_floating_ip(
|
||||
srv, use_neutron=True)['floating_ip_address'])
|
||||
|
||||
logger.info("""Create security groups SG_1 to allow ICMP traffic.
|
||||
Add Ingress rule for ICMP protocol to SG_1
|
||||
Create security groups SG_2 to allow TCP traffic 22 port.
|
||||
Add Ingress rule for TCP protocol to SG_2.""")
|
||||
|
||||
self.show_step(5)
|
||||
sec_name = ['SG1', 'SG2']
|
||||
sg1 = os_conn.nova.security_groups.create(
|
||||
sec_name[0], "descr")
|
||||
sg2 = os_conn.nova.security_groups.create(
|
||||
sec_name[1], "descr")
|
||||
|
||||
self.show_step(6)
|
||||
tcp["security_group_rule"]["security_group_id"] = sg1.id
|
||||
os_conn.neutron.create_security_group_rule(tcp)
|
||||
|
||||
self.show_step(7)
|
||||
sg2 = os_conn.nova.security_groups.create(
|
||||
sec_name[1], "descr")
|
||||
self.show_step(8)
|
||||
icmp["security_group_rule"]["security_group_id"] = sg2.id
|
||||
os_conn.neutron.create_security_group_rule(icmp)
|
||||
|
||||
@ -531,29 +517,28 @@ class TestDVSSystem(TestBasic):
|
||||
srv.add_security_group(sg1.id)
|
||||
srv.add_security_group(sg2.id)
|
||||
|
||||
time.sleep(20) # need wait to update rules on dvs
|
||||
floating_ip = openstack.create_and_assign_floating_ips(
|
||||
os_conn, srv_list)
|
||||
|
||||
logger.info("Check ping between instances.")
|
||||
primary_controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.env.d_env.nodes().slaves[0]
|
||||
)
|
||||
ssh_controller = self.fuel_web.get_ssh_for_node(
|
||||
primary_controller.name)
|
||||
self.show_step(9)
|
||||
controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.env.d_env.nodes().slaves[0])
|
||||
|
||||
logger.info("Check ping is available between instances.")
|
||||
openstack.check_connection_vms(os_conn=os_conn, srv_list=srv_list,
|
||||
command='pingv4', remote=ssh_controller)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_contr:
|
||||
openstack.check_connection_vms(
|
||||
os_conn, floating_ip, remote=ssh_contr,
|
||||
command='pingv4')
|
||||
|
||||
logger.info("Check ssh connection is available between instances.")
|
||||
self.show_step(10)
|
||||
ip_pair = [(ip_1, ip_2)
|
||||
for ip_1 in floating_ip
|
||||
for ip_2 in floating_ip
|
||||
if ip_1 != ip_2]
|
||||
|
||||
for ips in ip_pair:
|
||||
openstack.check_ssh_between_instances(ips[0], ips[1])
|
||||
openstack.remote_execute_command(ips[0], ips[1], ' ')
|
||||
|
||||
logger.info("Delete all rules from SG_1 and SG_2")
|
||||
self.show_step(11)
|
||||
sg_rules = os_conn.neutron.list_security_group_rules()[
|
||||
'security_group_rules']
|
||||
sg_rules = [
|
||||
@ -566,7 +551,7 @@ class TestDVSSystem(TestBasic):
|
||||
|
||||
time.sleep(20) # need wait to update rules on dvs
|
||||
|
||||
logger.info("Check ssh are not available to instances")
|
||||
self.show_step(12)
|
||||
for ip in floating_ip:
|
||||
try:
|
||||
openstack.get_ssh_connection(
|
||||
@ -575,7 +560,7 @@ class TestDVSSystem(TestBasic):
|
||||
except Exception as e:
|
||||
logger.info('{}'.format(e))
|
||||
|
||||
logger.info("Add Ingress and egress rules for TCP protocol to SG_2")
|
||||
self.show_step(13)
|
||||
tcp["security_group_rule"]["security_group_id"] = sg2.id
|
||||
os_conn.neutron.create_security_group_rule(tcp)
|
||||
tcp["security_group_rule"]["direction"] = "egress"
|
||||
@ -583,15 +568,17 @@ class TestDVSSystem(TestBasic):
|
||||
|
||||
time.sleep(20) # need wait to update rules on dvs ports
|
||||
|
||||
logger.info("Check ssh connection is available between instances.")
|
||||
self.show_step(14)
|
||||
for ips in ip_pair:
|
||||
openstack.check_ssh_between_instances(ips[0], ips[1])
|
||||
openstack.remote_execute_command(ips[0], ips[1], ' ')
|
||||
|
||||
logger.info("Check ping is not available between instances.")
|
||||
openstack.check_connection_vms(os_conn=os_conn, srv_list=srv_list,
|
||||
command='pingv4', remote=ssh_controller,
|
||||
result_of_command=1)
|
||||
self.show_step(15)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_contr:
|
||||
openstack.check_connection_vms(
|
||||
os_conn, floating_ip, remote=ssh_contr,
|
||||
command='pingv4', result_of_command=1)
|
||||
|
||||
self.show_step(16)
|
||||
logger.info("Add Ingress and egress rules for ICMP protocol to SG_1")
|
||||
icmp["security_group_rule"]["security_group_id"] = sg1.id
|
||||
os_conn.neutron.create_security_group_rule(icmp)
|
||||
@ -600,12 +587,14 @@ class TestDVSSystem(TestBasic):
|
||||
|
||||
time.sleep(20) # need wait to update rules on dvs ports
|
||||
|
||||
logger.info("Check ping is available between instances.")
|
||||
openstack.check_connection_vms(os_conn=os_conn, srv_list=srv_list,
|
||||
command='pingv4', remote=ssh_controller)
|
||||
self.show_step(17)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_contr:
|
||||
openstack.check_connection_vms(
|
||||
os_conn, floating_ip, remote=ssh_contr,
|
||||
command='pingv4')
|
||||
|
||||
logger.info("""Delete SG1 and SG2 security groups.
|
||||
Attach instances to default security group.""")
|
||||
self.show_step(21)
|
||||
self.show_step(22)
|
||||
srv_list = os_conn.get_servers()
|
||||
for srv in srv_list:
|
||||
for sg in srv.security_groups:
|
||||
@ -623,13 +612,15 @@ class TestDVSSystem(TestBasic):
|
||||
os_conn.neutron.create_security_group_rule(tcp)
|
||||
time.sleep(20) # need wait to update rules on dvs ports
|
||||
|
||||
logger.info("Check ping is available between instances.")
|
||||
openstack.check_connection_vms(os_conn=os_conn, srv_list=srv_list,
|
||||
command='pingv4', remote=ssh_controller)
|
||||
self.show_step(23)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_contr:
|
||||
openstack.check_connection_vms(
|
||||
os_conn, floating_ip, remote=ssh_contr,
|
||||
command='pingv4')
|
||||
|
||||
logger.info("Check ssh connection is available between instances.")
|
||||
self.show_step(24)
|
||||
for ips in ip_pair:
|
||||
openstack.check_ssh_between_instances(ips[0], ips[1])
|
||||
openstack.remote_execute_command(ips[0], ips[1], ' ')
|
||||
|
||||
@test(depends_on=[dvs_vcenter_systest_setup],
|
||||
groups=["dvs_vcenter_tenants_isolation", 'dvs_vcenter_system'])
|
||||
@ -655,103 +646,87 @@ class TestDVSSystem(TestBasic):
|
||||
Duration: 30 min
|
||||
|
||||
"""
|
||||
self.show_step(1)
|
||||
self.env.revert_snapshot("dvs_vcenter_systest_setup")
|
||||
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
|
||||
# Create new network
|
||||
os_ip = self.fuel_web.get_public_vip(cluster_id)
|
||||
admin = os_actions.OpenStackActions(
|
||||
os_ip, SERVTEST_USERNAME,
|
||||
SERVTEST_PASSWORD,
|
||||
SERVTEST_TENANT)
|
||||
|
||||
# Create non-admin tenant.
|
||||
self.show_step(2)
|
||||
admin.create_user_and_tenant('test', 'test', 'test')
|
||||
openstack.add_role_to_user(admin, 'test', 'admin', 'test')
|
||||
|
||||
test = os_actions.OpenStackActions(
|
||||
os_ip, 'test', 'test', 'test')
|
||||
|
||||
# Create non default network with subnet in test tenant.
|
||||
logger.info('Create network {}'.format(self.net_data[0].keys()[0]))
|
||||
network = openstack.create_network(
|
||||
test,
|
||||
self.net_data[0].keys()[0], tenant_name='test'
|
||||
)
|
||||
tenant = test.get_tenant('test')
|
||||
|
||||
logger.info('Create subnet {}'.format(self.net_data[0].keys()[0]))
|
||||
subnet = openstack.create_subnet(
|
||||
test,
|
||||
network,
|
||||
self.net_data[0][self.net_data[0].keys()[0]],
|
||||
tenant_name='test'
|
||||
)
|
||||
self.show_step(3)
|
||||
network_test = test.create_network(
|
||||
network_name=self.net_data[0].keys()[0],
|
||||
tenant_id=tenant.id)['network']
|
||||
|
||||
subnet_test = test.create_subnet(
|
||||
subnet_name=network_test['name'],
|
||||
network_id=network_test['id'],
|
||||
cidr=self.net_data[0][self.net_data[0].keys()[0]],
|
||||
ip_version=4)
|
||||
|
||||
# create security group with rules for ssh and ping
|
||||
security_group = test.create_sec_group_for_ssh()
|
||||
security_group_test = test.create_sec_group_for_ssh()
|
||||
|
||||
# Launch 2 instances in the est tenant network net_01
|
||||
openstack.create_instances(
|
||||
os_conn=test, vm_count=1,
|
||||
nics=[{'net-id': network['id']}],
|
||||
security_groups=[security_group.name]
|
||||
)
|
||||
openstack.verify_instance_state(test)
|
||||
|
||||
# Create Router_01, set gateway and add interface
|
||||
# to external network.
|
||||
router_1 = openstack.add_router(
|
||||
test,
|
||||
'router_1'
|
||||
)
|
||||
|
||||
# Add net_1 to router_1
|
||||
openstack.add_subnet_to_router(
|
||||
test,
|
||||
router_1['id'], subnet['id'])
|
||||
self.show_step(4)
|
||||
router = test.create_router('router_1', tenant=tenant)
|
||||
test.add_router_interface(
|
||||
router_id=router["id"],
|
||||
subnet_id=subnet_test["id"])
|
||||
|
||||
# create security group with rules for ssh and ping
|
||||
security_group = admin.create_sec_group_for_ssh()
|
||||
|
||||
# Launch 2 instances in the admin tenant net04
|
||||
self.show_step(5)
|
||||
network = admin.nova.networks.find(label=self.inter_net_name)
|
||||
openstack.create_instances(
|
||||
srv_1 = openstack.create_instances(
|
||||
os_conn=admin, nics=[{'net-id': network.id}], vm_count=1,
|
||||
security_groups=[security_group.name])
|
||||
openstack.verify_instance_state(admin)
|
||||
|
||||
# Send ping from instances VM_1 and VM_2 to VM_3 and VM_4
|
||||
# via no floating ip
|
||||
srv_1 = admin.get_servers()
|
||||
srv_2 = test.get_servers()
|
||||
openstack.create_and_assign_floating_ip(os_conn=admin, srv_list=srv_1)
|
||||
openstack.create_and_assign_floating_ip(
|
||||
os_conn=test,
|
||||
srv_list=srv_2,
|
||||
ext_net=None,
|
||||
tenant_id=test.get_tenant('test').id)
|
||||
self.show_step(6)
|
||||
srv_2 = openstack.create_instances(
|
||||
os_conn=test, vm_count=1,
|
||||
nics=[{'net-id': network_test['id']}],
|
||||
security_groups=[security_group_test.name]
|
||||
)
|
||||
openstack.verify_instance_state(test)
|
||||
|
||||
srv_1 = admin.get_servers()
|
||||
srv_2 = test.get_servers()
|
||||
self.show_step(7)
|
||||
fip_1 = openstack.create_and_assign_floating_ips(admin, srv_1)
|
||||
ips_1 = []
|
||||
for srv in srv_1:
|
||||
ips_1.append(admin.get_nova_instance_ip(
|
||||
srv, net_name=self.inter_net_name))
|
||||
|
||||
ips = []
|
||||
fip_2 = openstack.create_and_assign_floating_ips(test, srv_2)
|
||||
ips_2 = []
|
||||
for srv in srv_2:
|
||||
ip = srv.networks[srv.networks.keys()[0]][0]
|
||||
ips.append(ip)
|
||||
ips_2.append(test.get_nova_instance_ip(
|
||||
srv, net_name=network_test['name']))
|
||||
|
||||
logger.info(ips)
|
||||
logger.info(srv_1)
|
||||
primary_controller = self.fuel_web.get_nailgun_primary_node(
|
||||
controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.env.d_env.nodes().slaves[0]
|
||||
)
|
||||
ssh_controller = self.fuel_web.get_ssh_for_node(
|
||||
primary_controller.name)
|
||||
openstack.check_connection_vms(
|
||||
os_conn=admin, srv_list=srv_1, command='pingv4',
|
||||
result_of_command=1,
|
||||
remote=ssh_controller, destination_ip=ips
|
||||
)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_contr:
|
||||
openstack.check_connection_vms(
|
||||
admin, fip_1, remote=ssh_contr,
|
||||
command='pingv4', destination_ip=ips_2, result_of_command=1)
|
||||
openstack.check_connection_vms(
|
||||
admin, fip_2, remote=ssh_contr,
|
||||
command='pingv4', destination_ip=ips_1, result_of_command=1)
|
||||
|
||||
@test(depends_on=[dvs_vcenter_systest_setup],
|
||||
groups=["dvs_vcenter_same_ip", 'dvs_vcenter_system'])
|
||||
@ -765,14 +740,14 @@ class TestDVSSystem(TestBasic):
|
||||
3. Create private network net01 with subnet in non-admin tenant.
|
||||
4. Create Router_01, set gateway and add interface
|
||||
to external network.
|
||||
5. Create private network net01 with subnet in default admin tenant
|
||||
6. Create Router_01, set gateway and add interface
|
||||
to external network.
|
||||
7. Launch instances VM_1 and VM_2
|
||||
5. Launch instances VM_1 and VM_2
|
||||
in the net01(non-admin tenant)
|
||||
with image TestVM and flavor m1.micro in nova az.
|
||||
8. Launch instances VM_3 and VM_4 in the net01(non-admin tenant)
|
||||
6. Launch instances VM_3 and VM_4 in the net01(non-admin tenant)
|
||||
with image TestVM-VMDK and flavor m1.micro in vcenter az.
|
||||
7. Create private network net01 with subnet in default admin tenant
|
||||
8. Create Router_01, set gateway and add interface
|
||||
to external network.
|
||||
9. Launch instances VM_5 and VM_6
|
||||
in the net01(default admin tenant)
|
||||
with image TestVM and flavor m1.micro in nova az.
|
||||
@ -787,6 +762,7 @@ class TestDVSSystem(TestBasic):
|
||||
Duration: 30 min
|
||||
|
||||
"""
|
||||
self.show_step(1)
|
||||
self.env.revert_snapshot("dvs_vcenter_systest_setup")
|
||||
|
||||
cluster_id = self.fuel_web.get_last_created_cluster()
|
||||
@ -797,119 +773,99 @@ class TestDVSSystem(TestBasic):
|
||||
SERVTEST_PASSWORD,
|
||||
SERVTEST_TENANT)
|
||||
|
||||
# Create non-admin tenant.
|
||||
tenant_admin = admin.get_tenant(SERVTEST_TENANT)
|
||||
|
||||
self.show_step(2)
|
||||
admin.create_user_and_tenant('test', 'test', 'test')
|
||||
openstack.add_role_to_user(admin, 'test', 'admin', 'test')
|
||||
|
||||
test = os_actions.OpenStackActions(
|
||||
os_ip, 'test', 'test', 'test')
|
||||
|
||||
# Create non default network with subnet in test tenant.
|
||||
logger.info('Create network {}'.format(self.net_data[0].keys()[0]))
|
||||
network = openstack.create_network(
|
||||
test,
|
||||
self.net_data[0].keys()[0], tenant_name='test'
|
||||
)
|
||||
tenant = test.get_tenant('test')
|
||||
|
||||
logger.info('Create subnet {}'.format(self.net_data[0].keys()[0]))
|
||||
subnet = openstack.create_subnet(
|
||||
test,
|
||||
network,
|
||||
self.net_data[0][self.net_data[0].keys()[0]],
|
||||
tenant_name='test'
|
||||
)
|
||||
self.show_step(3)
|
||||
logger.info('Create network {}'.format(self.net_data[0].keys()[0]))
|
||||
network = test.create_network(
|
||||
network_name=self.net_data[0].keys()[0],
|
||||
tenant_id=tenant.id)['network']
|
||||
|
||||
subnet = test.create_subnet(
|
||||
subnet_name=network['name'],
|
||||
network_id=network['id'],
|
||||
cidr=self.net_data[0][self.net_data[0].keys()[0]],
|
||||
ip_version=4)
|
||||
|
||||
self.show_step(4)
|
||||
router = test.create_router('router_1', tenant=tenant)
|
||||
test.add_router_interface(
|
||||
router_id=router["id"],
|
||||
subnet_id=subnet["id"])
|
||||
|
||||
# create security group with rules for ssh and ping
|
||||
security_group = test.create_sec_group_for_ssh()
|
||||
|
||||
# Launch instances VM_1 and VM_2 in the net01(non-admin tenant)
|
||||
# with image TestVM and flavor m1.micro in nova az.
|
||||
# Launch instances VM_3 and VM_4 in the net01(non-admin tenant)
|
||||
# with image TestVM-VMDK and flavor m1.micro in vcenter az.
|
||||
openstack.create_instances(
|
||||
self.show_step(5)
|
||||
self.show_step(6)
|
||||
srv_1 = openstack.create_instances(
|
||||
os_conn=test, nics=[{'net-id': network['id']}], vm_count=1,
|
||||
security_groups=[security_group.name]
|
||||
)
|
||||
openstack.verify_instance_state(test)
|
||||
|
||||
# Create Router_01, set gateway and add interface
|
||||
# to external network.
|
||||
router_1 = openstack.add_router(
|
||||
test,
|
||||
'router_1',
|
||||
ext_net_name=self.ext_net_name, tenant_name='test'
|
||||
)
|
||||
fip_1 = openstack.create_and_assign_floating_ips(test, srv_1)
|
||||
ips_1 = []
|
||||
for srv in srv_1:
|
||||
ips_1.append(test.get_nova_instance_ip(
|
||||
srv, net_name=network['name']))
|
||||
|
||||
# Add net_1 to router_1
|
||||
openstack.add_subnet_to_router(
|
||||
test,
|
||||
router_1['id'], subnet['id'])
|
||||
|
||||
srv_1 = test.get_servers()
|
||||
openstack.create_and_assign_floating_ip(
|
||||
os_conn=test,
|
||||
srv_list=srv_1,
|
||||
ext_net=None,
|
||||
tenant_id=test.get_tenant('test').id)
|
||||
srv_1 = test.get_servers()
|
||||
# create security group with rules for ssh and ping
|
||||
security_group = admin.create_sec_group_for_ssh()
|
||||
# Create non default network with subnet in admin tenant.
|
||||
|
||||
self.show_step(7)
|
||||
logger.info('Create network {}'.format(self.net_data[0].keys()[0]))
|
||||
network = openstack.create_network(
|
||||
admin,
|
||||
self.net_data[0].keys()[0])
|
||||
network = admin.create_network(
|
||||
network_name=self.net_data[0].keys()[0],
|
||||
tenant_id=tenant_admin.id)['network']
|
||||
|
||||
logger.info('Create subnet {}'.format(self.net_data[0].keys()[0]))
|
||||
subnet = openstack.create_subnet(
|
||||
admin,
|
||||
network,
|
||||
self.net_data[0][self.net_data[0].keys()[0]])
|
||||
subnet = admin.create_subnet(
|
||||
subnet_name=network['name'],
|
||||
network_id=network['id'],
|
||||
cidr=self.net_data[0][self.net_data[0].keys()[0]],
|
||||
ip_version=4)
|
||||
|
||||
# Launch instances VM_5 and VM_6
|
||||
# in the net01(default admin tenant)
|
||||
# with image TestVM and flavor m1.micro in nova az.
|
||||
# Launch instances VM_7 and VM_8
|
||||
# in the net01(default admin tenant)
|
||||
# with image TestVM-VMDK and flavor m1.micro in vcenter az.
|
||||
openstack.create_instances(
|
||||
self.show_step(8)
|
||||
router = admin.create_router('router_1', tenant=tenant)
|
||||
admin.add_router_interface(
|
||||
router_id=router["id"],
|
||||
subnet_id=subnet["id"])
|
||||
|
||||
self.show_step(9)
|
||||
self.show_step(10)
|
||||
srv_2 = openstack.create_instances(
|
||||
os_conn=admin, nics=[{'net-id': network['id']}], vm_count=1,
|
||||
security_groups=[security_group.name])
|
||||
openstack.verify_instance_state(admin)
|
||||
|
||||
# Create Router_01, set gateway and add interface
|
||||
# to external network.
|
||||
router_1 = openstack.add_router(
|
||||
admin,
|
||||
'router_1')
|
||||
self.show_step(11)
|
||||
self.show_step(12)
|
||||
fip_2 = openstack.create_and_assign_floating_ips(admin, srv_2)
|
||||
ips_2 = []
|
||||
for srv in srv_2:
|
||||
ips_2.append(admin.get_nova_instance_ip(
|
||||
srv, net_name=network['name']))
|
||||
|
||||
# Add net_1 to router_1
|
||||
openstack.add_subnet_to_router(
|
||||
admin,
|
||||
router_1['id'], subnet['id'])
|
||||
|
||||
# Send ping between instances
|
||||
# via no floating ip
|
||||
srv_2 = admin.get_servers()
|
||||
openstack.create_and_assign_floating_ip(
|
||||
os_conn=admin,
|
||||
srv_list=srv_2)
|
||||
srv_2 = admin.get_servers()
|
||||
|
||||
# Verify that VM_1, VM_2, VM_3 and VM_4 should communicate
|
||||
# between each other via fixed ip.
|
||||
primary_controller = self.fuel_web.get_nailgun_primary_node(
|
||||
controller = self.fuel_web.get_nailgun_primary_node(
|
||||
self.env.d_env.nodes().slaves[0]
|
||||
)
|
||||
ssh_controller = self.fuel_web.get_ssh_for_node(
|
||||
primary_controller.name)
|
||||
openstack.check_connection_vms(
|
||||
os_conn=test, srv_list=srv_1, remote=ssh_controller)
|
||||
|
||||
# Verify that VM_5, VM_6, VM_7 and VM_8 should communicate
|
||||
# between each other via fixed ip.
|
||||
openstack.check_connection_vms(os_conn=admin, srv_list=srv_2,
|
||||
remote=ssh_controller)
|
||||
with self.fuel_web.get_ssh_for_node(controller.name) as ssh_contr:
|
||||
openstack.check_connection_vms(
|
||||
test, fip_1, remote=ssh_contr,
|
||||
command='pingv4', destination_ip=ips_1)
|
||||
openstack.check_connection_vms(
|
||||
admin, fip_2, remote=ssh_contr,
|
||||
command='pingv4', destination_ip=ips_2)
|
||||
|
||||
@test(depends_on=[SetupEnvironment.prepare_slaves_5],
|
||||
groups=["dvs_volume", 'dvs_vcenter_system'])
|
||||
@ -1471,10 +1427,9 @@ class TestDVSSystem(TestBasic):
|
||||
map_router_subnet[1]['router'],
|
||||
{"subnet_id": map_router_subnet[1]['subnet']})
|
||||
|
||||
openstack.add_subnet_to_router(
|
||||
admin,
|
||||
map_router_subnet[0]['router'],
|
||||
map_router_subnet[1]['subnet'])
|
||||
admin.add_router_interface(
|
||||
router_id=map_router_subnet[0]['router'],
|
||||
subnet_id=map_router_subnet[1]['subnet'])
|
||||
time.sleep(20) # need wait to port state update
|
||||
self.show_step(14)
|
||||
for ip in instances_group[1]['private_ips']:
|
||||
|
Loading…
Reference in New Issue
Block a user