diff --git a/.zuul.yaml b/.zuul.yaml index e8ce1ada..bafad7b8 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -1,10 +1,9 @@ - project: templates: - - openstack-lower-constraints-jobs - openstack-cover-jobs-neutron - build-openstack-docs-pti - check-requirements - - openstack-python3-ussuri-jobs-neutron + - openstack-python3-wallaby-jobs-neutron - tap-as-a-service-tempest-plugin-jobs check: jobs: diff --git a/lower-constraints.txt b/lower-constraints.txt deleted file mode 100644 index a015a981..00000000 --- a/lower-constraints.txt +++ /dev/null @@ -1,199 +0,0 @@ -alabaster==0.7.10 -alembic==1.4.2 -amqp==2.6.1 -appdirs==1.4.4 -asn1crypto==0.23.0 -Babel==2.8.0 -beautifulsoup4==4.9.1 -blockdiag==1.5.3 -cachetools==4.1.1 -cffi==1.14.2 -cliff==3.4.0 -cmd2==1.3.8 -contextlib2==0.4.0 -coverage==5.2.1 -cryptography==3.1 -debtcollector==1.2.0 -decorator==4.4.2 -deprecation==1.0 -Django==2.2 -django-appconf==1.0.2 -django-babel==0.6.2 -django-compressor==2.0 -django-pyscss==2.0.2 -docutils==0.11 -dogpile.cache==1.0.2 -eventlet==0.26.1 -exabgp==4.0.4 -extras==1.0.0 -fasteners==0.14.1 -fixtures==3.0.0 -funcparserlib==0.3.6 -future==0.18.2 -futurist==2.3.0 -greenlet==0.4.16 -horizon==17.1.0 -httplib2==0.18.1 -idna==2.10 -imagesize==0.7.1 -iso8601==0.1.12 -isort==4.3.21 -Jinja2==2.11.2 -jmespath==0.10.0 -jsonpatch==1.26 -jsonpointer==2.0 -jsonschema==3.2.0 -keystoneauth1==4.2.1 -keystonemiddleware==9.1.0 -kombu==5.0.1 -linecache2==1.0.0 -logilab-common==1.4.1 -logutils==0.3.5 -Mako==1.1.3 -MarkupSafe==1.1.1 -mock==3.0.0 -monotonic==1.5 -mox3==0.20.0 -msgpack-python==0.4.0 -munch==2.5.0 -netaddr==0.8.0 -netifaces==0.10.9 -neutron==16.0.0.0b1 -neutron-lib==2.6.0 -openstacksdk==0.49.0 -os-client-config==2.1.0 -os-ken==1.2.0 -os-service-types==1.7.0 -os-testr==1.0.0 -os-traits==2.4.0 -os-xenapi==0.3.4 -os-vif==1.15.1 -osc-lib==2.2.1 -oslo.cache==2.6.1 -oslo.concurrency==4.3.0 -oslo.config==8.3.2 -oslo.context==3.1.1 -oslo.db==8.4.0 -oslo.i18n==5.0.1 -oslo.log==4.4.0 -oslo.messaging==12.5.0 -oslo.middleware==4.1.1 -oslo.policy==3.5.0 -oslo.privsep==2.4.0 -oslo.reports==2.2.0 -oslo.rootwrap==6.2.0 -oslo.serialization==4.0.1 -oslo.service==2.4.0 -oslo.upgradecheck==1.1.1 -oslo.utils==4.6.0 -oslo.versionedobjects==2.3.0 -oslotest==4.4.1 -osprofiler==3.4.0 -ovs==2.13.0 -ovsdbapp==1.5.0 -packaging==20.4 -paramiko==2.7.2 -Paste==3.4.3 -PasteDeploy==2.1.0 -pbr==5.5.0 -pecan==1.3.3 -pika==0.10.0 -pika-pool==0.1.3 -Pillow==2.4.0 -Pint==0.5 -positional==1.2.1 -prettytable==0.7.2 -psutil==5.7.2 -psycopg2==2.8.5 -pycadf==3.1.1 -pycodestyle==2.5.0 -pycparser==2.20 -pyflakes==2.1.1 -pyinotify==0.9.6 -pylint==2.2.0 -PyMySQL==0.10.0 -pyOpenSSL==19.1.0 -pyparsing==2.4.7 -pyperclip==1.8.0 -pyroute2==0.5.14 -pyScss==1.3.7 -pytest==5.3.5 -python-cinderclient==5.0.0 -python-dateutil==2.5.3 -python-designateclient==4.1.0 -python-editor==1.0.4 -python-glanceclient==2.8.0 -python-keystoneclient==4.1.1 -python-mimeparse==1.6.0 -python-neutronclient==7.2.1 -python-novaclient==17.2.1 -python-subunit==1.4.0 -python-swiftclient==3.2.0 -pytz==2020.1 -PyYAML==5.3.1 -rcssmin==1.0.6 -repoze.lru==0.7 -requests==2.23.0 -requestsexceptions==1.4.0 -rfc3986==1.4.0 -rjsmin==1.0.12 -Routes==2.4.1 -ryu==4.24 -semantic-version==2.3.1 -seqdiag==0.9.5 -simplejson==3.17.2 -snowballstemmer==1.2.1 -Sphinx==2.0.0 -SQLAlchemy==1.3.19 -sqlalchemy-migrate==0.13.0 -sqlparse==0.3.1 -statsd==3.3.0 -stestr==3.0.1 -stevedore==3.2.2 -tempest==17.1.0 -Tempita==0.5.2 -tenacity==6.2.0 -testrepository==0.0.18 -testresources==2.0.1 -testscenarios==0.5.0 -testtools==2.4.0 -tinyrpc==1.0.4 -tooz==2.7.1 -traceback2==1.4.0 -urllib3==1.25.10 -vine==1.3.0 -waitress==1.4.4 -warlock==1.2.0 -webcolors==1.7 -WebOb==1.8.6 -websocket-client==0.40.0 -WebTest==2.0.35 -wrapt==1.12.1 -XStatic==1.0.0 -XStatic-Angular==1.5.8.0 -XStatic-Angular-Bootstrap==2.2.0.0 -XStatic-Angular-FileUpload==12.0.4.0 -XStatic-Angular-Gettext==2.3.8.0 -XStatic-Angular-lrdragndrop==1.0.2.2 -XStatic-Angular-Schema-Form==0.8.13.0 -XStatic-Bootstrap-Datepicker==1.3.1.0 -XStatic-Bootstrap-SCSS==3.3.7.1 -XStatic-bootswatch==3.3.7.0 -XStatic-D3==3.5.17.0 -XStatic-Font-Awesome==4.7.0.0 -XStatic-Hogan==2.0.0.2 -XStatic-Jasmine==2.4.1.1 -XStatic-jQuery==1.8.2.1 -XStatic-JQuery-Migrate==1.2.1.1 -XStatic-jquery-ui==1.10.4.1 -XStatic-JQuery.quicksearch==2.0.3.1 -XStatic-JQuery.TableSorter==2.14.5.1 -XStatic-JSEncrypt==2.3.1.1 -XStatic-mdi==1.4.57.0 -XStatic-objectpath==1.2.1.0 -XStatic-Rickshaw==1.5.0.0 -XStatic-roboto-fontface==0.5.0.0 -XStatic-smart-table==1.4.13.2 -XStatic-Spin==1.2.5.2 -XStatic-term.js==0.0.7.0 -XStatic-tv4==1.2.7.0 diff --git a/neutron_taas/services/taas/drivers/linux/ovs_taas.py b/neutron_taas/services/taas/drivers/linux/ovs_taas.py index 3e6cbdab..414f56c6 100644 --- a/neutron_taas/services/taas/drivers/linux/ovs_taas.py +++ b/neutron_taas/services/taas/drivers/linux/ovs_taas.py @@ -265,7 +265,7 @@ class OvsTaasDriver(taas_base.TaasAgentDriver): ovs_port_name = ovs_port.port_name linux_br_name = ovs_port_name.replace('qvo', 'qbr') utils.execute(['brctl', 'setageing', linux_br_name, 0], - run_as_root=True) + run_as_root=True, privsep_exec=True) return @@ -425,7 +425,7 @@ class OvsTaasDriver(taas_base.TaasAgentDriver): def _create_tunnel_flood_flow_action(self): args = ["ovs-vsctl", "list-ports", "br-tun"] - res = utils.execute(args, run_as_root=True) + res = utils.execute(args, run_as_root=True, privsep_exec=True) port_name_list = res.splitlines() diff --git a/neutron_taas/services/taas/drivers/linux/sriov_nic_utils.py b/neutron_taas/services/taas/drivers/linux/sriov_nic_utils.py index 16a6a532..8d6c608b 100644 --- a/neutron_taas/services/taas/drivers/linux/sriov_nic_utils.py +++ b/neutron_taas/services/taas/drivers/linux/sriov_nic_utils.py @@ -88,7 +88,8 @@ class SriovNicUtils(object): try: LOG.info("TaaS executing sysfs_command %(command)s", {'command': commit_cmd}) - utils.execute(commit_cmd, run_as_root=True) + utils.execute(commit_cmd, run_as_root=True, + privsep_exec=True) except (OSError, RuntimeError, IndexError, ValueError) as e: LOG.error("Exception while executing Sysfs command " "Exception: %s", e) @@ -105,7 +106,8 @@ class SriovNicUtils(object): try: LOG.info("TaaS executing sysfs_command %(command)s", {'command': commit_cmd}) - utils.execute(commit_cmd, run_as_root=True) + utils.execute(commit_cmd, run_as_root=True, + privsep_exec=True) except (OSError, RuntimeError, IndexError, ValueError) as e: LOG.error("Exception while executing Sysfs command " "Exception: %s", e) @@ -125,7 +127,8 @@ class SriovNicUtils(object): try: LOG.info("TaaS executing sysfs_command %(command)s", {'command': commit_cmd}) - utils.execute(commit_cmd, run_as_root=True) + utils.execute(commit_cmd, run_as_root=True, + privsep_exec=True) except (OSError, RuntimeError, IndexError, ValueError) as e: LOG.error("Exception while executing Sysfs command " "Exception: %s", e) diff --git a/neutron_taas/tests/unit/services/drivers/test_linux_sriov_utils.py b/neutron_taas/tests/unit/services/drivers/test_linux_sriov_utils.py index 91b07941..1efedb59 100644 --- a/neutron_taas/tests/unit/services/drivers/test_linux_sriov_utils.py +++ b/neutron_taas/tests/unit/services/drivers/test_linux_sriov_utils.py @@ -200,7 +200,7 @@ class TestSriovNicUtils(base.TaasTestCase): egress_cmd = ['i40e_sysfs_command', 'p2p1', '18', 'egress_mirror', 'add', '9'] mock_neutron_utils.execute.assert_called_once_with( - egress_cmd, run_as_root=True) + egress_cmd, run_as_root=True, privsep_exec=True) @mock.patch.object(sriov_nic_utils, 'utils') @mock.patch.object(sriov_nic_utils, 'os') @@ -212,7 +212,7 @@ class TestSriovNicUtils(base.TaasTestCase): ingress_cmd = ['i40e_sysfs_command', 'p2p1', '18', 'ingress_mirror', 'add', '9'] mock_neutron_utils.execute.assert_called_once_with( - ingress_cmd, run_as_root=True) + ingress_cmd, run_as_root=True, privsep_exec=True) @mock.patch.object(sriov_nic_utils, 'utils') @mock.patch.object(sriov_nic_utils, 'os') @@ -233,7 +233,7 @@ class TestSriovNicUtils(base.TaasTestCase): egress_cmd = ['i40e_sysfs_command', 'p2p1', '18', 'egress_mirror', 'rem', '9'] mock_neutron_utils.execute.assert_called_once_with( - egress_cmd, run_as_root=True) + egress_cmd, run_as_root=True, privsep_exec=True) @mock.patch.object(sriov_nic_utils, 'utils') @mock.patch.object(sriov_nic_utils, 'os') @@ -245,7 +245,7 @@ class TestSriovNicUtils(base.TaasTestCase): ingress_cmd = ['i40e_sysfs_command', 'p2p1', '18', 'ingress_mirror', 'rem', '9'] mock_neutron_utils.execute.assert_called_once_with( - ingress_cmd, run_as_root=True) + ingress_cmd, run_as_root=True, privsep_exec=True) @mock.patch.object(sriov_nic_utils, 'utils') @mock.patch.object(sriov_nic_utils, 'os') @@ -266,4 +266,4 @@ class TestSriovNicUtils(base.TaasTestCase): 'rem', {'pf_device': 'p2p1', 'vf_index': '9'}, {'vf_index': '18'}, "4,11-13", False, "FAKE") mock_neutron_utils.execute.assert_called_once_with( - cmd, run_as_root=True) + cmd, run_as_root=True, privsep_exec=True) diff --git a/requirements.txt b/requirements.txt index 673f24fe..a5f43f58 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,7 @@ pbr>=5.5.0 # Apache-2.0 Babel>=2.8.0 # BSD -neutron>=16.0.0 # Apache-2.0 +neutron>=16.0.0.0b1 # Apache-2.0 neutron-lib>=2.6.0 # Apache-2.0 # Opt-in for neutron-lib consumption patches diff --git a/setup.cfg b/setup.cfg index 978ae8af..dbe60343 100644 --- a/setup.cfg +++ b/setup.cfg @@ -17,6 +17,7 @@ classifier = Programming Language :: Python :: 3.5 Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 + Programming Language :: Python :: 3.8 [files] packages = diff --git a/tox.ini b/tox.ini index 1bb2329a..35e6f136 100644 --- a/tox.ini +++ b/tox.ini @@ -1,12 +1,16 @@ [tox] -envlist = docs,py35,py27,pep8 -minversion = 1.8 +envlist = docs,py38,pep8 +minversion = 2.3.2 skipsdist = True ignore_basepython_conflict = True [testenv] basepython = python3 setenv = VIRTUAL_ENV={envdir} + LANG=en_US.UTF-8 + LANGUAGE=en_US:en + LC_ALL=C + EDITOR=vi PYTHONWARNINGS=default::DeprecationWarning usedevelop = True install_command = pip install {opts} {packages} @@ -22,9 +26,6 @@ whitelist_externals = find [tox:jenkins] sitepackages = True -[testenv:py27] -setenv = OS_FAIL_ON_MISSING_DEPS=1 - [testenv:pep8] commands = flake8 @@ -81,12 +82,6 @@ extension = [hacking] import_exceptions = neutron_taas._i18n -[testenv:lower-constraints] -deps = - -c{toxinidir}/lower-constraints.txt - -r{toxinidir}/test-requirements.txt - -r{toxinidir}/requirements.txt - [testenv:dev] # run locally (not in the gate) using editable mode # https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs