Merge "Migrate scenario tests ssh-auth-strategy"
This commit is contained in:
commit
4662ac0b32
@ -23,7 +23,7 @@ import six
|
|||||||
from tempest_lib.common.utils import misc as misc_utils
|
from tempest_lib.common.utils import misc as misc_utils
|
||||||
from tempest_lib import exceptions as lib_exc
|
from tempest_lib import exceptions as lib_exc
|
||||||
|
|
||||||
from tempest.common import fixed_network
|
from tempest.common import compute
|
||||||
from tempest.common.utils import data_utils
|
from tempest.common.utils import data_utils
|
||||||
from tempest.common.utils.linux import remote_client
|
from tempest.common.utils.linux import remote_client
|
||||||
from tempest.common import waiters
|
from tempest.common import waiters
|
||||||
@ -158,52 +158,100 @@ class ScenarioTest(tempest.test.BaseTestCase):
|
|||||||
return body['keypair']
|
return body['keypair']
|
||||||
|
|
||||||
def create_server(self, name=None, image=None, flavor=None,
|
def create_server(self, name=None, image=None, flavor=None,
|
||||||
wait_on_boot=True, wait_on_delete=True,
|
validatable=False, wait_until=None,
|
||||||
create_kwargs=None):
|
wait_on_delete=True, clients=None, **kwargs):
|
||||||
"""Creates VM instance.
|
"""Wrapper utility that returns a test server.
|
||||||
|
|
||||||
@param image: image from which to create the instance
|
This wrapper utility calls the common create test server and
|
||||||
@param wait_on_boot: wait for status ACTIVE before continue
|
returns a test server. The purpose of this wrapper is to minimize
|
||||||
@param wait_on_delete: force synchronous delete on cleanup
|
the impact on the code of the tests already using this
|
||||||
@param create_kwargs: additional details for instance creation
|
function.
|
||||||
@return: server dict
|
|
||||||
"""
|
"""
|
||||||
if name is None:
|
|
||||||
name = data_utils.rand_name(self.__class__.__name__)
|
|
||||||
if image is None:
|
|
||||||
image = CONF.compute.image_ref
|
|
||||||
if flavor is None:
|
|
||||||
flavor = CONF.compute.flavor_ref
|
|
||||||
if create_kwargs is None:
|
|
||||||
create_kwargs = {}
|
|
||||||
network = self.get_tenant_network()
|
|
||||||
create_kwargs = fixed_network.set_networks_kwarg(network,
|
|
||||||
create_kwargs)
|
|
||||||
|
|
||||||
LOG.debug("Creating a server (name: %s, image: %s, flavor: %s)",
|
# NOTE(jlanoux): As a first step, ssh checks in the scenario
|
||||||
name, image, flavor)
|
# tests need to be run regardless of the run_validation and
|
||||||
server = self.servers_client.create_server(name=name, imageRef=image,
|
# validatable parameters and thus until the ssh validation job
|
||||||
flavorRef=flavor,
|
# becomes voting in CI. The test resources management and IP
|
||||||
**create_kwargs)['server']
|
# association are taken care of in the scenario tests.
|
||||||
|
# Therefore, the validatable parameter is set to false in all
|
||||||
|
# those tests. In this way create_server just return a standard
|
||||||
|
# server and the scenario tests always perform ssh checks.
|
||||||
|
|
||||||
|
# Needed for the cross_tenant_traffic test:
|
||||||
|
if clients is None:
|
||||||
|
clients = self.manager
|
||||||
|
|
||||||
|
vnic_type = CONF.network.port_vnic_type
|
||||||
|
|
||||||
|
# If vnic_type is configured create port for
|
||||||
|
# every network
|
||||||
|
if vnic_type:
|
||||||
|
ports = []
|
||||||
|
networks = []
|
||||||
|
create_port_body = {'binding:vnic_type': vnic_type,
|
||||||
|
'namestart': 'port-smoke'}
|
||||||
|
if kwargs:
|
||||||
|
# Convert security group names to security group ids
|
||||||
|
# to pass to create_port
|
||||||
|
if 'security_groups' in kwargs:
|
||||||
|
security_groups =\
|
||||||
|
clients.network_client.list_security_groups(
|
||||||
|
).get('security_groups')
|
||||||
|
sec_dict = dict([(s['name'], s['id'])
|
||||||
|
for s in security_groups])
|
||||||
|
|
||||||
|
sec_groups_names = [s['name'] for s in kwargs.pop(
|
||||||
|
'security_groups')]
|
||||||
|
security_groups_ids = [sec_dict[s]
|
||||||
|
for s in sec_groups_names]
|
||||||
|
|
||||||
|
if security_groups_ids:
|
||||||
|
create_port_body[
|
||||||
|
'security_groups'] = security_groups_ids
|
||||||
|
networks = kwargs.pop('networks')
|
||||||
|
|
||||||
|
# If there are no networks passed to us we look up
|
||||||
|
# for the tenant's private networks and create a port
|
||||||
|
# if there is only one private network. The same behaviour
|
||||||
|
# as we would expect when passing the call to the clients
|
||||||
|
# with no networks
|
||||||
|
if not networks:
|
||||||
|
networks = clients.networks_client.list_networks(
|
||||||
|
filters={'router:external': False})
|
||||||
|
self.assertEqual(1, len(networks),
|
||||||
|
"There is more than one"
|
||||||
|
" network for the tenant")
|
||||||
|
for net in networks:
|
||||||
|
net_id = net['uuid']
|
||||||
|
port = self._create_port(network_id=net_id,
|
||||||
|
client=clients.ports_client,
|
||||||
|
**create_port_body)
|
||||||
|
ports.append({'port': port.id})
|
||||||
|
if ports:
|
||||||
|
kwargs['networks'] = ports
|
||||||
|
self.ports = ports
|
||||||
|
|
||||||
|
tenant_network = self.get_tenant_network()
|
||||||
|
|
||||||
|
body, servers = compute.create_test_server(
|
||||||
|
clients,
|
||||||
|
tenant_network=tenant_network,
|
||||||
|
wait_until=wait_until,
|
||||||
|
**kwargs)
|
||||||
|
|
||||||
|
# TODO(jlanoux) Move wait_on_delete in compute.py
|
||||||
if wait_on_delete:
|
if wait_on_delete:
|
||||||
self.addCleanup(waiters.wait_for_server_termination,
|
self.addCleanup(waiters.wait_for_server_termination,
|
||||||
self.servers_client,
|
clients.servers_client,
|
||||||
server['id'])
|
body['id'])
|
||||||
|
|
||||||
self.addCleanup_with_wait(
|
self.addCleanup_with_wait(
|
||||||
waiter_callable=waiters.wait_for_server_termination,
|
waiter_callable=waiters.wait_for_server_termination,
|
||||||
thing_id=server['id'], thing_id_param='server_id',
|
thing_id=body['id'], thing_id_param='server_id',
|
||||||
cleanup_callable=self.delete_wrapper,
|
cleanup_callable=self.delete_wrapper,
|
||||||
cleanup_args=[self.servers_client.delete_server, server['id']],
|
cleanup_args=[clients.servers_client.delete_server, body['id']],
|
||||||
waiter_client=self.servers_client)
|
waiter_client=clients.servers_client)
|
||||||
if wait_on_boot:
|
server = clients.servers_client.show_server(body['id'])['server']
|
||||||
waiters.wait_for_server_status(self.servers_client,
|
|
||||||
server_id=server['id'],
|
|
||||||
status='ACTIVE')
|
|
||||||
# The instance retrieved on creation is missing network
|
|
||||||
# details, necessitating retrieval after it becomes active to
|
|
||||||
# ensure correct details.
|
|
||||||
server = self.servers_client.show_server(server['id'])['server']
|
|
||||||
self.assertEqual(server['name'], name)
|
|
||||||
return server
|
return server
|
||||||
|
|
||||||
def create_volume(self, size=None, name=None, snapshot_id=None,
|
def create_volume(self, size=None, name=None, snapshot_id=None,
|
||||||
@ -321,7 +369,7 @@ class ScenarioTest(tempest.test.BaseTestCase):
|
|||||||
username = CONF.scenario.ssh_user
|
username = CONF.scenario.ssh_user
|
||||||
# Set this with 'keypair' or others to log in with keypair or
|
# Set this with 'keypair' or others to log in with keypair or
|
||||||
# username/password.
|
# username/password.
|
||||||
if CONF.compute.ssh_auth_method == 'keypair':
|
if CONF.validation.auth_method == 'keypair':
|
||||||
password = None
|
password = None
|
||||||
if private_key is None:
|
if private_key is None:
|
||||||
private_key = self.keypair['private_key']
|
private_key = self.keypair['private_key']
|
||||||
@ -491,7 +539,7 @@ class ScenarioTest(tempest.test.BaseTestCase):
|
|||||||
|
|
||||||
def ping_ip_address(self, ip_address, should_succeed=True,
|
def ping_ip_address(self, ip_address, should_succeed=True,
|
||||||
ping_timeout=None):
|
ping_timeout=None):
|
||||||
timeout = ping_timeout or CONF.compute.ping_timeout
|
timeout = ping_timeout or CONF.validation.ping_timeout
|
||||||
cmd = ['ping', '-c1', '-w1', ip_address]
|
cmd = ['ping', '-c1', '-w1', ip_address]
|
||||||
|
|
||||||
def ping():
|
def ping():
|
||||||
@ -886,7 +934,7 @@ class NetworkScenarioTest(ScenarioTest):
|
|||||||
return should_succeed
|
return should_succeed
|
||||||
|
|
||||||
return tempest.test.call_until_true(ping_remote,
|
return tempest.test.call_until_true(ping_remote,
|
||||||
CONF.compute.ping_timeout,
|
CONF.validation.ping_timeout,
|
||||||
1)
|
1)
|
||||||
|
|
||||||
def _create_security_group(self, client=None, tenant_id=None,
|
def _create_security_group(self, client=None, tenant_id=None,
|
||||||
@ -1137,71 +1185,6 @@ class NetworkScenarioTest(ScenarioTest):
|
|||||||
subnet.add_to_router(router.id)
|
subnet.add_to_router(router.id)
|
||||||
return network, subnet, router
|
return network, subnet, router
|
||||||
|
|
||||||
def create_server(self, name=None, image=None, flavor=None,
|
|
||||||
wait_on_boot=True, wait_on_delete=True,
|
|
||||||
network_client=None, networks_client=None,
|
|
||||||
ports_client=None, create_kwargs=None):
|
|
||||||
if network_client is None:
|
|
||||||
network_client = self.network_client
|
|
||||||
if networks_client is None:
|
|
||||||
networks_client = self.networks_client
|
|
||||||
if ports_client is None:
|
|
||||||
ports_client = self.ports_client
|
|
||||||
|
|
||||||
vnic_type = CONF.network.port_vnic_type
|
|
||||||
|
|
||||||
# If vnic_type is configured create port for
|
|
||||||
# every network
|
|
||||||
if vnic_type:
|
|
||||||
ports = []
|
|
||||||
networks = []
|
|
||||||
create_port_body = {'binding:vnic_type': vnic_type,
|
|
||||||
'namestart': 'port-smoke'}
|
|
||||||
if create_kwargs:
|
|
||||||
# Convert security group names to security group ids
|
|
||||||
# to pass to create_port
|
|
||||||
if create_kwargs.get('security_groups'):
|
|
||||||
security_groups = network_client.list_security_groups(
|
|
||||||
).get('security_groups')
|
|
||||||
sec_dict = dict([(s['name'], s['id'])
|
|
||||||
for s in security_groups])
|
|
||||||
|
|
||||||
sec_groups_names = [s['name'] for s in create_kwargs.get(
|
|
||||||
'security_groups')]
|
|
||||||
security_groups_ids = [sec_dict[s]
|
|
||||||
for s in sec_groups_names]
|
|
||||||
|
|
||||||
if security_groups_ids:
|
|
||||||
create_port_body[
|
|
||||||
'security_groups'] = security_groups_ids
|
|
||||||
networks = create_kwargs.get('networks')
|
|
||||||
|
|
||||||
# If there are no networks passed to us we look up
|
|
||||||
# for the tenant's private networks and create a port
|
|
||||||
# if there is only one private network. The same behaviour
|
|
||||||
# as we would expect when passing the call to the clients
|
|
||||||
# with no networks
|
|
||||||
if not networks:
|
|
||||||
networks = networks_client.list_networks(filters={
|
|
||||||
'router:external': False})
|
|
||||||
self.assertEqual(1, len(networks),
|
|
||||||
"There is more than one"
|
|
||||||
" network for the tenant")
|
|
||||||
for net in networks:
|
|
||||||
net_id = net['uuid']
|
|
||||||
port = self._create_port(network_id=net_id,
|
|
||||||
client=ports_client,
|
|
||||||
**create_port_body)
|
|
||||||
ports.append({'port': port.id})
|
|
||||||
if ports:
|
|
||||||
create_kwargs['networks'] = ports
|
|
||||||
self.ports = ports
|
|
||||||
|
|
||||||
return super(NetworkScenarioTest, self).create_server(
|
|
||||||
name=name, image=image, flavor=flavor,
|
|
||||||
wait_on_boot=wait_on_boot, wait_on_delete=wait_on_delete,
|
|
||||||
create_kwargs=create_kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
# power/provision states as of icehouse
|
# power/provision states as of icehouse
|
||||||
class BaremetalPowerStates(object):
|
class BaremetalPowerStates(object):
|
||||||
@ -1324,11 +1307,8 @@ class BaremetalScenarioTest(ScenarioTest):
|
|||||||
dest.validate_authentication()
|
dest.validate_authentication()
|
||||||
|
|
||||||
def boot_instance(self):
|
def boot_instance(self):
|
||||||
create_kwargs = {
|
|
||||||
'key_name': self.keypair['name']
|
|
||||||
}
|
|
||||||
self.instance = self.create_server(
|
self.instance = self.create_server(
|
||||||
wait_on_boot=False, create_kwargs=create_kwargs)
|
key_name=self.keypair['name'])
|
||||||
|
|
||||||
self.wait_node(self.instance['id'])
|
self.wait_node(self.instance['id'])
|
||||||
self.node = self.get_node(instance_id=self.instance['id'])
|
self.node = self.get_node(instance_id=self.instance['id'])
|
||||||
|
@ -113,7 +113,7 @@ class BaremetalBasicOps(manager.BaremetalScenarioTest):
|
|||||||
self.boot_instance()
|
self.boot_instance()
|
||||||
self.validate_ports()
|
self.validate_ports()
|
||||||
self.verify_connectivity()
|
self.verify_connectivity()
|
||||||
if CONF.compute.ssh_connect_method == 'floating':
|
if CONF.validation.connect_method == 'floating':
|
||||||
floating_ip = self.create_floating_ip(self.instance)['ip']
|
floating_ip = self.create_floating_ip(self.instance)['ip']
|
||||||
self.verify_connectivity(ip=floating_ip)
|
self.verify_connectivity(ip=floating_ip)
|
||||||
|
|
||||||
|
@ -45,8 +45,9 @@ class TestEncryptedCinderVolumes(manager.EncryptionScenarioTest):
|
|||||||
image = self.glance_image_create()
|
image = self.glance_image_create()
|
||||||
keypair = self.create_keypair()
|
keypair = self.create_keypair()
|
||||||
|
|
||||||
return self.create_server(image=image,
|
return self.create_server(image_id=image,
|
||||||
create_kwargs={'key_name': keypair['name']})
|
key_name=keypair['name'],
|
||||||
|
wait_until='ACTIVE')
|
||||||
|
|
||||||
def create_encrypted_volume(self, encryption_provider, volume_type):
|
def create_encrypted_volume(self, encryption_provider, volume_type):
|
||||||
volume_type = self.create_volume_type(name=volume_type)
|
volume_type = self.create_volume_type(name=volume_type)
|
||||||
|
@ -117,9 +117,9 @@ class TestMinimumBasicScenario(manager.ScenarioTest):
|
|||||||
image = self.glance_image_create()
|
image = self.glance_image_create()
|
||||||
keypair = self.create_keypair()
|
keypair = self.create_keypair()
|
||||||
|
|
||||||
create_kwargs = {'key_name': keypair['name']}
|
server = self.create_server(image_id=image,
|
||||||
server = self.create_server(image=image,
|
key_name=keypair['name'],
|
||||||
create_kwargs=create_kwargs)
|
wait_until='ACTIVE')
|
||||||
servers = self.nova_list()
|
servers = self.nova_list()
|
||||||
self.assertIn(server['id'], [x['id'] for x in servers])
|
self.assertIn(server['id'], [x['id'] for x in servers])
|
||||||
|
|
||||||
|
@ -57,16 +57,13 @@ class TestNetworkAdvancedServerOps(manager.NetworkScenarioTest):
|
|||||||
security_group = self._create_security_group()
|
security_group = self._create_security_group()
|
||||||
network, subnet, router = self.create_networks()
|
network, subnet, router = self.create_networks()
|
||||||
public_network_id = CONF.network.public_network_id
|
public_network_id = CONF.network.public_network_id
|
||||||
create_kwargs = {
|
|
||||||
'networks': [
|
|
||||||
{'uuid': network.id},
|
|
||||||
],
|
|
||||||
'key_name': keypair['name'],
|
|
||||||
'security_groups': [{'name': security_group['name']}],
|
|
||||||
}
|
|
||||||
server_name = data_utils.rand_name('server-smoke')
|
server_name = data_utils.rand_name('server-smoke')
|
||||||
server = self.create_server(name=server_name,
|
server = self.create_server(
|
||||||
create_kwargs=create_kwargs)
|
name=server_name,
|
||||||
|
networks=[{'uuid': network.id}],
|
||||||
|
key_name=keypair['name'],
|
||||||
|
security_groups=[{'name': security_group['name']}],
|
||||||
|
wait_until='ACTIVE')
|
||||||
floating_ip = self.create_floating_ip(server, public_network_id)
|
floating_ip = self.create_floating_ip(server, public_network_id)
|
||||||
# Verify that we can indeed connect to the server before we mess with
|
# Verify that we can indeed connect to the server before we mess with
|
||||||
# it's state
|
# it's state
|
||||||
|
@ -155,16 +155,16 @@ class TestNetworkBasicOps(manager.NetworkScenarioTest):
|
|||||||
keypair = self.create_keypair()
|
keypair = self.create_keypair()
|
||||||
self.keypairs[keypair['name']] = keypair
|
self.keypairs[keypair['name']] = keypair
|
||||||
security_groups = [{'name': self.security_group['name']}]
|
security_groups = [{'name': self.security_group['name']}]
|
||||||
create_kwargs = {
|
network = {'uuid': network.id}
|
||||||
'networks': [
|
|
||||||
{'uuid': network.id},
|
|
||||||
],
|
|
||||||
'key_name': keypair['name'],
|
|
||||||
'security_groups': security_groups,
|
|
||||||
}
|
|
||||||
if port_id is not None:
|
if port_id is not None:
|
||||||
create_kwargs['networks'][0]['port'] = port_id
|
network['port'] = port_id
|
||||||
server = self.create_server(name=name, create_kwargs=create_kwargs)
|
|
||||||
|
server = self.create_server(
|
||||||
|
name=name,
|
||||||
|
networks=[network],
|
||||||
|
key_name=keypair['name'],
|
||||||
|
security_groups=security_groups,
|
||||||
|
wait_until='ACTIVE')
|
||||||
self.servers.append(server)
|
self.servers.append(server)
|
||||||
return server
|
return server
|
||||||
|
|
||||||
|
@ -65,9 +65,6 @@ class TestGettingAddress(manager.NetworkScenarioTest):
|
|||||||
super(TestGettingAddress, self).setUp()
|
super(TestGettingAddress, self).setUp()
|
||||||
self.keypair = self.create_keypair()
|
self.keypair = self.create_keypair()
|
||||||
self.sec_grp = self._create_security_group(tenant_id=self.tenant_id)
|
self.sec_grp = self._create_security_group(tenant_id=self.tenant_id)
|
||||||
self.srv_kwargs = {
|
|
||||||
'key_name': self.keypair['name'],
|
|
||||||
'security_groups': [{'name': self.sec_grp['name']}]}
|
|
||||||
|
|
||||||
def prepare_network(self, address6_mode, n_subnets6=1, dualnet=False):
|
def prepare_network(self, address6_mode, n_subnets6=1, dualnet=False):
|
||||||
"""Prepare network
|
"""Prepare network
|
||||||
@ -119,11 +116,13 @@ class TestGettingAddress(manager.NetworkScenarioTest):
|
|||||||
def prepare_server(self, networks=None):
|
def prepare_server(self, networks=None):
|
||||||
username = CONF.compute.image_ssh_user
|
username = CONF.compute.image_ssh_user
|
||||||
|
|
||||||
create_kwargs = self.srv_kwargs
|
|
||||||
networks = networks or [self.network]
|
networks = networks or [self.network]
|
||||||
create_kwargs['networks'] = [{'uuid': n.id} for n in networks]
|
|
||||||
|
|
||||||
srv = self.create_server(create_kwargs=create_kwargs)
|
srv = self.create_server(
|
||||||
|
key_name=self.keypair['name'],
|
||||||
|
security_groups=[{'name': self.sec_grp['name']}],
|
||||||
|
networks=[{'uuid': n.id} for n in networks],
|
||||||
|
wait_until='ACTIVE')
|
||||||
fip = self.create_floating_ip(thing=srv)
|
fip = self.create_floating_ip(thing=srv)
|
||||||
ips = self.define_server_ips(srv=srv)
|
ips = self.define_server_ips(srv=srv)
|
||||||
ssh = self.get_remote_client(
|
ssh = self.get_remote_client(
|
||||||
@ -181,10 +180,10 @@ class TestGettingAddress(manager.NetworkScenarioTest):
|
|||||||
guest_has_address, sshv4_2, ips_from_api_2['6'][i])
|
guest_has_address, sshv4_2, ips_from_api_2['6'][i])
|
||||||
|
|
||||||
self.assertTrue(test.call_until_true(srv1_v6_addr_assigned,
|
self.assertTrue(test.call_until_true(srv1_v6_addr_assigned,
|
||||||
CONF.compute.ping_timeout, 1))
|
CONF.validation.ping_timeout, 1))
|
||||||
|
|
||||||
self.assertTrue(test.call_until_true(srv2_v6_addr_assigned,
|
self.assertTrue(test.call_until_true(srv2_v6_addr_assigned,
|
||||||
CONF.compute.ping_timeout, 1))
|
CONF.validation.ping_timeout, 1))
|
||||||
|
|
||||||
self._check_connectivity(sshv4_1, ips_from_api_2['4'])
|
self._check_connectivity(sshv4_1, ips_from_api_2['4'])
|
||||||
self._check_connectivity(sshv4_2, ips_from_api_1['4'])
|
self._check_connectivity(sshv4_2, ips_from_api_1['4'])
|
||||||
|
@ -234,23 +234,16 @@ class TestSecurityGroupsBasicOps(manager.NetworkScenarioTest):
|
|||||||
|
|
||||||
def _create_server(self, name, tenant, security_groups=None):
|
def _create_server(self, name, tenant, security_groups=None):
|
||||||
"""creates a server and assigns to security group"""
|
"""creates a server and assigns to security group"""
|
||||||
self._set_compute_context(tenant)
|
|
||||||
if security_groups is None:
|
if security_groups is None:
|
||||||
security_groups = [tenant.security_groups['default']]
|
security_groups = [tenant.security_groups['default']]
|
||||||
security_groups_names = [{'name': s['name']} for s in security_groups]
|
security_groups_names = [{'name': s['name']} for s in security_groups]
|
||||||
create_kwargs = {
|
|
||||||
'networks': [
|
|
||||||
{'uuid': tenant.network.id},
|
|
||||||
],
|
|
||||||
'key_name': tenant.keypair['name'],
|
|
||||||
'security_groups': security_groups_names
|
|
||||||
}
|
|
||||||
server = self.create_server(
|
server = self.create_server(
|
||||||
name=name,
|
name=name,
|
||||||
network_client=tenant.manager.network_client,
|
networks=[{'uuid': tenant.network.id}],
|
||||||
networks_client=tenant.manager.networks_client,
|
key_name=tenant.keypair['name'],
|
||||||
ports_client=tenant.manager.ports_client,
|
security_groups=security_groups_names,
|
||||||
create_kwargs=create_kwargs)
|
wait_until='ACTIVE',
|
||||||
|
clients=tenant.manager)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
sorted([s['name'] for s in security_groups]),
|
sorted([s['name'] for s in security_groups]),
|
||||||
sorted([s['name'] for s in server['security_groups']]))
|
sorted([s['name'] for s in server['security_groups']]))
|
||||||
@ -293,10 +286,6 @@ class TestSecurityGroupsBasicOps(manager.NetworkScenarioTest):
|
|||||||
subnets_client=tenant.manager.subnets_client)
|
subnets_client=tenant.manager.subnets_client)
|
||||||
tenant.set_network(network, subnet, router)
|
tenant.set_network(network, subnet, router)
|
||||||
|
|
||||||
def _set_compute_context(self, tenant):
|
|
||||||
self.servers_client = tenant.manager.servers_client
|
|
||||||
return self.servers_client
|
|
||||||
|
|
||||||
def _deploy_tenant(self, tenant_or_id):
|
def _deploy_tenant(self, tenant_or_id):
|
||||||
"""creates:
|
"""creates:
|
||||||
|
|
||||||
@ -310,7 +299,6 @@ class TestSecurityGroupsBasicOps(manager.NetworkScenarioTest):
|
|||||||
tenant = self.tenants[tenant_or_id]
|
tenant = self.tenants[tenant_or_id]
|
||||||
else:
|
else:
|
||||||
tenant = tenant_or_id
|
tenant = tenant_or_id
|
||||||
self._set_compute_context(tenant)
|
|
||||||
self._create_tenant_keypairs(tenant)
|
self._create_tenant_keypairs(tenant)
|
||||||
self._create_tenant_network(tenant)
|
self._create_tenant_network(tenant)
|
||||||
self._create_tenant_security_groups(tenant)
|
self._create_tenant_security_groups(tenant)
|
||||||
|
@ -53,7 +53,7 @@ class TestServerAdvancedOps(manager.ScenarioTest):
|
|||||||
@test.services('compute')
|
@test.services('compute')
|
||||||
def test_resize_server_confirm(self):
|
def test_resize_server_confirm(self):
|
||||||
# We create an instance for use in this test
|
# We create an instance for use in this test
|
||||||
instance = self.create_server()
|
instance = self.create_server(wait_until='ACTIVE')
|
||||||
instance_id = instance['id']
|
instance_id = instance['id']
|
||||||
resize_flavor = CONF.compute.flavor_ref_alt
|
resize_flavor = CONF.compute.flavor_ref_alt
|
||||||
LOG.debug("Resizing instance %s from flavor %s to flavor %s",
|
LOG.debug("Resizing instance %s from flavor %s to flavor %s",
|
||||||
@ -74,7 +74,7 @@ class TestServerAdvancedOps(manager.ScenarioTest):
|
|||||||
@test.services('compute')
|
@test.services('compute')
|
||||||
def test_server_sequence_suspend_resume(self):
|
def test_server_sequence_suspend_resume(self):
|
||||||
# We create an instance for use in this test
|
# We create an instance for use in this test
|
||||||
instance = self.create_server()
|
instance = self.create_server(wait_until='ACTIVE')
|
||||||
instance_id = instance['id']
|
instance_id = instance['id']
|
||||||
LOG.debug("Suspending instance %s. Current status: %s",
|
LOG.debug("Suspending instance %s. Current status: %s",
|
||||||
instance_id, instance['status'])
|
instance_id, instance['status'])
|
||||||
|
@ -72,20 +72,6 @@ class TestServerBasicOps(manager.ScenarioTest):
|
|||||||
def add_keypair(self):
|
def add_keypair(self):
|
||||||
self.keypair = self.create_keypair()
|
self.keypair = self.create_keypair()
|
||||||
|
|
||||||
def boot_instance(self):
|
|
||||||
# Create server with image and flavor from input scenario
|
|
||||||
security_groups = [{'name': self.security_group['name']}]
|
|
||||||
self.md = {'meta1': 'data1', 'meta2': 'data2', 'metaN': 'dataN'}
|
|
||||||
create_kwargs = {
|
|
||||||
'key_name': self.keypair['name'],
|
|
||||||
'security_groups': security_groups,
|
|
||||||
'config_drive': CONF.compute_feature_enabled.config_drive,
|
|
||||||
'metadata': self.md
|
|
||||||
}
|
|
||||||
self.instance = self.create_server(image=self.image_ref,
|
|
||||||
flavor=self.flavor_ref,
|
|
||||||
create_kwargs=create_kwargs)
|
|
||||||
|
|
||||||
def verify_ssh(self):
|
def verify_ssh(self):
|
||||||
if self.run_ssh:
|
if self.run_ssh:
|
||||||
# Obtain a floating IP
|
# Obtain a floating IP
|
||||||
@ -139,7 +125,16 @@ class TestServerBasicOps(manager.ScenarioTest):
|
|||||||
def test_server_basicops(self):
|
def test_server_basicops(self):
|
||||||
self.add_keypair()
|
self.add_keypair()
|
||||||
self.security_group = self._create_security_group()
|
self.security_group = self._create_security_group()
|
||||||
self.boot_instance()
|
security_groups = [{'name': self.security_group['name']}]
|
||||||
|
self.md = {'meta1': 'data1', 'meta2': 'data2', 'metaN': 'dataN'}
|
||||||
|
self.instance = self.create_server(
|
||||||
|
image_id=self.image_ref,
|
||||||
|
flavor=self.flavor_ref,
|
||||||
|
key_name=self.keypair['name'],
|
||||||
|
security_groups=security_groups,
|
||||||
|
config_drive=CONF.compute_feature_enabled.config_drive,
|
||||||
|
metadata=self.md,
|
||||||
|
wait_until='ACTIVE')
|
||||||
self.verify_ssh()
|
self.verify_ssh()
|
||||||
self.verify_metadata()
|
self.verify_metadata()
|
||||||
self.verify_metadata_on_config_drive()
|
self.verify_metadata_on_config_drive()
|
||||||
|
@ -60,15 +60,11 @@ class TestServerMultinode(manager.ScenarioTest):
|
|||||||
servers = []
|
servers = []
|
||||||
|
|
||||||
for host in hosts[:CONF.compute.min_compute_nodes]:
|
for host in hosts[:CONF.compute.min_compute_nodes]:
|
||||||
create_kwargs = {
|
|
||||||
'availability_zone': '%(zone)s:%(host_name)s' % host
|
|
||||||
}
|
|
||||||
|
|
||||||
# by getting to active state here, this means this has
|
# by getting to active state here, this means this has
|
||||||
# landed on the host in question.
|
# landed on the host in question.
|
||||||
inst = self.create_server(image=CONF.compute.image_ref,
|
inst = self.create_server(
|
||||||
flavor=CONF.compute.flavor_ref,
|
availability_zone='%(zone)s:%(host_name)s' % host,
|
||||||
create_kwargs=create_kwargs)
|
wait_until='ACTIVE')
|
||||||
server = self.servers_client.show_server(inst['id'])['server']
|
server = self.servers_client.show_server(inst['id'])['server']
|
||||||
servers.append(server)
|
servers.append(server)
|
||||||
|
|
||||||
|
@ -59,10 +59,6 @@ class TestShelveInstance(manager.ScenarioTest):
|
|||||||
|
|
||||||
security_group = self._create_security_group()
|
security_group = self._create_security_group()
|
||||||
security_groups = [{'name': security_group['name']}]
|
security_groups = [{'name': security_group['name']}]
|
||||||
create_kwargs = {
|
|
||||||
'key_name': keypair['name'],
|
|
||||||
'security_groups': security_groups
|
|
||||||
}
|
|
||||||
|
|
||||||
if boot_from_volume:
|
if boot_from_volume:
|
||||||
volume = self.create_volume(size=CONF.volume.volume_size,
|
volume = self.create_volume(size=CONF.volume.volume_size,
|
||||||
@ -72,11 +68,17 @@ class TestShelveInstance(manager.ScenarioTest):
|
|||||||
'volume_id': volume['id'],
|
'volume_id': volume['id'],
|
||||||
'delete_on_termination': '0'}]
|
'delete_on_termination': '0'}]
|
||||||
|
|
||||||
create_kwargs['block_device_mapping'] = bd_map
|
server = self.create_server(
|
||||||
server = self.create_server(create_kwargs=create_kwargs)
|
key_name=keypair['name'],
|
||||||
|
security_groups=security_groups,
|
||||||
|
block_device_mapping=bd_map,
|
||||||
|
wait_until='ACTIVE')
|
||||||
else:
|
else:
|
||||||
server = self.create_server(image=CONF.compute.image_ref,
|
server = self.create_server(
|
||||||
create_kwargs=create_kwargs)
|
image_id=CONF.compute.image_ref,
|
||||||
|
key_name=keypair['name'],
|
||||||
|
security_groups=security_groups,
|
||||||
|
wait_until='ACTIVE')
|
||||||
|
|
||||||
instance_ip = self.get_server_or_ip(server)
|
instance_ip = self.get_server_or_ip(server)
|
||||||
timestamp = self.create_timestamp(instance_ip,
|
timestamp = self.create_timestamp(instance_ip,
|
||||||
|
@ -36,14 +36,6 @@ class TestSnapshotPattern(manager.ScenarioTest):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _boot_image(self, image_id, keypair, security_group):
|
|
||||||
security_groups = [{'name': security_group['name']}]
|
|
||||||
create_kwargs = {
|
|
||||||
'key_name': keypair['name'],
|
|
||||||
'security_groups': security_groups
|
|
||||||
}
|
|
||||||
return self.create_server(image=image_id, create_kwargs=create_kwargs)
|
|
||||||
|
|
||||||
@test.idempotent_id('608e604b-1d63-4a82-8e3e-91bc665c90b4')
|
@test.idempotent_id('608e604b-1d63-4a82-8e3e-91bc665c90b4')
|
||||||
@testtools.skipUnless(CONF.compute_feature_enabled.snapshot,
|
@testtools.skipUnless(CONF.compute_feature_enabled.snapshot,
|
||||||
'Snapshotting is not available.')
|
'Snapshotting is not available.')
|
||||||
@ -54,8 +46,12 @@ class TestSnapshotPattern(manager.ScenarioTest):
|
|||||||
security_group = self._create_security_group()
|
security_group = self._create_security_group()
|
||||||
|
|
||||||
# boot an instance and create a timestamp file in it
|
# boot an instance and create a timestamp file in it
|
||||||
server = self._boot_image(CONF.compute.image_ref, keypair,
|
server = self.create_server(
|
||||||
security_group)
|
image_id=CONF.compute.image_ref,
|
||||||
|
key_name=keypair['name'],
|
||||||
|
security_groups=[{'name': security_group['name']}],
|
||||||
|
wait_until='ACTIVE')
|
||||||
|
|
||||||
instance_ip = self.get_server_or_ip(server)
|
instance_ip = self.get_server_or_ip(server)
|
||||||
timestamp = self.create_timestamp(instance_ip,
|
timestamp = self.create_timestamp(instance_ip,
|
||||||
private_key=keypair['private_key'])
|
private_key=keypair['private_key'])
|
||||||
@ -64,8 +60,11 @@ class TestSnapshotPattern(manager.ScenarioTest):
|
|||||||
snapshot_image = self.create_server_snapshot(server=server)
|
snapshot_image = self.create_server_snapshot(server=server)
|
||||||
|
|
||||||
# boot a second instance from the snapshot
|
# boot a second instance from the snapshot
|
||||||
server_from_snapshot = self._boot_image(snapshot_image['id'],
|
server_from_snapshot = self.create_server(
|
||||||
keypair, security_group)
|
image_id=snapshot_image['id'],
|
||||||
|
key_name=keypair['name'],
|
||||||
|
security_groups=[{'name': security_group['name']}],
|
||||||
|
wait_until='ACTIVE')
|
||||||
|
|
||||||
# check the existence of the timestamp file in the second instance
|
# check the existence of the timestamp file in the second instance
|
||||||
server_from_snapshot_ip = self.get_server_or_ip(server_from_snapshot)
|
server_from_snapshot_ip = self.get_server_or_ip(server_from_snapshot)
|
||||||
|
@ -64,14 +64,6 @@ class TestStampPattern(manager.ScenarioTest):
|
|||||||
self.snapshots_client.wait_for_snapshot_status(volume_snapshot['id'],
|
self.snapshots_client.wait_for_snapshot_status(volume_snapshot['id'],
|
||||||
status)
|
status)
|
||||||
|
|
||||||
def _boot_image(self, image_id, keypair, security_group):
|
|
||||||
security_groups = [{'name': security_group['name']}]
|
|
||||||
create_kwargs = {
|
|
||||||
'key_name': keypair['name'],
|
|
||||||
'security_groups': security_groups
|
|
||||||
}
|
|
||||||
return self.create_server(image=image_id, create_kwargs=create_kwargs)
|
|
||||||
|
|
||||||
def _create_volume_snapshot(self, volume):
|
def _create_volume_snapshot(self, volume):
|
||||||
snapshot_name = data_utils.rand_name('scenario-snapshot')
|
snapshot_name = data_utils.rand_name('scenario-snapshot')
|
||||||
snapshot = self.snapshots_client.create_snapshot(
|
snapshot = self.snapshots_client.create_snapshot(
|
||||||
@ -135,8 +127,11 @@ class TestStampPattern(manager.ScenarioTest):
|
|||||||
|
|
||||||
# boot an instance and create a timestamp file in it
|
# boot an instance and create a timestamp file in it
|
||||||
volume = self._create_volume()
|
volume = self._create_volume()
|
||||||
server = self._boot_image(CONF.compute.image_ref, keypair,
|
server = self.create_server(
|
||||||
security_group)
|
image_id=CONF.compute.image_ref,
|
||||||
|
key_name=keypair['name'],
|
||||||
|
security_groups=security_group,
|
||||||
|
wait_until='ACTIVE')
|
||||||
|
|
||||||
# create and add floating IP to server1
|
# create and add floating IP to server1
|
||||||
ip_for_server = self.get_server_or_ip(server)
|
ip_for_server = self.get_server_or_ip(server)
|
||||||
@ -160,8 +155,10 @@ class TestStampPattern(manager.ScenarioTest):
|
|||||||
snapshot_id=volume_snapshot['id'])
|
snapshot_id=volume_snapshot['id'])
|
||||||
|
|
||||||
# boot second instance from the snapshot(instance2)
|
# boot second instance from the snapshot(instance2)
|
||||||
server_from_snapshot = self._boot_image(snapshot_image['id'],
|
server_from_snapshot = self.create_server(
|
||||||
keypair, security_group)
|
image_id=snapshot_image['id'],
|
||||||
|
key_name=keypair['name'],
|
||||||
|
security_groups=security_group)
|
||||||
|
|
||||||
# create and add floating IP to server_from_snapshot
|
# create and add floating IP to server_from_snapshot
|
||||||
ip_for_snapshot = self.get_server_or_ip(server_from_snapshot)
|
ip_for_snapshot = self.get_server_or_ip(server_from_snapshot)
|
||||||
|
@ -69,7 +69,10 @@ class TestVolumeBootPattern(manager.ScenarioTest):
|
|||||||
{'name': security_group['name']}]
|
{'name': security_group['name']}]
|
||||||
create_kwargs.update(self._get_bdm(
|
create_kwargs.update(self._get_bdm(
|
||||||
vol_id, delete_on_termination=delete_on_termination))
|
vol_id, delete_on_termination=delete_on_termination))
|
||||||
return self.create_server(image='', create_kwargs=create_kwargs)
|
return self.create_server(
|
||||||
|
image='',
|
||||||
|
wait_until='ACTIVE',
|
||||||
|
**create_kwargs)
|
||||||
|
|
||||||
def _create_snapshot_from_volume(self, vol_id):
|
def _create_snapshot_from_volume(self, vol_id):
|
||||||
snap_name = data_utils.rand_name('snapshot')
|
snap_name = data_utils.rand_name('snapshot')
|
||||||
@ -158,7 +161,8 @@ class TestVolumeBootPattern(manager.ScenarioTest):
|
|||||||
self._delete_server(instance)
|
self._delete_server(instance)
|
||||||
|
|
||||||
# boot instance from EBS image
|
# boot instance from EBS image
|
||||||
instance = self.create_server(image=image['id'])
|
instance = self.create_server(
|
||||||
|
image_id=image['id'])
|
||||||
# just ensure that instance booted
|
# just ensure that instance booted
|
||||||
|
|
||||||
# delete instance
|
# delete instance
|
||||||
|
Loading…
Reference in New Issue
Block a user