Skip to content

Commit

Permalink
[Caracal] Update github workflow & Fix unit tests
Browse files Browse the repository at this point in the history
Update python version to 3.10 and set the base branch in the github
workflowto Caracal(2024.1-m3).

Fix Unit Tests:

With later versions of pecan, WebTest is not a dependency of it anymore,
so in order to continue using this, an additional import in
test-requirements is required.

Remove autoconfig loading, which breaks stestr test execution.
Cli options can be loaded only once (without
clearing them), which causes our tests to fail as required default
configuration cli options can not be registered, as an default configuration
has already been loaded.

As part of the secure RBAC community goal, the "enforce_new_defaults" and
"enforce_scope" setting is True by default. Avoiding PolicyNotAuthorized erros
during test execution certain actions simply need to be executed as admin.
  • Loading branch information
sven-rosenzweig committed Nov 15, 2024
1 parent 9035ee7 commit c98ddee
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 16 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/run-tox.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ name: run-tox
on:
push:
branches:
- stable/yoga-m3
- stable/2024.1-m3
pull_request:
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python: [3.8]
python: ['3.10']
steps:
- uses: actions/checkout@v2
- name: Setup python
Expand Down
1 change: 1 addition & 0 deletions networking_aci/tests/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ def get_additional_service_plugins(self):
return dict(service_plugins='tag')

def setUp(self):
config.register_common_config_options()
self._mechanism_drivers.append(constants.ACI_DRIVER_NAME)
cfg.CONF.set_override('debug', True)
config.setup_logging()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@

from networking_aci.tests.unit import utils

cfg.CONF.use_stderr = False
cfg.CONF(args=[])


class AciNeutronAgentTest(base.BaseTestCase):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from neutron.db.models import tag as tag_models
from neutron.db import models_v2
from neutron_lib.api.definitions import external_net as extnet_api
from neutron_lib.db import api as db_api
from neutron_lib import context
from neutron.tests.common import helpers as neutron_test_helpers
from neutron.tests.unit.plugins.ml2 import test_plugin
Expand All @@ -23,27 +24,28 @@ def setUp(self):
super().setUp()
self._register_azs()
ctx = context.get_admin_context()
with ctx.session.begin(subtransactions=True):
with db_api.CONTEXT_WRITER.using(ctx):
self._address_scope = ascope_models.AddressScope(name="the-open-sea", ip_version=4)
ctx.session.add(self._address_scope)

def test_create_subnet_az_hint_matches(self):
net_kwargs = {'arg_list': (extnet_api.EXTERNAL,), extnet_api.EXTERNAL: True}
with self.network(**net_kwargs) as network:
with self.network(**net_kwargs, as_admin=True) as network:
with self.subnetpool(["1.1.0.0/16", "1.2.0.0/24"], name="foo", tenant_id="foo", admin=True) as snp:
with self.subnet(network=network, cidr="1.1.1.0/24", gateway_ip="1.1.1.1",
subnetpool_id=snp['subnetpool']['id']) as subnet:
subnetpool_id=snp['subnetpool']['id'], as_admin=True) as subnet:
self.assertIsNotNone(subnet)

def test_create_subnet_network_az_snp_no_az_fails(self):
net_kwargs = {'arg_list': (extnet_api.EXTERNAL,), extnet_api.EXTERNAL: True}
with self.network(availability_zone_hints=["qa-de-1a"], **net_kwargs) as network:
with self.network(availability_zone_hints=["qa-de-1a"], **net_kwargs, as_admin=True) as network:
with self.subnetpool(["1.1.0.0/16", "1.2.0.0/24"], address_scope_id=self._address_scope['id'], name="foo",
tenant_id="foo", admin=True) as snp:
resp = self._create_subnet(self.fmt, cidr="1.1.1.0/24", gateway_ip="1.1.1.1",
name="foo",
net_id=network['network']['id'], tenant_id=network['network']['tenant_id'],
subnetpool_id=snp['subnetpool']['id'])
subnetpool_id=snp['subnetpool']['id'],
as_admin=True)
self.assertEqual(400, resp.status_code)
self.assertEqual("SubnetSubnetPoolAZAffinityError", resp.json['NeutronError']['type'])
self.assertIsNotNone(re.search(f"network {network['network']['id']} has AZ hint qa-de-1a,.*"
Expand All @@ -52,7 +54,7 @@ def test_create_subnet_network_az_snp_no_az_fails(self):

def test_create_subnet_network_no_az_snp_az_fails(self):
net_kwargs = {'arg_list': (extnet_api.EXTERNAL,), extnet_api.EXTERNAL: True}
with self.network(**net_kwargs) as network:
with self.network(**net_kwargs, as_admin=True) as network:
with self.subnetpool(["1.1.0.0/16", "1.2.0.0/24"], address_scope_id=self._address_scope['id'], name="foo",
tenant_id="foo", admin=True) as snp:
ctx = context.get_admin_context()
Expand All @@ -63,7 +65,7 @@ def test_create_subnet_network_no_az_snp_az_fails(self):
resp = self._create_subnet(self.fmt, cidr="1.1.1.0/24", gateway_ip="1.1.1.1",
name="foo",
net_id=network['network']['id'], tenant_id=network['network']['tenant_id'],
subnetpool_id=snp['subnetpool']['id'])
subnetpool_id=snp['subnetpool']['id'], as_admin=True)
self.assertEqual(400, resp.status_code)
self.assertEqual("SubnetSubnetPoolAZAffinityError", resp.json['NeutronError']['type'])
self.assertIsNotNone(re.search(f"network {network['network']['id']} has AZ hint None,.*"
Expand All @@ -73,9 +75,9 @@ def test_create_subnet_network_no_az_snp_az_fails(self):
def test_create_subnet_network_snp_az_hint_works_when_turned_off(self):
cfg.CONF.set_override('subnet_subnetpool_az_check_enabled', False, group='ml2_aci')
net_kwargs = {'arg_list': (extnet_api.EXTERNAL,), extnet_api.EXTERNAL: True}
with self.network(availability_zone_hints=["qa-de-1a"], **net_kwargs) as network:
with self.network(availability_zone_hints=["qa-de-1a"], **net_kwargs, as_admin=True) as network:
with self.subnetpool(["1.1.0.0/16", "1.2.0.0/24"], address_scope_id=self._address_scope['id'], name="foo",
tenant_id="foo", admin=True) as snp:
with self.subnet(network=network, cidr="1.1.1.0/24", gateway_ip="1.1.1.1",
subnetpool_id=snp['subnetpool']['id']) as subnet:
subnetpool_id=snp['subnetpool']['id'], as_admin=True) as subnet:
self.assertIsNotNone(subnet)
1 change: 1 addition & 0 deletions test-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,4 @@ testtools>=1.4.0
testresources>=0.2.4
requests
stestr>=1.0.0 # Apache-2.0
WebTest>=2.0.27 # MIT
6 changes: 3 additions & 3 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
[tox]
envlist = py38
envlist = py310
minversion = 3.18.0
skipsdist = True
requires = virtualenv >= 20

[testenv]
usedevelop = True
install_command = pip install -c {env:UPPER_CONSTRAINTS_FILE:https://raw.githubusercontent.com/sapcc/requirements/stable/yoga-m3/upper-constraints.txt} -r requirements.txt -r test-requirements.txt -U {opts} {packages}
install_command = pip install -c {env:UPPER_CONSTRAINTS_FILE:https://raw.githubusercontent.com/sapcc/requirements/stable/2024.1-m3/upper-constraints.txt} -r requirements.txt -r test-requirements.txt -U {opts} {packages}
setenv = VIRTUAL_ENV={envdir}
PYTHONWARNINGS=default::DeprecationWarning
deps = -r{toxinidir}/test-requirements.txt
-e{env:NEUTRON_SOURCE:git+https://github.com/sapcc/neutron.git@stable/yoga-m3#egg=neutron}
-e{env:NEUTRON_SOURCE:git+https://github.com/sapcc/neutron.git@stable/2024.1-m3#egg=neutron}
whitelist_externals = sh
commands = stestr run {posargs}
download = True
Expand Down

0 comments on commit c98ddee

Please sign in to comment.