Merge pull request #980 from Basdbruijne/sqa_integration
Make network, images, and keypair names envars
This commit is contained in:
@@ -24,3 +24,47 @@ test-requirements.txt:
|
||||
git+https://github.com/openstack-charmers/zaza.git#egg=zaza
|
||||
git+https://github.com/openstack-charmers/zaza-openstack-tests.git#egg=zaza.openstack
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Zaza-openstack-test uses environment variables to configure the tests:
|
||||
|
||||
| Env var | Description | Default Value |
|
||||
|------------------------------|-----------------------------------------------------------|-------------------------------------------------------------------------------------------------------|
|
||||
| `FUNCTEST_AMPHORA_LOCATION` | | `http://tarballs.openstack.org/octavia/test-images/test-only-amphora-x64-haproxy-ubuntu-xenial.qcow2` |
|
||||
| `MOJO_LOCAL_DIR` | | |
|
||||
| `OS_AUTH_URL` | Undercloud authentication url | |
|
||||
| `OS_PASSWORD` | Undercloud password | |
|
||||
| `OS_REGION_NAME` | Undercloud region name | |
|
||||
| `OS_TENANT_NAME` | Undercloud tenant name | |
|
||||
| `OS_USERNAME` | Undercloud username | |
|
||||
| `TEST_ARISTA_IMAGE_LOCAL` | | `/tmp/arista-cvx-virt-test.qcow2` |
|
||||
| `TEST_ARISTA_IMAGE_REMOTE` | | |
|
||||
| `TEST_BIONIC_IMAGE_NAME` | Name of bionic image | `bionic` |
|
||||
| `TEST_CACERT` | | |
|
||||
| `TEST_CAKEY` | | |
|
||||
| `TEST_CERT` | | |
|
||||
| `TEST_CIDR_EXT` | | |
|
||||
| `TEST_CIDR_EXT` | | |
|
||||
| `TEST_CIRROS_IMAGE_NAME` | Name of cirros image | `cirros` |
|
||||
| `TEST_EXT_NET_SUBNET` | Name of external subnet | `ext_net_subnet` |
|
||||
| `TEST_EXT_NET` | Name of external network | `ext_net` |
|
||||
| `TEST_FIP_RANGE` | Undercloud fip range | |
|
||||
| `TEST_FOCAL_IMAGE_NAME` | Name of focal image | `focal` |
|
||||
| `TEST_GATEWAY` | Undercloud gateway | |
|
||||
| `TEST_IRONIC_DEPLOY_INITRD` | | |
|
||||
| `TEST_IRONIC_DEPLOY_VMLINUZ` | | |
|
||||
| `TEST_IRONIC_RAW_BM_IMAGE` | | |
|
||||
| `TEST_JAMMY_IMAGE_NAME` | Name of jammy image | `jammy` |
|
||||
| `TEST_KEYPAIR_NAME` | Name of keypair | `zaza` |
|
||||
| `TEST_KEY` | | |
|
||||
| `TEST_MAGNUM_QCOW2_IMAGE_URL`| | |
|
||||
| `TEST_NAME_SERVER` | Undercloud name server | |
|
||||
| `TEST_NET_ID` | Undercloud net id | |
|
||||
| `TEST_NVIDIA_VGPU_HOST_SW` | | |
|
||||
| `TEST_PRIVATE_NET_SUBNET` | Name of private subnet | `private_subnet` |
|
||||
| `TEST_PRIVATE_NET` | Name of private network | `private` |
|
||||
| `TEST_PRIVKEY` | Path to private key corresponding to `TEST_KEYPAIR_NAME` | |
|
||||
| `TEST_PROVIDER_ROUTER` | Name of private-external router | `provider-router` |
|
||||
| `TEST_TRILIO_LICENSE` | | |
|
||||
| `TEST_VIP00` | | |
|
||||
|
||||
@@ -34,11 +34,11 @@ DEFAULT_PEER_APPLICATION_NAME = "quagga"
|
||||
# These are the network configuration settings under test.
|
||||
OVERCLOUD_NETWORK_CONFIG = {
|
||||
"network_type": "gre",
|
||||
"router_name": "provider-router",
|
||||
"router_name": openstack_utils.PROVIDER_ROUTER,
|
||||
"ip_version": "4",
|
||||
"address_scope": "public",
|
||||
"external_net_name": "ext_net",
|
||||
"external_subnet_name": "ext_net_subnet",
|
||||
"external_net_name": openstack_utils.EXT_NET,
|
||||
"external_subnet_name": openstack_utils.EXT_NET_SUBNET,
|
||||
"prefix_len": "24",
|
||||
"subnetpool_name": "pooled_subnets",
|
||||
"subnetpool_prefix": "192.168.0.0/16",
|
||||
|
||||
@@ -65,7 +65,7 @@ class MagnumBasicDeployment(test_utils.OpenStackBaseTest):
|
||||
template_fields = {
|
||||
'name': TEMPLATE_NAME,
|
||||
'image_id': IMAGE_NAME,
|
||||
'external_network_id': 'ext_net',
|
||||
'external_network_id': openstack_utils.EXT_NET,
|
||||
'dns_nameserver': '1.1.1.1',
|
||||
'master_flavor_id': FLAVOR_NAME,
|
||||
'flavor_id': FLAVOR_NAME,
|
||||
|
||||
@@ -35,16 +35,16 @@ import zaza.charm_lifecycle.utils as lifecycle_utils
|
||||
# These are the network configuration settings under test.
|
||||
OVERCLOUD_NETWORK_CONFIG = {
|
||||
"network_type": "gre",
|
||||
"router_name": "provider-router",
|
||||
"router_name": openstack_utils.PROVIDER_ROUTER,
|
||||
"ip_version": "4",
|
||||
"address_scope": "public",
|
||||
"external_net_name": "ext_net",
|
||||
"external_subnet_name": "ext_net_subnet",
|
||||
"external_net_name": openstack_utils.EXT_NET,
|
||||
"external_subnet_name": openstack_utils.EXT_NET_SUBNET,
|
||||
"prefix_len": "24",
|
||||
"subnetpool_name": "pooled_subnets",
|
||||
"subnetpool_prefix": "192.168.0.0/16",
|
||||
"project_net_name": "private",
|
||||
"project_subnet_name": "private_subnet",
|
||||
"project_net_name": openstack_utils.PRIVATE_NET,
|
||||
"project_subnet_name": openstack_utils.PRIVATE_NET_SUBNET,
|
||||
}
|
||||
|
||||
OVERCLOUD_PROVIDER_VLAN_NETWORK_CONFIG = {
|
||||
|
||||
@@ -1199,7 +1199,7 @@ class NeutronNetworkingVRRPTests(NeutronNetworkingBase):
|
||||
self.check_connectivity(instance_1, instance_2)
|
||||
|
||||
routers = self.neutron_client.list_routers(
|
||||
name='provider-router')['routers']
|
||||
name=openstack_utils.PROVIDER_ROUTER)['routers']
|
||||
assert len(routers) == 1, "Unexpected router count {}".format(
|
||||
len(routers))
|
||||
provider_router = routers[0]
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
"""Data for nova tests."""
|
||||
|
||||
import os
|
||||
|
||||
FLAVORS = {
|
||||
'm1.tiny': {
|
||||
'flavorid': 1,
|
||||
@@ -75,4 +77,4 @@ FLAVORS = {
|
||||
},
|
||||
},
|
||||
}
|
||||
KEYPAIR_NAME = 'zaza'
|
||||
KEYPAIR_NAME = os.environ.get('TEST_KEYPAIR_NAME', 'zaza')
|
||||
|
||||
@@ -473,10 +473,11 @@ class LBAASv2Test(test_utils.OpenStackBaseTest):
|
||||
# Get IP of the prepared payload instances
|
||||
payload_ips = []
|
||||
for server in (instance_1, instance_2):
|
||||
payload_ips.append(server.networks['private'][0])
|
||||
payload_ips.append(server.networks[openstack_utils.PRIVATE_NET][0])
|
||||
self.assertTrue(len(payload_ips) > 0)
|
||||
|
||||
resp = self.neutron_client.list_networks(name='private')
|
||||
resp = self.neutron_client.list_networks(
|
||||
name=openstack_utils.PRIVATE_NET)
|
||||
subnet_id = resp['networks'][0]['subnets'][0]
|
||||
if openstack_utils.dvr_enabled():
|
||||
resp = self.neutron_client.list_networks(
|
||||
@@ -508,7 +509,9 @@ class LBAASv2Test(test_utils.OpenStackBaseTest):
|
||||
raise final_exc
|
||||
|
||||
lb_fp = openstack_utils.create_floating_ip(
|
||||
self.neutron_client, 'ext_net', port={'id': lb['vip_port_id']})
|
||||
self.neutron_client,
|
||||
openstack_utils.EXT_NET,
|
||||
port={'id': lb['vip_port_id']})
|
||||
|
||||
snippet = 'This is the default welcome page'
|
||||
assert snippet in self._get_payload(lb_fp['floating_ip_address'])
|
||||
|
||||
@@ -251,7 +251,8 @@ def _add_neutron_config(ctxt, keystone_session, missing_fatal=True):
|
||||
try:
|
||||
net = neutron_client.find_resource("network", "ext_net")
|
||||
ctxt['ext_net'] = net['id']
|
||||
router = neutron_client.find_resource("router", "provider-router")
|
||||
router = neutron_client.find_resource("router",
|
||||
openstack_utils.PROVIDER_ROUTER)
|
||||
ctxt['provider_router_id'] = router['id']
|
||||
except neutronexceptions.NotFound:
|
||||
if missing_fatal:
|
||||
|
||||
@@ -26,8 +26,6 @@ from zaza.openstack.utilities import (
|
||||
)
|
||||
|
||||
|
||||
EXT_NET = "ext_net"
|
||||
PRIVATE_NET = "private"
|
||||
FIP_TEST = "FIP TEST"
|
||||
|
||||
|
||||
@@ -71,9 +69,9 @@ def setup_bgp_speaker(peer_application_name, keystone_session=None):
|
||||
# Add networks to bgp speaker
|
||||
logging.info("Advertising BGP routes")
|
||||
openstack_utils.add_network_to_bgp_speaker(
|
||||
neutron_client, bgp_speaker, EXT_NET)
|
||||
neutron_client, bgp_speaker, openstack_utils.EXT_NET)
|
||||
openstack_utils.add_network_to_bgp_speaker(
|
||||
neutron_client, bgp_speaker, PRIVATE_NET)
|
||||
neutron_client, bgp_speaker, openstack_utils.PRIVATE_NET)
|
||||
logging.debug("Advertised routes: {}"
|
||||
.format(
|
||||
neutron_client.list_route_advertised_from_bgp_speaker(
|
||||
@@ -91,8 +89,10 @@ def setup_bgp_speaker(peer_application_name, keystone_session=None):
|
||||
|
||||
# Create Floating IP to advertise
|
||||
logging.info("Creating floating IP to advertise")
|
||||
port = openstack_utils.create_port(neutron_client, FIP_TEST, PRIVATE_NET)
|
||||
floating_ip = openstack_utils.create_floating_ip(neutron_client, EXT_NET,
|
||||
port = openstack_utils.create_port(neutron_client,
|
||||
FIP_TEST, openstack_utils.PRIVATE_NET)
|
||||
floating_ip = openstack_utils.create_floating_ip(neutron_client,
|
||||
openstack_utils.EXT_NET,
|
||||
port=port)
|
||||
logging.info(
|
||||
"Advertised floating IP: {}".format(
|
||||
|
||||
@@ -33,23 +33,23 @@ from tenacity import (
|
||||
|
||||
boot_tests = {
|
||||
'cirros': {
|
||||
'image_name': 'cirros',
|
||||
'image_name': openstack_utils.CIRROS_IMAGE_NAME,
|
||||
'flavor_name': 'm1.tiny',
|
||||
'username': 'cirros',
|
||||
'bootstring': 'gocubsgo',
|
||||
'password': 'gocubsgo'},
|
||||
'bionic': {
|
||||
'image_name': 'bionic',
|
||||
'image_name': openstack_utils.BIONIC_IMAGE_NAME,
|
||||
'flavor_name': 'm1.small',
|
||||
'username': 'ubuntu',
|
||||
'bootstring': 'finished at'},
|
||||
'focal': {
|
||||
'image_name': 'focal',
|
||||
'image_name': openstack_utils.FOCAL_IMAGE_NAME,
|
||||
'flavor_name': 'm1.small',
|
||||
'username': 'ubuntu',
|
||||
'bootstring': 'finished at'},
|
||||
'jammy': {
|
||||
'image_name': 'jammy',
|
||||
'image_name': openstack_utils.JAMMY_IMAGE_NAME,
|
||||
'flavor_name': 'm1.small',
|
||||
'username': 'ubuntu',
|
||||
'bootstring': 'finished at'}
|
||||
@@ -142,10 +142,10 @@ def launch_instance(instance_key, use_boot_volume=False, vm_name=None,
|
||||
flavor_name = flavor_name or boot_tests[instance_key]['flavor_name']
|
||||
flavor = nova_client.flavors.find(name=flavor_name)
|
||||
|
||||
private_network_name = private_network_name or "private"
|
||||
private_network_name = private_network_name or openstack_utils.PRIVATE_NET
|
||||
|
||||
meta = meta or {}
|
||||
external_network_name = external_network_name or "ext_net"
|
||||
external_network_name = external_network_name or openstack_utils.EXT_NET
|
||||
|
||||
if attach_to_external_network:
|
||||
instance_network_name = external_network_name
|
||||
|
||||
@@ -194,6 +194,20 @@ KEYSTONE_CACERT = "keystone_juju_ca_cert.crt"
|
||||
KEYSTONE_REMOTE_CACERT = (
|
||||
"/usr/local/share/ca-certificates/{}".format(KEYSTONE_CACERT))
|
||||
|
||||
# Network/router names
|
||||
EXT_NET = os.environ.get('TEST_EXT_NET', 'ext_net')
|
||||
EXT_NET_SUBNET = os.environ.get('TEST_EXT_NET_SUBNET', 'ext_net_subnet')
|
||||
PRIVATE_NET = os.environ.get('TEST_PRIVATE_NET', 'private')
|
||||
PRIVATE_NET_SUBNET = os.environ.get('TEST_PRIVATE_NET_SUBNET',
|
||||
'private_subnet')
|
||||
PROVIDER_ROUTER = os.environ.get('TEST_PROVIDER_ROUTER', 'provider-router')
|
||||
|
||||
# Image names
|
||||
CIRROS_IMAGE_NAME = os.environ.get('TEST_CIRROS_IMAGE_NAME', 'cirros')
|
||||
BIONIC_IMAGE_NAME = os.environ.get('TEST_BIONIC_IMAGE_NAME', 'bionic')
|
||||
FOCAL_IMAGE_NAME = os.environ.get('TEST_FOCAL_IMAGE_NAME', 'focal')
|
||||
JAMMY_IMAGE_NAME = os.environ.get('TEST_JAMMY_IMAGE_NAME', 'jammy')
|
||||
|
||||
|
||||
async def async_block_until_ca_exists(application_name, ca_cert,
|
||||
model_name=None, timeout=2700):
|
||||
@@ -1142,7 +1156,7 @@ def get_mac_from_port(port, neutronclient):
|
||||
return refresh_port['port']['mac_address']
|
||||
|
||||
|
||||
def create_project_network(neutron_client, project_id, net_name='private',
|
||||
def create_project_network(neutron_client, project_id, net_name=PRIVATE_NET,
|
||||
shared=False, network_type='gre', domain=None):
|
||||
"""Create the project network.
|
||||
|
||||
@@ -1182,7 +1196,7 @@ def create_project_network(neutron_client, project_id, net_name='private',
|
||||
return network
|
||||
|
||||
|
||||
def create_provider_network(neutron_client, project_id, net_name='ext_net',
|
||||
def create_provider_network(neutron_client, project_id, net_name=EXT_NET,
|
||||
external=True, shared=False, network_type='flat',
|
||||
vlan_id=None):
|
||||
"""Create a provider network.
|
||||
@@ -1229,7 +1243,7 @@ def create_provider_network(neutron_client, project_id, net_name='ext_net',
|
||||
|
||||
|
||||
def create_project_subnet(neutron_client, project_id, network, cidr, dhcp=True,
|
||||
subnet_name='private_subnet', domain=None,
|
||||
subnet_name=PRIVATE_NET_SUBNET, domain=None,
|
||||
subnetpool=None, ip_version=4, prefix_len=24):
|
||||
"""Create the project subnet.
|
||||
|
||||
@@ -1282,7 +1296,7 @@ def create_project_subnet(neutron_client, project_id, network, cidr, dhcp=True,
|
||||
|
||||
|
||||
def create_provider_subnet(neutron_client, project_id, network,
|
||||
subnet_name='ext_net_subnet',
|
||||
subnet_name=EXT_NET_SUBNET,
|
||||
default_gateway=None, cidr=None,
|
||||
start_floating_ip=None, end_floating_ip=None,
|
||||
dhcp=False):
|
||||
@@ -1387,19 +1401,19 @@ def create_provider_router(neutron_client, project_id):
|
||||
:returns: Router object
|
||||
:rtype: dict
|
||||
"""
|
||||
routers = neutron_client.list_routers(name='provider-router')
|
||||
routers = neutron_client.list_routers(name=PROVIDER_ROUTER)
|
||||
if len(routers['routers']) == 0:
|
||||
logging.info('Creating provider router for external network access')
|
||||
router_info = {
|
||||
'router': {
|
||||
'name': 'provider-router',
|
||||
'name': PROVIDER_ROUTER,
|
||||
'tenant_id': project_id
|
||||
}
|
||||
}
|
||||
router = neutron_client.create_router(router_info)['router']
|
||||
logging.info('New router created: %s', (router['id']))
|
||||
else:
|
||||
logging.warning('Router provider-router already exists.')
|
||||
logging.warning('Router %s already exists.', (PROVIDER_ROUTER))
|
||||
router = routers['routers'][0]
|
||||
return router
|
||||
|
||||
@@ -2860,6 +2874,10 @@ def get_private_key_file(keypair_name):
|
||||
:returns: Path to file containing key
|
||||
:rtype: str
|
||||
"""
|
||||
key = os.environ.get("TEST_PRIVKEY")
|
||||
if key:
|
||||
return key
|
||||
|
||||
tmp_dir = deployment_env.get_tmpdir()
|
||||
return '{}/id_rsa_{}'.format(tmp_dir, keypair_name)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user