openshift-eng / elliott

Apache License 2.0
15 stars 28 forks source link

Reuse advisory object instead of refetching it #496

Closed thegreyd closed 1 year ago

thegreyd commented 1 year ago

I noticed when working with GA advisories - some commands were taking a lot of time. In cases when we want to attach bugs we were refetching the advisory in the attach method. Instead have an advisory_obj param and use that if we have advisory fetched.

openshift-bot commented 1 year ago

Build #1

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_elliott_PR-496/setup.py
py38 create: /mnt/workspace/jenkins/working/art-tools_elliott_PR-496/.tox/py38
py38 installdeps: -rrequirements-dev.txt
py38 inst: /mnt/workspace/jenkins/working/art-tools_elliott_PR-496/.tox/.tmp/package/1/rh-elliott-2.0.14.dev224+gd51aa67.zip
py38 installed: aiodns==3.0.0,aiohttp==3.8.3,aiosignal==1.3.1,astroid==2.13.2,async-timeout==4.0.2,asynctest==0.13.0,attrs==22.2.0,Brotli==1.0.9,cachetools==5.2.1,cchardet==2.1.7,certifi==2022.12.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==2.1.1,click==8.1.3,colorama==0.4.6,coverage==7.0.5,cryptography==39.0.0,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.6,distlib==0.3.6,errata-tool==1.30.0,exceptiongroup==1.1.0,filelock==3.9.0,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.11.4,jira==3.4.1,jsonpath-rw==1.4.0,koji==1.31.1,krb5==0.4.1,lazy-object-proxy==1.9.0,mccabe==0.7.0,mock==5.0.1,multidict==6.0.4,mypy==0.991,mypy-extensions==0.4.3,oauthlib==3.2.2,packaging==23.0,platformdirs==2.6.2,pluggy==1.0.0,ply==3.11,pycares==4.3.0,pycodestyle==2.10.0,pycparser==2.21,pyflakes==3.0.1,pygit2==1.10.1,pylint==2.15.10,pyproject_api==1.4.0,pyspnego==0.7.0,pytest==7.2.1,python-bugzilla==3.2.0,python-dateutil==2.8.2,PyYAML==6.0,requests==2.28.2,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==0.10.1,rh-elliott @ file:///mnt/workspace/jenkins/working/art-tools_elliott_PR-496/.tox/.tmp/package/1/rh-elliott-2.0.14.dev224%2Bgd51aa67.zip,ruamel.yaml==0.17.21,ruamel.yaml.clib==0.2.7,semver==2.13.0,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.1.0,tomli==2.0.1,tomlkit==0.11.6,tox==4.3.4,typing_extensions==4.4.0,urllib3==1.26.14,virtualenv==20.17.1,wrapt==1.14.1,yarl==1.8.2
py38 run-test-pre: PYTHONHASHSEED='3630761567'
py38 run-test: commands[0] | coverage run --branch --source elliottlib -m unittest discover -t . -s tests/
.............................................Cannot find any corresponding flaw bugs for these trackers: [13]. These trackers do not have a valid whiteboard component value: [12].
..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
.....................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
...................../usr/lib64/python3.8/asyncio/base_events.py:654: ResourceWarning: unclosed event loop <_UnixSelectorEventLoop running=False closed=False debug=False>
  _warn(f"unclosed event loop {self!r}", ResourceWarning, source=self)
ResourceWarning: Enable tracemalloc to get the object allocation traceback
..........................Bug(s) ['OCPBUGS-5', 'OCPBUGS-6', 'OCPBUGS-4'] have CVE in description but do not have TrackerBug labels. Please investigate.
...........................................
----------------------------------------------------------------------
Ran 164 tests in 0.723s

