Merge pull request #980 from Basdbruijne/sqa_integration

Make network, images, and keypair names envars
This commit is contained in:
Felipe Reyes
2023-01-16 12:12:51 -03:00
committed by GitHub
11 changed files with 102 additions and 34 deletions
+44
View File
@@ -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",
+1 -1
View File
@@ -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,
+5 -5
View File
@@ -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 = {
+1 -1
View File
@@ -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]
+3 -1
View File
@@ -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')
+6 -3
View File
@@ -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'])
+2 -1
View File
@@ -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:
+6 -6
View File
@@ -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(
+6 -6
View File
@@ -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
+25 -7
View File
@@ -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)