diff --git a/.zuul.yaml b/.zuul.yaml index 889a671..5f9b110 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -1,3 +1,3 @@ - project: templates: - - openstack-lower-constraints-jobs + - openstack-python3-wallaby-jobs diff --git a/doc/requirements.txt b/doc/requirements.txt new file mode 100644 index 0000000..8bab66b --- /dev/null +++ b/doc/requirements.txt @@ -0,0 +1,3 @@ + +sphinx!=1.6.6,!=1.6.7,>=1.6.2 +oslosphinx>=4.7.0 # Apache-2.0 diff --git a/lower-constraints.txt b/lower-constraints.txt deleted file mode 100644 index 993c613..0000000 --- a/lower-constraints.txt +++ /dev/null @@ -1,56 +0,0 @@ -alabaster==0.7.10 -appdirs==1.3.0 -Babel==2.3.4 -coverage==4.0 -debtcollector==1.2.0 -docutils==0.11 -extras==1.0.0 -fixtures==3.0.0 -flake8==2.5.5 -hacking==0.12.0 -imagesize==0.7.1 -iso8601==0.1.11 -Jinja2==2.10 -keystoneauth1==3.4.0 -linecache2==1.0.0 -MarkupSafe==1.0 -mccabe==0.2.1 -mock==2.0.0 -monotonic==0.6 -mox3==0.20.0 -msgpack-python==0.4.0 -netaddr==0.7.18 -netifaces==0.10.4 -os-client-config==1.28.0 -oslo.i18n==3.15.3 -oslo.serialization==2.18.0 -oslo.utils==3.33.0 -oslosphinx==4.7.0 -oslotest==3.2.0 -pbr==2.0.0 -pep8==1.5.7 -pyasn1==0.1.8 -pycrypto==2.6 -pyflakes==0.8.1 -pyghmi==1.0.22 -Pygments==2.2.0 -pyparsing==2.1.0 -pysnmp==4.2.3 -python-mimeparse==1.6.0 -python-subunit==1.0.0 -pytz==2013.6 -PyYAML==3.12 -requests-mock==1.2.0 -requests==2.14.2 -requestsexceptions==1.2.0 -six==1.10.0 -snowballstemmer==1.2.1 -Sphinx==1.6.2 -sphinxcontrib-websupport==1.0.1 -stevedore==1.20.0 -stestr==2.0.0 -testscenarios==0.4 -testtools==2.2.0 -traceback2==1.4.0 -unittest2==1.1.0 -wrapt==1.7.0 diff --git a/py27-constraints.txt b/py27-constraints.txt new file mode 100644 index 0000000..e0f940e --- /dev/null +++ b/py27-constraints.txt @@ -0,0 +1 @@ +stestr==2.6.0 # Apache-2.0 diff --git a/scciclient/irmc/elcm.py b/scciclient/irmc/elcm.py index a66aa35..59bc55b 100644 --- a/scciclient/irmc/elcm.py +++ b/scciclient/irmc/elcm.py @@ -17,11 +17,11 @@ eLCM functionality. """ import collections -import six import time from oslo_serialization import jsonutils import requests +import six from scciclient.irmc import scci @@ -1092,8 +1092,8 @@ def set_bios_configuration(irmc_info, settings): if server_version: bios_config_data['Server']['@Version'] = server_version if bios_version: - bios_config_data['Server']['SystemConfig']['BiosConfig']['@Version'] = \ - bios_version + (bios_config_data['Server']['SystemConfig']['BiosConfig'] + ['@Version']) = bios_version configs = {} for setting_param in settings: diff --git a/scciclient/irmc/snmp.py b/scciclient/irmc/snmp.py index 9f0f564..17369f1 100644 --- a/scciclient/irmc/snmp.py +++ b/scciclient/irmc/snmp.py @@ -12,10 +12,10 @@ # License for the specific language governing permissions and limitations # under the License. -import six - from pysnmp.entity.rfc3413.oneliner import cmdgen from pysnmp import error as snmp_error +import six + BMC_NAME_OID = '1.3.6.1.4.1.231.2.10.2.2.10.3.4.1.3.1.1' IRMC_FW_VERSION_OID = '1.3.6.1.4.1.231.2.10.2.2.10.3.4.1.4.1.1' @@ -189,8 +189,7 @@ class SNMPClient(object): " %(index)s" % {'operation': "GET", 'error': error_status.prettyPrint(), 'index': - error_index and var_binds[int(error_index) - 1] - or '?'}) + error_index and var_binds[int(error_index) - 1] or '?'}) # We only expect a single value back name, val = var_binds[0] @@ -224,8 +223,7 @@ class SNMPClient(object): " %(index)s" % {'operation': "GET_NEXT", 'error': error_status.prettyPrint(), 'index': - error_index and var_binds[int(error_index) - 1] - or '?'}) + error_index and var_binds[int(error_index) - 1] or '?'}) return [val for row in var_binds for name, val in row] @@ -256,5 +254,4 @@ class SNMPClient(object): " %(index)s" % {'operation': "SET", 'error': error_status.prettyPrint(), 'index': - error_index and var_binds[int(error_index) - 1] - or '?'}) + error_index and var_binds[int(error_index) - 1] or '?'}) diff --git a/scciclient/irmc/viom/client.py b/scciclient/irmc/viom/client.py index 3d33d10..a495cb9 100644 --- a/scciclient/irmc/viom/client.py +++ b/scciclient/irmc/viom/client.py @@ -14,10 +14,11 @@ import abc import re -import six import socket import struct +import six + from scciclient.irmc import scci from scciclient.irmc.viom import elcm diff --git a/scciclient/tests/irmc/test_ipmi.py b/scciclient/tests/irmc/test_ipmi.py index 8685e6a..c2035de 100644 --- a/scciclient/tests/irmc/test_ipmi.py +++ b/scciclient/tests/irmc/test_ipmi.py @@ -16,10 +16,9 @@ Test class for IPMI Module. """ import mock -import testtools - from pyghmi import exceptions as ipmi_exception from pyghmi.ipmi import command as ipmi_command +import testtools from scciclient.irmc import ipmi diff --git a/scciclient/tests/irmc/test_scci.py b/scciclient/tests/irmc/test_scci.py index 300045a..de9328e 100644 --- a/scciclient/tests/irmc/test_scci.py +++ b/scciclient/tests/irmc/test_scci.py @@ -510,7 +510,7 @@ class SCCITestCase(testtools.TestCase): def test_get_sensor_data_records_ng(self): sensor = scci.get_sensor_data_records(self.report_ng_xml) - self.assertEqual(sensor, None) + self.assertIsNone(sensor) def test_get_irmc_version_ok(self): version = scci.get_irmc_version(self.report_ok_xml) @@ -518,7 +518,7 @@ class SCCITestCase(testtools.TestCase): def test_get_irmc_version_ng(self): version = scci.get_irmc_version(self.report_ng_xml) - self.assertEqual(version, None) + self.assertIsNone(version) def test_get_report_ok(self): self.requests_mock.get( diff --git a/scciclient/tests/irmc/viom/test_elcm.py b/scciclient/tests/irmc/viom/test_elcm.py index 60de89b..ea697f4 100644 --- a/scciclient/tests/irmc/viom/test_elcm.py +++ b/scciclient/tests/irmc/viom/test_elcm.py @@ -507,7 +507,7 @@ class VIOMTableTestCase(testtools.TestCase): processing='execute', mode='new') root.set_manage_table(VIOMTableTestCase._sample_manage_table()) - self.assertEqual(None, root.get_slot(0, create=False)) + self.assertIsNone(root.get_slot(0, create=False)) slot = root.get_slot(0) VIOMTableTestCase._add_sample_cards_to_slot(slot) self.assertEqual(slot, root.get_slot(0)) @@ -1230,7 +1230,7 @@ class VIOMTableTestCase(testtools.TestCase): ip='192.168.1.11', subnet='255.255.255.0', gateway='192.168.1.1' - ) + ) expected_json = { 'DHCPUsage': False, 'Name': 'iqn-2017-04.com.fujitsu:001', @@ -1248,7 +1248,7 @@ class VIOMTableTestCase(testtools.TestCase): subnet='255.255.255.0', gateway='192.168.1.1', vlan_id=123 - ) + ) expected_json = { 'DHCPUsage': False, 'Name': 'iqn-2017-04.com.fujitsu:001', @@ -1265,7 +1265,7 @@ class VIOMTableTestCase(testtools.TestCase): iqn='iqn-2017-04.com.fujitsu:001', ip='192.168.1.11', subnet='255.255.255.0', - ) + ) expected_json = { 'DHCPUsage': True, 'Name': 'iqn-2017-04.com.fujitsu:001', diff --git a/test-requirements.txt b/test-requirements.txt index affc235..025fe44 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -2,18 +2,13 @@ # of appearance. Changing the order has an impact on the overall integration # process, which may cause wedges in the gate later. -hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 coverage!=4.4,>=4.0 # Apache-2.0 fixtures>=3.0.0 # Apache-2.0/BSD mock>=2.0.0 # BSD python-subunit>=1.0.0 # Apache-2.0/BSD -oslotest>=3.2.0 # Apache-2.0 -stestr>=2.0.0 # Apache-2.0 +oslotest>=3.2.0,<4;python_version<'3.6' # Apache-2.0 +oslotest>=3.2.0;python_version>='3.6' # Apache-2.0 +stestr>=2.0.0,!=2.3.0,!=3.0.0 # Apache-2.0 testscenarios>=0.4 # Apache-2.0/BSD testtools>=2.2.0 # MIT requests-mock>=1.2.0 # Apache-2.0 - -# Doc requirements -sphinx!=1.6.6,!=1.6.7,>=1.6.2 # BSD -oslosphinx>=4.7.0 # Apache-2.0 - diff --git a/tox.ini b/tox.ini index 55c8d3c..7752ca8 100644 --- a/tox.ini +++ b/tox.ini @@ -1,25 +1,38 @@ [tox] -minversion = 2.0 -envlist = py35,py34,py27,pep8 +minversion = 3.9.0 +envlist = py3,py27,pep8 skipsdist = True +ignore_basepython_conflict=true [testenv] usedevelop = True install_command = pip install {opts} {packages} deps = - -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} -r{toxinidir}/requirements.txt -r{toxinidir}/test-requirements.txt commands = stestr run --slowest {posargs} [testenv:pep8] basepython = python3 -commands = flake8 +deps = + hacking>=3.1.0,<4.0.0 # Apache-2.0 + doc8>=0.6.0 # Apache-2.0 + flake8-import-order>=0.17.1 # LGPLv3 + pycodestyle>=2.0.0,<2.7.0 # MIT + Pygments>=2.2.0 # BSD +commands = + flake8 {posargs} [testenv:venv] basepython = python3 commands = {posargs} +[testenv:py27] +deps = + -c{toxinidir}/py27-constraints.txt + -r{toxinidir}/requirements.txt + -r{toxinidir}/test-requirements.txt + [testenv:cover] basepython = python3 setenv = @@ -33,19 +46,22 @@ commands = [testenv:docs] basepython = python3 +deps = + -r{toxinidir}/requirements.txt + -r{toxinidir}/doc/requirements.txt commands = python setup.py build_sphinx [flake8] -# E123, E125 skipped as they are invalid PEP-8. - +ignore = W503,W504,W605 show-source = True -ignore = E123,E125 builtins = _ exclude=.venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build - -[testenv:lower-constraints] -basepython = python3 -deps = - -c{toxinidir}/lower-constraints.txt - -r{toxinidir}/test-requirements.txt - -r{toxinidir}/requirements.txt +# [H106] Don't put vim configuration in source files. +# [H203] Use assertIs(Not)None to check for None. +# [H204] Use assert(Not)Equal to check for equality. +# [H205] Use assert(Greater|Less)(Equal) for comparison. +# [H904] Delay string interpolations at logging calls. +enable-extensions=H106,H203,H204,H205,H904 +filename = *.py +import-order-style = pep8 +application-import-names = scciclient