OK
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7fabc1b09d60>
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                                775    306    324     26    56%
elliottlib/cincinnati.py                             21     21      4      0     0%
elliottlib/cli/__init__.py                            0      0      0      0   100%
elliottlib/cli/__main__.py                          270    270     75      0     0%
elliottlib/cli/add_metadata_cli.py                   28     28      4      0     0%
elliottlib/cli/advisory_commons_cli.py               90     90     38      0     0%
elliottlib/cli/advisory_drop_cli.py                  37     37     14      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              130     66     58      9    45%
elliottlib/cli/change_state_cli.py                   44     44     16      0     0%
elliottlib/cli/cli_opts.py                           15      0     17      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             36     36     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               204     32    116     20    81%
elliottlib/cli/find_builds_cli.py                   267    198    179      2    19%
elliottlib/cli/get_golang_versions_cli.py            56     21     32      5    50%
elliottlib/cli/list_cli.py                           14     14      2      0     0%
elliottlib/cli/puddle_advisories_cli.py              34     34      8      0     0%
elliottlib/cli/remove_bugs_cli.py                    46      6     14      6    80%
elliottlib/cli/repair_bugs_cli.py                    61      5     26      6    87%
elliottlib/cli/rhcos_cli.py                          93     93     52      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                      45     45     16      0     0%
elliottlib/cli/verify_attached_bugs_cli.py          255     90    167     20    57%
elliottlib/cli/verify_attached_operators_cli.py     118     85     55      0    19%
elliottlib/cli/verify_cvp_cli.py                    165    165     78      0     0%
elliottlib/constants.py                              52      0      0      0   100%
elliottlib/cvp.py                                   216    216    113      0     0%
elliottlib/dotconfig.py                              54     11     30      6    75%
elliottlib/errata.py                                307    193    132      4    34%
elliottlib/errata_async.py                          109      6     38      5    93%
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                                  63     63     16      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                               278    202    106      2    22%
elliottlib/tarball_sources.py                        90     61     34      0    30%
elliottlib/util.py                                  301    167    112      9    41%
-----------------------------------------------------------------------------------
TOTAL                                              6166   3639   2594    181    38%
py38 run-test: commands[2] | flake8
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)
openshift-bot commented 1 year ago

Build #2

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_elliott_PR-496/setup.py
py38 recreate: /mnt/workspace/jenkins/working/art-tools_elliott_PR-496/.tox/py38
py38 installdeps: -rrequirements-dev.txt
py38 inst: /mnt/workspace/jenkins/working/art-tools_elliott_PR-496/.tox/.tmp/package/1/rh-elliott-2.0.14.dev227+g3f2e6c6.zip
py38 installed: aiodns==3.0.0,aiohttp==3.8.3,aiosignal==1.3.1,astroid==2.13.2,async-timeout==4.0.2,asynctest==0.13.0,attrs==22.2.0,Brotli==1.0.9,cachetools==5.2.1,cchardet==2.1.7,certifi==2022.12.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==2.1.1,click==8.1.3,colorama==0.4.6,coverage==7.0.5,cryptography==39.0.0,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.6,distlib==0.3.6,errata-tool==1.30.0,exceptiongroup==1.1.0,filelock==3.9.0,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.11.4,jira==3.4.1,jsonpath-rw==1.4.0,koji==1.31.1,krb5==0.4.1,lazy-object-proxy==1.9.0,mccabe==0.7.0,mock==5.0.1,multidict==6.0.4,mypy==0.991,mypy-extensions==0.4.3,oauthlib==3.2.2,packaging==23.0,platformdirs==2.6.2,pluggy==1.0.0,ply==3.11,pycares==4.3.0,pycodestyle==2.10.0,pycparser==2.21,pyflakes==3.0.1,pygit2==1.10.1,pylint==2.15.10,pyproject_api==1.5.0,pyspnego==0.7.0,pytest==7.2.1,python-bugzilla==3.2.0,python-dateutil==2.8.2,PyYAML==6.0,requests==2.28.2,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==0.10.1,rh-elliott @ file:///mnt/workspace/jenkins/working/art-tools_elliott_PR-496/.tox/.tmp/package/1/rh-elliott-2.0.14.dev227%2Bg3f2e6c6.zip,ruamel.yaml==0.17.21,ruamel.yaml.clib==0.2.7,semver==2.13.0,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.1.0,tomli==2.0.1,tomlkit==0.11.6,tox==4.3.4,typing_extensions==4.4.0,urllib3==1.26.14,virtualenv==20.17.1,wrapt==1.14.1,yarl==1.8.2
py38 run-test-pre: PYTHONHASHSEED='677765220'
py38 run-test: commands[0] | coverage run --branch --source elliottlib -m unittest discover -t . -s tests/
.............................................Cannot find any corresponding flaw bugs for these trackers: [13]. These trackers do not have a valid whiteboard component value: [12].
..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
.....................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
...................../usr/lib64/python3.8/asyncio/base_events.py:654: ResourceWarning: unclosed event loop <_UnixSelectorEventLoop running=False closed=False debug=False>
  _warn(f"unclosed event loop {self!r}", ResourceWarning, source=self)
ResourceWarning: Enable tracemalloc to get the object allocation traceback
..........................Bug(s) ['OCPBUGS-6', 'OCPBUGS-5', 'OCPBUGS-4'] have CVE in description but do not have TrackerBug labels. Please investigate.
...........................................
----------------------------------------------------------------------
Ran 164 tests in 0.715s

OK
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7fc45504ec10>
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                                775    306    324     26    56%
elliottlib/cincinnati.py                             21     21      4      0     0%
elliottlib/cli/__init__.py                            0      0      0      0   100%
elliottlib/cli/__main__.py                          270    270     75      0     0%
elliottlib/cli/add_metadata_cli.py                   28     28      4      0     0%
elliottlib/cli/advisory_commons_cli.py               90     90     38      0     0%
elliottlib/cli/advisory_drop_cli.py                  37     37     14      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              130     66     58      9    45%
elliottlib/cli/change_state_cli.py                   44     44     16      0     0%
elliottlib/cli/cli_opts.py                           15      0     17      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             36     36     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               207     33    118     21    81%
elliottlib/cli/find_builds_cli.py                   267    198    179      2    19%
elliottlib/cli/get_golang_versions_cli.py            56     21     32      5    50%
elliottlib/cli/list_cli.py                           14     14      2      0     0%
elliottlib/cli/puddle_advisories_cli.py              34     34      8      0     0%
elliottlib/cli/remove_bugs_cli.py                    46      6     14      6    80%
elliottlib/cli/repair_bugs_cli.py                    61      5     26      6    87%
elliottlib/cli/rhcos_cli.py                          93     93     52      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                      45     45     16      0     0%
elliottlib/cli/verify_attached_bugs_cli.py          255     90    167     20    57%
elliottlib/cli/verify_attached_operators_cli.py     118     85     55      0    19%
elliottlib/cli/verify_cvp_cli.py                    165    165     78      0     0%
elliottlib/constants.py                              52      0      0      0   100%
elliottlib/cvp.py                                   216    216    113      0     0%
elliottlib/dotconfig.py                              54     11     30      6    75%
elliottlib/errata.py                                307    193    132      4    34%
elliottlib/errata_async.py                          109      6     38      5    93%
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                                  63     63     16      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                               278    202    106      2    22%
elliottlib/tarball_sources.py                        90     61     34      0    30%
elliottlib/util.py                                  301    167    112      9    41%
-----------------------------------------------------------------------------------
TOTAL                                              6169   3640   2596    182    38%
py38 run-test: commands[2] | flake8
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)
locriandev commented 1 year ago

/lgtm

openshift-ci[bot] commented 1 year ago

New changes are detected. LGTM label has been removed.

openshift-bot commented 1 year ago

