openshift-eng / elliott

Apache License 2.0
15 stars 28 forks source link

Commands can recognize different bugids #402

Closed thegreyd closed 2 years ago

thegreyd commented 2 years ago

This change is for elliott commands that accept bug_ids as argument. Right now we need usejira=True to tell elliott that we are passing in jira ids and usejira=False to tell those are bugzilla ids. With this change we try to be smart and automatically recognize bug_ids into jira and bz and run accordingly. If pattern matching on bugids fails we crash.

Note: verify-bugs needs a refactor and will need follow up work before having this change in.

Testing

openshift-bot commented 2 years ago

Build #1

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_elliott_PR-402/setup.py
py38 create: /mnt/workspace/jenkins/working/art-tools_elliott_PR-402/.tox/py38
py38 installdeps: -rrequirements-dev.txt
py38 inst: /mnt/workspace/jenkins/working/art-tools_elliott_PR-402/.tox/.tmp/package/1/rh-elliott-2.0.14.dev95+g2b41aa2.zip
py38 installed: aiodns==3.0.0,aiohttp==3.8.1,aiosignal==1.2.0,appdirs==1.4.4,astroid==2.11.7,async-timeout==4.0.2,attrs==22.1.0,Brotli==1.0.9,cchardet==2.1.7,certifi==2022.6.15,cffi==1.15.1,charset-normalizer==2.1.1,click==8.0.4,coverage==5.5,cryptography==37.0.4,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.5.1,distlib==0.3.5,errata-tool @ git+http://github.com/thegreyd/errata-tool.git@bad2cb9c3321a1179f018cd9ddcf1d51d634290b,filelock==3.8.0,flake8==3.8.4,flexmock==0.11.3,frozenlist==1.3.1,future==0.18.2,gssapi==1.8.1,idna==3.3,iniconfig==1.1.1,isort==5.10.1,jira==3.4.0,jsonpath-rw==1.4.0,koji==1.29.1,krb5==0.4.0,lazy-object-proxy==1.7.1,mccabe==0.6.1,mock==4.0.3,multidict==6.0.2,mypy==0.971,mypy-extensions==0.4.3,oauthlib==3.2.0,packaging==21.3,platformdirs==2.5.2,pluggy==1.0.0,ply==3.11,py==1.11.0,pycares==4.2.2,pycodestyle==2.6.0,pycparser==2.21,pyflakes==2.2.0,pygit2==1.10.0,pylint==2.14.5,pyparsing==3.0.9,pyspnego==0.6.0,pytest==6.2.5,python-bugzilla==3.2.0,python-dateutil==2.8.2,PyYAML==6.0,requests==2.28.1,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==0.9.1,rh-elliott @ file:///mnt/workspace/jenkins/working/art-tools_elliott_PR-402/.tox/.tmp/package/1/rh-elliott-2.0.14.dev95%2Bg2b41aa2.zip,ruamel.yaml==0.17.21,ruamel.yaml.clib==0.2.6,semver==2.13.0,setuptools-scm==7.0.5,six==1.16.0,tenacity==8.0.1,toml==0.10.2,tomli==2.0.1,tomlkit==0.11.4,tox==3.20.1,typing-extensions==4.3.0,urllib3==1.26.12,virtualenv==20.2.2,wrapt==1.14.1,yarl==1.8.1
py38 run-test-pre: PYTHONHASHSEED='927834174'
py38 run-test: commands[0] | coverage run --branch --source elliottlib -m unittest discover -t . -s tests/
..............................................BZ 9 is ignored because its status was MODIFIED at the moment of sweep cutoff (2021-06-30 12:30:00), however its status changed back to ['ASSIGNED'] afterwards
.................No flaw bugs could be found for these trackers: {'OCPBUGS-2'}
...changed 123 from status1 to status2
.123 is already on status1
.changed 123 from status1 to status2
..changed 123 from status1 to status2
.123 is already on status1
.changed 123 from status1 to status2
................../mnt/workspace/jenkins/working/art-tools_elliott_PR-402/.tox/py38/lib64/python3.8/site-packages/aiohttp/connector.py:771: DeprecationWarning: The object should be created within an async function
  super().__init__(
/mnt/workspace/jenkins/working/art-tools_elliott_PR-402/.tox/py38/lib64/python3.8/site-packages/aiohttp/connector.py:782: DeprecationWarning: The object should be created within an async function
  resolver = DefaultResolver(loop=self._loop)
........./mnt/workspace/jenkins/working/art-tools_elliott_PR-402/elliottlib/errata_async.py:41: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited
  resp.raise_for_status()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
....................................../usr/lib64/python3.8/multiprocessing/pool.py:265: ResourceWarning: unclosed running multiprocessing pool <multiprocessing.pool.ThreadPool state=RUN pool_size=10>
  _warn(f"unclosed running multiprocessing pool {self!r}",
ResourceWarning: Enable tracemalloc to get the object allocation traceback
..................Retrieving bugs for advisory ['12345']
/mnt/workspace/jenkins/working/art-tools_elliott_PR-402/tests/test_verify_attached_bugs_cli.py:14: DeprecationWarning: "@coroutine" decorator is deprecated since Python 3.8, use "async def" instead
  coro = asyncio.coroutine(f)
....
----------------------------------------------------------------------
Ran 159 tests in 0.738s

OK
py38 run-test: commands[1] | coverage report
Name                                              Stmts   Miss Branch BrPart  Cover
-----------------------------------------------------------------------------------
elliottlib/__init__.py                                8      2      2      1    70%
elliottlib/assembly.py                               92      9     54      7    89%
elliottlib/assertion.py                              11      0      6      0   100%
elliottlib/brew.py                                  328    188    134      5    36%
elliottlib/bug/__init__.py                            0      0      0      0   100%
elliottlib/build_finder.py                          114     12     74     15    86%
elliottlib/bzutil.py                                722    216    314     34    66%
elliottlib/cincinnati.py                             21     21      4      0     0%
elliottlib/cli/__init__.py                            0      0      0      0   100%
elliottlib/cli/__main__.py                          271    271     72      0     0%
elliottlib/cli/add_metadata_cli.py                   33     33      4      0     0%
elliottlib/cli/advisory_commons_cli.py               90     90     38      0     0%
elliottlib/cli/advisory_drop_cli.py                  21     21      2      0     0%
elliottlib/cli/advisory_images_cli.py                14     14      2      0     0%
elliottlib/cli/advisory_impetus_cli.py               22     22      6      0     0%
elliottlib/cli/attach_bugs_cli.py                    37     37     18      0     0%
elliottlib/cli/attach_cve_flaws_cli.py              134     71     58      9    44%
elliottlib/cli/change_state_cli.py                   44     44     16      0     0%
elliottlib/cli/cli_opts.py                           13      0     15      0   100%
elliottlib/cli/common.py                             48     12      6      1    69%
elliottlib/cli/create_cli.py                         70     70     20      0     0%
elliottlib/cli/create_placeholder_cli.py             40     40     12      0     0%
elliottlib/cli/create_textonly_cli.py                51     51      8      0     0%
elliottlib/cli/find_bugs_blocker_cli.py              43      4     10      3    87%
elliottlib/cli/find_bugs_qe_cli.py                   36      4      6      0    90%
elliottlib/cli/find_bugs_sweep_cli.py               172     46     90     12    69%
elliottlib/cli/find_builds_cli.py                   255    188    169      2    20%
elliottlib/cli/get_golang_versions_cli.py            56     21     32      5    50%
elliottlib/cli/list_cli.py                           17     17      4      0     0%
elliottlib/cli/puddle_advisories_cli.py              37     37     10      0     0%
elliottlib/cli/remove_bugs_cli.py                    50      8     14      6    78%
elliottlib/cli/repair_bugs_cli.py                    61      5     26      6    87%
elliottlib/cli/rhcos_cli.py                          97     97     54      0     0%
elliottlib/cli/rpmdiff_cli.py                       102    102     34      0     0%
elliottlib/cli/tag_builds_cli.py                    128    128     62      0     0%
elliottlib/cli/tarball_sources_cli.py                83     83     26      0     0%
elliottlib/cli/validate_rhsa.py                      41     41     10      0     0%
elliottlib/cli/verify_attached_bugs_cli.py          207    105    126     11    41%
elliottlib/cli/verify_attached_operators_cli.py     115     81     52      0    20%
elliottlib/cli/verify_cvp_cli.py                    162    162     78      0     0%
elliottlib/constants.py                              51      0      0      0   100%
elliottlib/cvp.py                                   216    216    113      0     0%
elliottlib/dotconfig.py                              54     11     30      6    75%
elliottlib/errata.py                                322    207    138      4    33%
elliottlib/errata_async.py                          108      6     38      5    92%
elliottlib/exceptions.py                             12      0      0      0   100%
elliottlib/exectools.py                              84     13     24      3    83%
elliottlib/gitdata.py                               171    137     76      0    14%
elliottlib/imagecfg.py                               21      2      0      0    90%
elliottlib/logutil.py                                 9      1      2      1    82%
elliottlib/metadata.py                              154     43     76     18    67%
elliottlib/model.py                                 105     22     30      2    79%
elliottlib/openshiftclient.py                        34     34      8      0     0%
elliottlib/pushd.py                                  21      0      2      0   100%
elliottlib/resultsdb.py                              28     28      4      0     0%
elliottlib/rhcos.py                                  51     51     12      0     0%
elliottlib/rpm_utils.py                              30     14     16      5    46%
elliottlib/rpmcfg.py                                  5      2      0      0    60%
elliottlib/rpmdiff.py                                31      0      0      0   100%
elliottlib/runtime.py                               275    201    106      3    21%
elliottlib/tarball_sources.py                        90     61     34      0    30%
elliottlib/util.py                                  303    168    112      9    41%
-----------------------------------------------------------------------------------
TOTAL                                              6021   3570   2489    173    38%
py38 run-test: commands[2] | flake8
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)
thegreyd commented 2 years ago

Merging as this is blocking followup work