From 88b1d3b5c612e25978b060f6af436226e89dcb2d Mon Sep 17 00:00:00 2001 From: Al Bailey Date: Tue, 7 Feb 2023 18:28:11 +0000 Subject: [PATCH] Update zuul jobs from python2 to python3 - removed the old and unused devstack job. - needed to update pylint to python3 - needed to enable bindep to install the packages required for installing mysqlclient No test plan is provided, because the purpose of this change is to determine if zuul is broken for this repo, and then fix it. Story: 2010531 Task: 47313 Signed-off-by: Al Bailey Change-Id: I6655792d692644f2c6320b0ef1d66283e17d7bb3 --- .zuul.yaml | 42 +----------- bindep.txt | 7 ++ pylint.rc | 184 ++++++++++++++--------------------------------------- tox.ini | 40 +++++++----- 4 files changed, 83 insertions(+), 190 deletions(-) create mode 100644 bindep.txt diff --git a/.zuul.yaml b/.zuul.yaml index eda83670..4808a516 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -19,50 +19,12 @@ jobs: - stx-ha-upload-git-mirror -- job: - name: flock-devstack-ha - parent: flock-devstack-base-min - required-projects: - - openstack/barbican - - openstack/python-barbicanclient - - starlingx/config - - starlingx/fault - - starlingx/integ - - starlingx/metal - - starlingx/nfv - - starlingx/update - vars: - tox_envlist: functional - devstack_services: - # StarlingX services - fm-common: true - fm-api: true - sm-common: true - sm-db: true - sm-daemon: true - sm-client: true - sm-tools: true - sm-api: true - sm-eru: true - mysql: false - postgresql: true - tls-proxy: false - devstack_plugins: - barbican: https://opendev.org/openstack/barbican - config: https://opendev.org/starlingx/config - fault: https://opendev.org/starlingx/fault - ha: https://opendev.org/starlingx/ha - integ: https://opendev.org/starlingx/integ - metal: https://opendev.org/starlingx/metal - nfv: https://opendev.org/starlingx/nfv - update: https://opendev.org/starlingx/update - - job: name: ha-tox-pylint parent: tox description: | - Run pylint test for ha in python2.7 - nodeset: ubuntu-bionic + Run pylint test for ha in python3 + nodeset: debian-bullseye vars: tox_envlist: pylint - job: diff --git a/bindep.txt b/bindep.txt new file mode 100644 index 00000000..835f068c --- /dev/null +++ b/bindep.txt @@ -0,0 +1,7 @@ +# This is a cross-platform list tracking distribution packages needed for install and tests; +# see https://docs.openstack.org/infra/bindep/ for additional information. + +build-essential [platform:dpkg] +python3-dev [platform:dpkg] +# default-libmysqlclient-dev is debian specific +default-libmysqlclient-dev [platform:debian] diff --git a/pylint.rc b/pylint.rc index 65004e13..1aa46205 100755 --- a/pylint.rc +++ b/pylint.rc @@ -20,138 +20,60 @@ load-plugins= # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option # multiple time. -# -# Python3 checker: -# -# E1601: print-statement -# E1602: parameter-unpacking -# E1603: unpacking-in-except -# E1604: old-raise-syntax -# E1605: backtick -# E1606: long-suffix -# E1607: old-ne-operator -# E1608: old-octal-literal -# E1609: import-star-module-level -# E1610: non-ascii-bytes-literal -# E1611: invalid-unicode-literal -# W1601: apply-builtin -# W1602: basestring-builtin -# W1603: buffer-builtin -# W1604: cmp-builtin -# W1605: coerce-builtin -# W1606: execfile-builtin -# W1607: file-builtin -# W1608: long-builtin -# W1609: raw_input-builtin -# W1610: reduce-builtin -# W1611: standarderror-builtin -# W1612: unicode-builtin -# W1613: xrange-builtin -# W1614: coerce-method -# W1615: delslice-method -# W1616: getslice-method -# W1617: setslice-method -# W1618: no-absolute-import -# W1619: old-division -# W1620: dict-iter-method -# W1621: dict-view-method -# W1622: next-method-called -# W1623: metaclass-assignment -# W1624: indexing-exception -# W1625: raising-string -# W1626: reload-builtin -# W1627: oct-method -# W1628: hex-method -# W1629: nonzero-method -# W1630: cmp-method -# W1632: input-builtin -# W1633: round-builtin -# W1634: intern-builtin -# W1635: unichr-builtin -# W1636: map-builtin-not-iterating -# W1637: zip-builtin-not-iterating -# W1638: range-builtin-not-iterating -# W1639: filter-builtin-not-iterating -# W1640: using-cmp-argument -# W1641: eq-without-hash -# W1642: div-method -# W1643: idiv-method -# W1644: rdiv-method -# W1645: exception-message-attribute -# W1646: invalid-str-codec -# W1647: sys-max-int -# W1648: bad-python3-import -# W1649: deprecated-string-function -# W1650: deprecated-str-translate-call -# W1651: deprecated-itertools-function -# W1652: deprecated-types-field -# W1653: next-method-defined -# W1654: dict-items-not-iterating -# W1655: dict-keys-not-iterating -# W1656: dict-values-not-iterating -# W1657: deprecated-operator-function -# W1658: deprecated-urllib-function -# W1659: xreadlines-attribute -# W1660: deprecated-sys-function -# W1661: exception-escape -# W1662: comprehension-escape -enable=E1603,E1609,E1610,E1602,E1606,E1608,E1607,E1605,E1604,E1601,E1611,W1652, - W1651,W1649,W1657,W1660,W1658,W1659,W1623,W1622,W1620,W1621,W1645,W1641, - W1624,W1648,W1625,W1611,W1662,W1661,W1650,W1640,W1630,W1614,W1615,W1642, - W1616,W1628,W1643,W1629,W1627,W1644,W1617,W1601,W1602,W1603,W1604,W1605, - W1654,W1655,W1656,W1619,W1606,W1607,W1639,W1618,W1632,W1634,W1608,W1636, - W1653,W1646,W1638,W1609,W1610,W1626,W1633,W1647,W1635,W1612,W1613,W1637 # Disable the message, report, category or checker with the given id(s). You # can either give multiple identifier separated by comma (,) or put this option # multiple time (only on the command line, not in the configuration file where # it should appear only once). -# W0102 dangerous-default-value -# W0107 unnecessary-pass -# W0110 deprecated-lambda -# W0120 useless-else-on-loop -# W0201 attribute-defined-outside-init -# W0212 protected-access -# W0221 arguments-differ -# W0223 abstract-method -# W0231 super-init-not-called -# W0235 useless-super-delegation -# W0402 deprecated-module -# W0403 relative-import -# W0511 fixme -# W0603 global-statement -# W0611 unused-import -# W0612 unused-variable -# W0613 unused-argument -# W0621 redefined-outer-name -# W0622 redefined-builtin -# W0702 bare-except -# W0703 broad except warning -# W1113 keyword-arg-before-vararg -# W1201 logging-not-lazy -# W1401 anomalous-backslash-in-string -# W1618: no-absolute-import -# -# The following are errors which should be fixed -# -# method-hidden (E0202) -# access-member-before-definition (E0203) -# undefined-variable (E0602) -# invalid-all-object (E0604) -# no-name-in-module (E0611) -# raising-bad-type (E0702) -# notimplemented-raised (E0711) -# bad-super-call (E1003) -# no-member (E1101) -# not-callable (E1102) -# too-many-function-args (E1121) -# unsubscriptable-object (E1136) disable=C, R, - W0102, W0107, W0110, W0120, W0201, W0212, W0221, W0223, W0231, W0235, W0402, W0403, - W0511, W0603, W0611, W0612, W0613, W0621, W0622, W0702, W0703, W1113, W1201, W1401, - W1618, - E0202, E0203, E0602, E0604, E0611, E0702, E0711, E1003, E1101, E1102, E1121, E1136 - + W0102, # dangerous-default-value + W0107, # unnecessary-pass + W0120, # useless-else-on-loop + W0143, # comparison-with-callable + W0201, # attribute-defined-outside-init + W0212, # protected-access + W0221, # arguments-differ + W0223, # abstract-method + W0231, # super-init-not-called + W0235, # useless-super-delegation + W0237, # arguments-renamed + W0402, # deprecated-module + W0511, # fixme + W0602, # global-variable-not-assigned + W0603, # global-statement + W0611, # unused-import + W0612, # unused-variable + W0613, # unused-argument + W0621, # redefined-outer-name + W0622, # redefined-builtin + W0702, # bare-except + W0703, # broad except warning + W0707, # raise-missing-from + W0719, # broad-exception-raised + W1113, # keyword-arg-before-vararg + W1201, # logging-not-lazy + W1401, # anomalous-backslash-in-string + W1509, # subprocess-popen-preexec-fn + W1514, # unspecified-encoding + W1618, # no-absolute-import + W4902, # deprecated-method + E0202, # method-hidden + E0203, # access-member-before-definition + E0601, # used-before-assignment + E0602, # undefined-variable + E0604, # invalid-all-object + E0605, # invalid-all-format + E0611, # no-name-in-module + E0702, # raising-bad-type + E0711, # notimplemented-raised + E1003, # bad-super-call + E1101, # no-member + E1102, # not-callable + E1121, # too-many-function-args + E1123, # unexpected-keyword-arg + E1124, # redundant-keyword-arg + E1135, # unsupported-membership-test + E1136 # unsubscriptable-object [REPORTS] @@ -159,11 +81,6 @@ disable=C, R, # (visual studio) and html output-format=text -# Put messages in a separate file for each module / package specified on the -# command line instead of printing them on stdout. Reports (if any) will be -# written in a file name "pylint_global.[txt|html]". -files-output=no - # Tells whether to display a full report or only the messages reports=no @@ -214,9 +131,6 @@ generated-members=uuid [BASIC] -# List of builtins function names that should not be used, separated by a comma -bad-functions=map,filter,apply,input - # Regular expression which should only match correct module names module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ @@ -306,7 +220,7 @@ max-locals=15 max-returns=6 # Maximum number of branch for function / method body -max-branchs=12 +max-branches=12 # Maximum number of statements in function / method body max-statements=50 diff --git a/tox.ini b/tox.ini index e9d161f0..12df9d3b 100644 --- a/tox.ini +++ b/tox.ini @@ -4,8 +4,9 @@ minversion = 2.3 skipsdist = True [testenv] +basepython = python3 install_command = pip install \ - -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/stable/stein/upper-constraints.txt} \ + -c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/starlingx/root/raw/branch/master/build-tools/requirements/debian/upper-constraints.txt} \ {opts} {packages} setenv = VIRTUAL_ENV={envdir} OS_STDOUT_CAPTURE=1 @@ -14,8 +15,7 @@ setenv = VIRTUAL_ENV={envdir} deps = -r{toxinidir}/test-requirements.txt allowlist_externals = reno -[testenv:linters] -basepython = python3 +[testenv:bashate] allowlist_externals = bash commands = bash -c "find {toxinidir} \ @@ -29,14 +29,22 @@ commands = -wholename \*/devstack/\* \ \) \ -print0 | xargs -r -n 1 -0 bashate -v -e E* -i E006" - bash -c "find {toxinidir} \ - \( -name middleware/io-monitor/recipes-common/io-monitor/io-monitor/io_monitor/test-tools/yaml/* -prune \) \ - -o \( -name .tox -prune \) \ + +[testenv:yamllint] +allowlist_externals = bash +commands = + bash -c "find {toxinidir} \ + \( -name .tox -prune \) \ -o -type f -name '*.yaml' \ -print0 | xargs -0 yamllint" +[testenv:linters] +allowlist_externals = bash +commands = + {[testenv:bashate]commands} + {[testenv:yamllint]commands} + [testenv:pylint] -basepython = python2.7 deps = {[testenv]deps} eventlet httplib2 @@ -44,7 +52,7 @@ deps = {[testenv]deps} jsonpatch keystonemiddleware kombu - MySQL-python + mysqlclient oslo.config pecan prettytable @@ -99,7 +107,6 @@ enable-extensions = H203 max-line-length = 110 [testenv:pep8] -basepython = python3 usedevelop = False skip_install = True deps = @@ -109,11 +116,9 @@ commands = flake8 [testenv:venv] -basepython = python3 commands = {posargs} [testenv:docs] -basepython = python3 install_command = pip install -U {opts} {packages} deps = -r{toxinidir}/doc/requirements.txt commands = @@ -122,7 +127,6 @@ commands = allowlist_externals = rm [testenv:releasenotes] -basepython = python3 deps = -r{toxinidir}/doc/requirements.txt commands = rm -rf releasenotes/build @@ -130,7 +134,6 @@ commands = allowlist_externals = rm [testenv:newnote] -basepython = python3 # Re-use the releasenotes venv install_command = pip install -U {opts} {packages} envdir = {toxworkdir}/releasenotes @@ -138,7 +141,6 @@ deps = -r{toxinidir}/doc/requirements.txt commands = reno new {posargs} [testenv:api-ref] -basepython = python3 install_command = pip install -U {opts} {packages} deps = -r{toxinidir}/doc/requirements.txt @@ -152,7 +154,15 @@ allowlist_externals = rm skips = B411 [testenv:bandit] -basepython = python3 description = Bandit code scan for *.py files under config folder deps = -r{toxinidir}/test-requirements.txt commands = bandit --ini tox.ini -r {toxinidir}/ -x '**/.tox/**',**/.eggs/** -lll + +[testenv:bindep] +# Do not install any requirements. We want this to be fast and work even if +# system dependencies are missing, since it's used to tell you what system +# dependencies are missing! This also means that bindep must be installed +# separately, outside of the requirements files. +skip_install = True +deps = bindep +commands = bindep test