Build #4

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_elliott_PR-496/setup.py
py38 recreate: /mnt/workspace/jenkins/working/art-tools_elliott_PR-496/.tox/py38
py38 installdeps: -rrequirements-dev.txt
py38 inst: /mnt/workspace/jenkins/working/art-tools_elliott_PR-496/.tox/.tmp/package/1/rh-elliott-2.0.14.dev231+g049d2af.zip
py38 installed: aiodns==3.0.0,aiohttp==3.8.3,aiosignal==1.3.1,astroid==2.13.2,async-timeout==4.0.2,asynctest==0.13.0,attrs==22.2.0,Brotli==1.0.9,cachetools==5.2.1,cchardet==2.1.7,certifi==2022.12.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==2.1.1,click==8.1.3,colorama==0.4.6,coverage==7.0.5,cryptography==39.0.0,decorator==5.1.1,defusedxml==0.7.1,dill==0.3.6,distlib==0.3.6,errata-tool==1.30.0,exceptiongroup==1.1.0,filelock==3.9.0,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.11.4,jira==3.4.1,jsonpath-rw==1.4.0,koji==1.31.1,krb5==0.4.1,lazy-object-proxy==1.9.0,mccabe==0.7.0,mock==5.0.1,multidict==6.0.4,mypy==0.991,mypy-extensions==0.4.3,oauthlib==3.2.2,packaging==23.0,platformdirs==2.6.2,pluggy==1.0.0,ply==3.11,pycares==4.3.0,pycodestyle==2.10.0,pycparser==2.21,pyflakes==3.0.1,pygit2==1.10.1,pylint==2.15.10,pyproject_api==1.5.0,pyspnego==0.7.0,pytest==7.2.1,python-bugzilla==3.2.0,python-dateutil==2.8.2,PyYAML==6.0,requests==2.28.2,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==0.10.1,rh-elliott @ file:///mnt/workspace/jenkins/working/art-tools_elliott_PR-496/.tox/.tmp/package/1/rh-elliott-2.0.14.dev231%2Bg049d2af.zip,ruamel.yaml==0.17.21,ruamel.yaml.clib==0.2.7,semver==2.13.0,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.1.0,tomli==2.0.1,tomlkit==0.11.6,tox==4.3.5,typing_extensions==4.4.0,urllib3==1.26.14,virtualenv==20.17.1,wrapt==1.14.1,yarl==1.8.2
py38 run-test-pre: PYTHONHASHSEED='4124192940'
py38 run-test: commands[0] | coverage run --branch --source elliottlib -m unittest discover -t . -s tests/
.............................................Cannot find any corresponding flaw bugs for these trackers: [13]. These trackers do not have a valid whiteboard component value: [12].
..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
.....................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
................................................Bug(s) ['OCPBUGS-6', 'OCPBUGS-4', 'OCPBUGS-5'] have CVE in description but do not have TrackerBug labels. Please investigate.
.............................................
----------------------------------------------------------------------
Ran 167 tests in 0.716s

OK
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f6f964233d0>
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                                792    320    332     26    55%
elliottlib/cincinnati.py                             21     21      4      0     0%
elliottlib/cli/__init__.py                            0      0      0      0   100%
elliottlib/cli/__main__.py                          270    270     75      0     0%
elliottlib/cli/add_metadata_cli.py                   28     28      4      0     0%
elliottlib/cli/advisory_commons_cli.py               90     90     38      0     0%
elliottlib/cli/advisory_drop_cli.py                  37     37     14      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              130     66     58      9    45%
elliottlib/cli/change_state_cli.py                   44     44     16      0     0%
elliottlib/cli/cli_opts.py                           15      0     17      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             36     36     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               213     36    124     22    79%
elliottlib/cli/find_builds_cli.py                   267    198    179      2    19%
elliottlib/cli/get_golang_versions_cli.py            56      8     32     10    80%
elliottlib/cli/list_cli.py                           14     14      2      0     0%
elliottlib/cli/puddle_advisories_cli.py              34     34      8      0     0%
elliottlib/cli/remove_bugs_cli.py                    46      6     14      6    80%
elliottlib/cli/repair_bugs_cli.py                    61      5     26      6    87%
elliottlib/cli/rhcos_cli.py                          93     93     52      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                      45     45     16      0     0%
elliottlib/cli/verify_attached_bugs_cli.py          256     91    167     20    57%
elliottlib/cli/verify_attached_operators_cli.py     118     85     55      0    19%
elliottlib/cli/verify_cvp_cli.py                    165    165     78      0     0%
elliottlib/constants.py                              52      0      0      0   100%
elliottlib/cvp.py                                   216    216    113      0     0%
elliottlib/dotconfig.py                              54     11     30      6    75%
elliottlib/errata.py                                307    193    132      4    34%
elliottlib/errata_async.py                          151     14     58      9    89%
elliottlib/exceptions.py                             12      0      0      0   100%
elliottlib/exectools.py                              84      7     24      3    89%
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                                  63     63     16      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                               278    202    106      2    22%
elliottlib/tarball_sources.py                        90     61     34      0    30%
elliottlib/util.py                                  297    139    110     15    50%
-----------------------------------------------------------------------------------
TOTAL                                              6231   3619   2628    198    39%
py38 run-test: commands[2] | flake8
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)