Skip to content
This repository has been archived by the owner on Oct 13, 2023. It is now read-only.

WIP: [ART-3965] scan-sources: Use repoquery for rpm change detection #783

Closed

Conversation

vfreex
Copy link
Contributor

@vfreex vfreex commented Jun 20, 2023

In #764, the idea of using repoquery to detect outdated rpms has been proved in gen-payload. This PR will adopt the same approach in scan_sources.

Example run:

$ doozer --debug --assembly=stream --group=openshift-4.9 --rpms=openshift-clients --images=openshift-base-rhel8 config:scan-sources --yaml

images:
-   changed: true
    name: openshift-base-rhel8
    reason: RPM redhat-release-eula-8.4-0.8.el8 installed in openshift-base-rhel8-container-v4.9.0-202304010015.p0.gf020942.assembly.stream
        (x86_64) when redhat-release-eula-8.4-0.10.el8 is available in repo rhel-8-baseos-rpms;
        RPM redhat-release-8.4-0.8.el8 installed in openshift-base-rhel8-container-v4.9.0-202304010015.p0.gf020942.assembly.stream
        (x86_64) when redhat-release-8.4-0.10.el8 is available in repo rhel-8-baseos-rpms;
        RPM redhat-release-eula-8.4-0.8.el8 installed in openshift-base-rhel8-container-v4.9.0-202304010015.p0.gf020942.assembly.stream
        (ppc64le) when redhat-release-eula-8.4-0.10.el8 is available in repo rhel-8-baseos-rpms;
        RPM redhat-release-8.4-0.8.el8 installed in openshift-base-rhel8-container-v4.9.0-202304010015.p0.gf020942.assembly.stream
        (ppc64le) when redhat-release-8.4-0.10.el8 is available in repo rhel-8-baseos-rpms;
        RPM redhat-release-eula-8.4-0.8.el8 installed in openshift-base-rhel8-container-v4.9.0-202304010015.p0.gf020942.assembly.stream
        (s390x) when redhat-release-eula-8.4-0.10.el8 is available in repo rhel-8-baseos-rpms;
        RPM redhat-release-8.4-0.8.el8 installed in openshift-base-rhel8-container-v4.9.0-202304010015.p0.gf020942.assembly.stream
        (s390x) when redhat-release-8.4-0.10.el8 is available in repo rhel-8-baseos-rpms;
        RPM redhat-release-eula-8.4-0.8.el8 installed in openshift-base-rhel8-container-v4.9.0-202304010015.p0.gf020942.assembly.stream
        (aarch64) when redhat-release-eula-8.4-0.10.el8 is available in repo rhel-8-baseos-rpms;
        RPM redhat-release-8.4-0.8.el8 installed in openshift-base-rhel8-container-v4.9.0-202304010015.p0.gf020942.assembly.stream
        (aarch64) when redhat-release-8.4-0.10.el8 is available in repo rhel-8-baseos-rpms
rpms:
-   changed: false
    name: openshift-clients
    reason: No change detected

@vfreex vfreex changed the title [ART-3965] Use repoquery for rpm change detection WIP: [ART-3965] Use repoquery for rpm change detection Jun 20, 2023
@openshift-bot
Copy link

Build #1

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/setup.py
py38 create: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/py38
py38 installdeps: -rrequirements-dev.txt, -rrequirements.txt
py38 inst: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev12+g35c153c.zip
py38 installed: aiofiles==23.1.0,aiohttp==3.8.4,aiosignal==1.3.1,astroid==2.15.5,async-timeout==4.0.2,attrs==23.1.0,autopep8==2.0.2,bashlex==0.18,bcrypt==4.0.1,cachetools==5.3.1,certifi==2023.5.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==3.1.0,click==8.1.3,colorama==0.4.6,coverage==7.2.7,cryptography==41.0.1,decorator==5.1.1,defusedxml==0.7.1,Deprecated==1.2.14,dill==0.3.6,distlib==0.3.6,dockerfile-parse==2.0.0,exceptiongroup==1.1.1,fastcore==1.5.29,filelock==3.12.2,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,ghapi==1.0.4,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.12.0,jira==3.4.1,koji==1.33.0,krb5==0.5.0,lazy-object-proxy==1.9.0,mccabe==0.7.0,multidict==6.0.4,mysql-connector-python==8.0.33,oauthlib==3.2.2,openshift-client==1.0.18,packaging==23.1,paramiko==3.2.0,platformdirs==3.6.0,pluggy==1.0.0,protobuf==3.20.3,pycodestyle==2.10.0,pycparser==2.21,pydantic==1.10.9,pyflakes==3.0.1,pygit2==1.10.1,PyGithub==1.58.2,PyJWT==2.7.0,pylint==2.17.4,PyNaCl==1.5.0,pyproject-api==1.5.2,pyspnego==0.9.1,pytest==7.3.2,python-dateutil==2.8.2,PyYAML==6.0,requests==2.31.0,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==1.0.0,rh-doozer @ file:///mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev12%2Bg35c153c.zip,semver==3.0.1,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.2.2,tomli==2.0.1,tomlkit==0.11.8,tox==4.6.3,typing==3.7.4.3,typing-extensions==4.6.3,urllib3==2.0.3,virtualenv==20.23.1,wrapt==1.15.0,yarl==1.9.2
py38 run-test-pre: PYTHONHASHSEED='3597348104'
py38 run-test: commands[0] | coverage run --branch --source doozerlib -m unittest discover -t . -s tests/
................................................................................................................................................s.s....................................s.s...s.s..s..s.s.s..................................................................................
----------------------------------------------------------------------
Ran 274 tests in 2.205s

OK (skipped=10)
py38 run-test: commands[1] | flake8
py38 run-test: commands[2] | coverage report
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
doozerlib/__init__.py                            12      7      2      1    43%
doozerlib/_version.py                             2      2      0      0     0%
doozerlib/assembly.py                           158     20     87     11    84%
doozerlib/assembly_inspector.py                 220    158    128      8    24%
doozerlib/assertion.py                           13      0      6      0   100%
doozerlib/brew.py                               366    206    152      4    40%
doozerlib/build_status_detector.py               85     10     54      3    86%
doozerlib/cli/__init__.py                       122     64     28      0    39%
doozerlib/cli/__main__.py                      1200   1200    474      0     0%
doozerlib/cli/cli_opts.py                        20      3      8      0    89%
doozerlib/cli/config_plashet.py                 535    535    246      0     0%
doozerlib/cli/config_tag_rpms.py                141     20     77     15    82%
doozerlib/cli/detect_embargo.py                 167     35     70      8    75%
doozerlib/cli/get_nightlies.py                  230     59    127      3    71%
doozerlib/cli/images_health.py                   82     30     26      2    59%
doozerlib/cli/images_streams.py                 687    687    296      0     0%
doozerlib/cli/inspect_stream.py                  66     66     28      0     0%
doozerlib/cli/release_calc_upgrade_tests.py      24     24      6      0     0%
doozerlib/cli/release_gen_assembly.py           277    146    118      3    42%
doozerlib/cli/release_gen_payload.py            703    260    300     20    58%
doozerlib/cli/rpms_build.py                     165     59     58      8    57%
doozerlib/cli/scan_sources.py                   182    141    100      2    17%
doozerlib/comment_on_pr.py                       46      0      8      0   100%
doozerlib/config.py                              97     97     44      0     0%
doozerlib/constants.py                           11      0      0      0   100%
doozerlib/coverity.py                           255    225     82      0     9%
doozerlib/dblib.py                              263    160     68      4    35%
doozerlib/distgit.py                           1453    902    690     39    35%
doozerlib/dotconfig.py                           54     43     31      0    13%
doozerlib/exceptions.py                           2      0      0      0   100%
doozerlib/exectools.py                          197    105     76     10    43%
doozerlib/gitdata.py                            171    137     76      0    14%
doozerlib/image.py                              505    300    214     12    35%
doozerlib/logutil.py                              9      0      2      1    91%
doozerlib/metadata.py                           432    151    184     30    61%
doozerlib/model.py                              113     21     36      2    82%
doozerlib/olm/__init__.py                         0      0      0      0   100%
doozerlib/olm/bundle.py                         315    230     72      0    22%
doozerlib/osbs2_builder.py                      119     30     44     19    67%
doozerlib/plashet.py                            134      9     90     15    89%
doozerlib/pushd.py                               22      0      2      0   100%
doozerlib/release_schedule.py                    28     17      8      0    31%
doozerlib/repos.py                              255     95    123     18    56%
doozerlib/rhcos.py                              237     25     90     14    87%
doozerlib/rpm_builder.py                        232     32    123     32    80%
doozerlib/rpm_delivery.py                        16      1      0      0    94%
doozerlib/rpm_utils.py                          134     23     90     14    81%
doozerlib/rpmcfg.py                             151     61     64      8    55%
doozerlib/runtime.py                            952    694    378      8    21%
doozerlib/source_modifications.py               116     33     26      4    68%
doozerlib/state.py                               23     12      8      0    35%
doozerlib/util.py                               452    217    180     13    48%
-------------------------------------------------------------------------------
TOTAL                                         12251   7352   5200    331    37%
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)

@vfreex vfreex changed the title WIP: [ART-3965] Use repoquery for rpm change detection WIP: [ART-3965] scan-sources: Use repoquery for rpm change detection Jun 20, 2023
@vfreex vfreex force-pushed the scan_sources_with_repoquery branch from 35c153c to e4543ab Compare June 20, 2023 07:59
@openshift-bot
Copy link

Build #2

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/setup.py
py38 inst-nodeps: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev12+ge4543ab.zip
py38 installed: aiofiles==23.1.0,aiohttp==3.8.4,aiosignal==1.3.1,astroid==2.15.5,async-timeout==4.0.2,attrs==23.1.0,autopep8==2.0.2,bashlex==0.18,bcrypt==4.0.1,cachetools==5.3.1,certifi==2023.5.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==3.1.0,click==8.1.3,colorama==0.4.6,coverage==7.2.7,cryptography==41.0.1,decorator==5.1.1,defusedxml==0.7.1,Deprecated==1.2.14,dill==0.3.6,distlib==0.3.6,dockerfile-parse==2.0.0,exceptiongroup==1.1.1,fastcore==1.5.29,filelock==3.12.2,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,ghapi==1.0.4,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.12.0,jira==3.4.1,koji==1.33.0,krb5==0.5.0,lazy-object-proxy==1.9.0,mccabe==0.7.0,multidict==6.0.4,mysql-connector-python==8.0.33,oauthlib==3.2.2,openshift-client==1.0.18,packaging==23.1,paramiko==3.2.0,platformdirs==3.6.0,pluggy==1.0.0,protobuf==3.20.3,pycodestyle==2.10.0,pycparser==2.21,pydantic==1.10.9,pyflakes==3.0.1,pygit2==1.10.1,PyGithub==1.58.2,PyJWT==2.7.0,pylint==2.17.4,PyNaCl==1.5.0,pyproject-api==1.5.2,pyspnego==0.9.1,pytest==7.3.2,python-dateutil==2.8.2,PyYAML==6.0,requests==2.31.0,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==1.0.0,rh-doozer @ file:///mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev12%2Bge4543ab.zip,semver==3.0.1,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.2.2,tomli==2.0.1,tomlkit==0.11.8,tox==4.6.3,typing==3.7.4.3,typing-extensions==4.6.3,urllib3==2.0.3,virtualenv==20.23.1,wrapt==1.15.0,yarl==1.9.2
py38 run-test-pre: PYTHONHASHSEED='110487584'
py38 run-test: commands[0] | coverage run --branch --source doozerlib -m unittest discover -t . -s tests/
................................................................................................................................................s.s....................................s.s...s.s..s..s.s.s..................................................................................
----------------------------------------------------------------------
Ran 274 tests in 2.211s

OK (skipped=10)
py38 run-test: commands[1] | flake8
py38 run-test: commands[2] | coverage report
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
doozerlib/__init__.py                            12      7      2      1    43%
doozerlib/_version.py                             2      2      0      0     0%
doozerlib/assembly.py                           158     20     87     11    84%
doozerlib/assembly_inspector.py                 220    158    128      8    24%
doozerlib/assertion.py                           13      0      6      0   100%
doozerlib/brew.py                               366    206    152      4    40%
doozerlib/build_status_detector.py               85     10     54      3    86%
doozerlib/cli/__init__.py                       122     64     28      0    39%
doozerlib/cli/__main__.py                      1200   1200    474      0     0%
doozerlib/cli/cli_opts.py                        20      3      8      0    89%
doozerlib/cli/config_plashet.py                 535    535    246      0     0%
doozerlib/cli/config_tag_rpms.py                141     20     77     15    82%
doozerlib/cli/detect_embargo.py                 167     35     70      8    75%
doozerlib/cli/get_nightlies.py                  230     59    127      3    71%
doozerlib/cli/images_health.py                   82     30     26      2    59%
doozerlib/cli/images_streams.py                 687    687    296      0     0%
doozerlib/cli/inspect_stream.py                  66     66     28      0     0%
doozerlib/cli/release_calc_upgrade_tests.py      24     24      6      0     0%
doozerlib/cli/release_gen_assembly.py           277    146    118      3    42%
doozerlib/cli/release_gen_payload.py            703    260    300     20    58%
doozerlib/cli/rpms_build.py                     165     59     58      8    57%
doozerlib/cli/scan_sources.py                   182    141    100      2    17%
doozerlib/comment_on_pr.py                       46      0      8      0   100%
doozerlib/config.py                              97     97     44      0     0%
doozerlib/constants.py                           11      0      0      0   100%
doozerlib/coverity.py                           255    225     82      0     9%
doozerlib/dblib.py                              263    160     68      4    35%
doozerlib/distgit.py                           1453    902    690     39    35%
doozerlib/dotconfig.py                           54     43     31      0    13%
doozerlib/exceptions.py                           2      0      0      0   100%
doozerlib/exectools.py                          197    105     76     10    43%
doozerlib/gitdata.py                            171    137     76      0    14%
doozerlib/image.py                              505    300    214     12    35%
doozerlib/logutil.py                              9      0      2      1    91%
doozerlib/metadata.py                           432    151    184     30    61%
doozerlib/model.py                              113     21     36      2    82%
doozerlib/olm/__init__.py                         0      0      0      0   100%
doozerlib/olm/bundle.py                         315    230     72      0    22%
doozerlib/osbs2_builder.py                      119     30     44     19    67%
doozerlib/plashet.py                            134      9     90     15    89%
doozerlib/pushd.py                               22      0      2      0   100%
doozerlib/release_schedule.py                    28     17      8      0    31%
doozerlib/repos.py                              255     95    123     18    56%
doozerlib/rhcos.py                              237     25     90     14    87%
doozerlib/rpm_builder.py                        232     32    123     32    80%
doozerlib/rpm_delivery.py                        16      1      0      0    94%
doozerlib/rpm_utils.py                          134     23     90     14    81%
doozerlib/rpmcfg.py                             151     61     64      8    55%
doozerlib/runtime.py                            952    694    378      8    21%
doozerlib/source_modifications.py               116     33     26      4    68%
doozerlib/state.py                               23     12      8      0    35%
doozerlib/util.py                               452    217    180     13    48%
-------------------------------------------------------------------------------
TOTAL                                         12251   7352   5200    331    37%
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)

@vfreex
Copy link
Contributor Author

vfreex commented Jun 20, 2023

Needs more testing to see if this will cause unnecessary rebuild before deploying this to production. Cases to consider:

  • An image pins an old rpm (I recall some images do that for ovn packages)
  • An rpm module is used (an image should only use the latest in that module instead of the overall latest)

In openshift-eng#764, the idea of using
repoquery to detect outdated rpms has been proved in `gen-payload`.
This PR will adopt the same approach in `scan_sources`.
@vfreex vfreex force-pushed the scan_sources_with_repoquery branch from e4543ab to 6e23bcb Compare June 20, 2023 08:14
@openshift-bot
Copy link

Build #3

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/setup.py
py38 inst-nodeps: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev12+g6e23bcb.zip
py38 installed: aiofiles==23.1.0,aiohttp==3.8.4,aiosignal==1.3.1,astroid==2.15.5,async-timeout==4.0.2,attrs==23.1.0,autopep8==2.0.2,bashlex==0.18,bcrypt==4.0.1,cachetools==5.3.1,certifi==2023.5.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==3.1.0,click==8.1.3,colorama==0.4.6,coverage==7.2.7,cryptography==41.0.1,decorator==5.1.1,defusedxml==0.7.1,Deprecated==1.2.14,dill==0.3.6,distlib==0.3.6,dockerfile-parse==2.0.0,exceptiongroup==1.1.1,fastcore==1.5.29,filelock==3.12.2,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,ghapi==1.0.4,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.12.0,jira==3.4.1,koji==1.33.0,krb5==0.5.0,lazy-object-proxy==1.9.0,mccabe==0.7.0,multidict==6.0.4,mysql-connector-python==8.0.33,oauthlib==3.2.2,openshift-client==1.0.18,packaging==23.1,paramiko==3.2.0,platformdirs==3.6.0,pluggy==1.0.0,protobuf==3.20.3,pycodestyle==2.10.0,pycparser==2.21,pydantic==1.10.9,pyflakes==3.0.1,pygit2==1.10.1,PyGithub==1.58.2,PyJWT==2.7.0,pylint==2.17.4,PyNaCl==1.5.0,pyproject-api==1.5.2,pyspnego==0.9.1,pytest==7.3.2,python-dateutil==2.8.2,PyYAML==6.0,requests==2.31.0,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==1.0.0,rh-doozer @ file:///mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev12%2Bg6e23bcb.zip,semver==3.0.1,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.2.2,tomli==2.0.1,tomlkit==0.11.8,tox==4.6.3,typing==3.7.4.3,typing-extensions==4.6.3,urllib3==2.0.3,virtualenv==20.23.1,wrapt==1.15.0,yarl==1.9.2
py38 run-test-pre: PYTHONHASHSEED='4240828192'
py38 run-test: commands[0] | coverage run --branch --source doozerlib -m unittest discover -t . -s tests/
................................................................................................................................................s.s....................................s.s...s.s..s..s.s.s..................................................................................
----------------------------------------------------------------------
Ran 274 tests in 2.179s

OK (skipped=10)
py38 run-test: commands[1] | flake8
py38 run-test: commands[2] | coverage report
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
doozerlib/__init__.py                            12      7      2      1    43%
doozerlib/_version.py                             2      2      0      0     0%
doozerlib/assembly.py                           158     20     87     11    84%
doozerlib/assembly_inspector.py                 220    158    128      8    24%
doozerlib/assertion.py                           13      0      6      0   100%
doozerlib/brew.py                               366    206    152      4    40%
doozerlib/build_status_detector.py               85     10     54      3    86%
doozerlib/cli/__init__.py                       122     64     28      0    39%
doozerlib/cli/__main__.py                      1200   1200    474      0     0%
doozerlib/cli/cli_opts.py                        20      3      8      0    89%
doozerlib/cli/config_plashet.py                 535    535    246      0     0%
doozerlib/cli/config_tag_rpms.py                141     20     77     15    82%
doozerlib/cli/detect_embargo.py                 167     35     70      8    75%
doozerlib/cli/get_nightlies.py                  230     59    127      3    71%
doozerlib/cli/images_health.py                   82     30     26      2    59%
doozerlib/cli/images_streams.py                 687    687    296      0     0%
doozerlib/cli/inspect_stream.py                  66     66     28      0     0%
doozerlib/cli/release_calc_upgrade_tests.py      24     24      6      0     0%
doozerlib/cli/release_gen_assembly.py           277    146    118      3    42%
doozerlib/cli/release_gen_payload.py            703    260    300     20    58%
doozerlib/cli/rpms_build.py                     165     59     58      8    57%
doozerlib/cli/scan_sources.py                   182    141    100      2    17%
doozerlib/comment_on_pr.py                       46      0      8      0   100%
doozerlib/config.py                              97     97     44      0     0%
doozerlib/constants.py                           11      0      0      0   100%
doozerlib/coverity.py                           255    225     82      0     9%
doozerlib/dblib.py                              263    160     68      4    35%
doozerlib/distgit.py                           1453    902    690     39    35%
doozerlib/dotconfig.py                           54     43     31      0    13%
doozerlib/exceptions.py                           2      0      0      0   100%
doozerlib/exectools.py                          197    105     76     10    43%
doozerlib/gitdata.py                            171    137     76      0    14%
doozerlib/image.py                              505    300    214     12    35%
doozerlib/logutil.py                              9      0      2      1    91%
doozerlib/metadata.py                           432    151    184     30    61%
doozerlib/model.py                              113     21     36      2    82%
doozerlib/olm/__init__.py                         0      0      0      0   100%
doozerlib/olm/bundle.py                         315    230     72      0    22%
doozerlib/osbs2_builder.py                      119     30     44     19    67%
doozerlib/plashet.py                            134      9     90     15    89%
doozerlib/pushd.py                               22      0      2      0   100%
doozerlib/release_schedule.py                    28     17      8      0    31%
doozerlib/repos.py                              255     95    123     18    56%
doozerlib/rhcos.py                              237     25     90     14    87%
doozerlib/rpm_builder.py                        232     32    123     32    80%
doozerlib/rpm_delivery.py                        16      1      0      0    94%
doozerlib/rpm_utils.py                          134     23     90     14    81%
doozerlib/rpmcfg.py                             151     61     64      8    55%
doozerlib/runtime.py                            952    694    378      8    21%
doozerlib/source_modifications.py               116     33     26      4    68%
doozerlib/state.py                               23     12      8      0    35%
doozerlib/util.py                               452    217    180     13    48%
-------------------------------------------------------------------------------
TOTAL                                         12251   7352   5200    331    37%
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)

arch_rpms[arch].append(rpm_entry)

self.logger.info(f'Checking whether any of the installed rpms {len(arch_rpms)} is outdated')
loop = asyncio.new_event_loop()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

calling asyncio.new_event_loop() within a synchronous function has shown to be problematic in the past. I think we should make does_image_need_change async, and with it config_scan_source_changes that calls it. We might even replace current runtime.parallel_exec with a cleaner asyncio.gather if feasible, but since we're quering koji API this might make the process slower. It might even be a nice chance to look into how to wrap those synchronous API and make them async

@@ -1077,6 +973,6 @@ async def find_non_latest_rpms(self) -> Dict[str, List[Tuple[str, str, str]]]:
for arch in arches:
iar = self.get_image_archive_inspector(arch)
assert iar is not None
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We might use an error message in case the assertion fails that explains what is causing it and how it could be addressed

@openshift-bot
Copy link

Build #4

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/setup.py
py38 inst-nodeps: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev15+gb032a69.zip
py38 installed: aiofiles==23.1.0,aiohttp==3.8.4,aiosignal==1.3.1,astroid==2.15.5,async-timeout==4.0.2,attrs==23.1.0,autopep8==2.0.2,bashlex==0.18,bcrypt==4.0.1,cachetools==5.3.1,certifi==2023.5.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==3.1.0,click==8.1.3,colorama==0.4.6,coverage==7.2.7,cryptography==41.0.1,decorator==5.1.1,defusedxml==0.7.1,Deprecated==1.2.14,dill==0.3.6,distlib==0.3.6,dockerfile-parse==2.0.0,exceptiongroup==1.1.1,fastcore==1.5.29,filelock==3.12.2,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,ghapi==1.0.4,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.12.0,jira==3.4.1,koji==1.33.0,krb5==0.5.0,lazy-object-proxy==1.9.0,mccabe==0.7.0,multidict==6.0.4,mysql-connector-python==8.0.33,oauthlib==3.2.2,openshift-client==1.0.18,packaging==23.1,paramiko==3.2.0,platformdirs==3.6.0,pluggy==1.0.0,protobuf==3.20.3,pycodestyle==2.10.0,pycparser==2.21,pydantic==1.10.9,pyflakes==3.0.1,pygit2==1.10.1,PyGithub==1.58.2,PyJWT==2.7.0,pylint==2.17.4,PyNaCl==1.5.0,pyproject-api==1.5.2,pyspnego==0.9.1,pytest==7.3.2,python-dateutil==2.8.2,PyYAML==6.0,requests==2.31.0,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==1.0.0,rh-doozer @ file:///mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev15%2Bgb032a69.zip,semver==3.0.1,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.2.2,tomli==2.0.1,tomlkit==0.11.8,tox==4.6.3,typing==3.7.4.3,typing-extensions==4.6.3,urllib3==2.0.3,virtualenv==20.23.1,wrapt==1.15.0,yarl==1.9.2
py38 run-test-pre: PYTHONHASHSEED='2008771044'
py38 run-test: commands[0] | coverage run --branch --source doozerlib -m unittest discover -t . -s tests/
................................................................................................................................................s.s....................................s.s...s.s..s..s.s.s...................................................................................
----------------------------------------------------------------------
Ran 275 tests in 2.301s

OK (skipped=10)
py38 run-test: commands[1] | flake8
py38 run-test: commands[2] | coverage report
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
doozerlib/__init__.py                            12      7      2      1    43%
doozerlib/_version.py                             2      2      0      0     0%
doozerlib/assembly.py                           158     20     87     11    84%
doozerlib/assembly_inspector.py                 220    158    128      8    24%
doozerlib/assertion.py                           13      0      6      0   100%
doozerlib/brew.py                               366    206    152      4    40%
doozerlib/build_status_detector.py               85     10     54      3    86%
doozerlib/cli/__init__.py                       122     64     28      0    39%
doozerlib/cli/__main__.py                      1200   1200    474      0     0%
doozerlib/cli/cli_opts.py                        20      3      8      0    89%
doozerlib/cli/config_plashet.py                 535    535    246      0     0%
doozerlib/cli/config_tag_rpms.py                141     20     77     15    82%
doozerlib/cli/detect_embargo.py                 167     35     70      8    75%
doozerlib/cli/get_nightlies.py                  230     59    127      3    71%
doozerlib/cli/images_health.py                   82     30     26      2    59%
doozerlib/cli/images_streams.py                 687    687    296      0     0%
doozerlib/cli/inspect_stream.py                  66     66     28      0     0%
doozerlib/cli/release_calc_upgrade_tests.py      24     24      6      0     0%
doozerlib/cli/release_gen_assembly.py           277    146    118      3    42%
doozerlib/cli/release_gen_payload.py            703    260    300     20    58%
doozerlib/cli/rpms_build.py                     165     59     58      8    57%
doozerlib/cli/scan_sources.py                   182    141    100      2    17%
doozerlib/comment_on_pr.py                       46      0      8      0   100%
doozerlib/config.py                              97     97     44      0     0%
doozerlib/constants.py                           11      0      0      0   100%
doozerlib/coverity.py                           255    225     82      0     9%
doozerlib/dblib.py                              263    160     68      4    35%
doozerlib/distgit.py                           1453    902    690     39    35%
doozerlib/dotconfig.py                           54     43     31      0    13%
doozerlib/exceptions.py                           2      0      0      0   100%
doozerlib/exectools.py                          197    105     76     10    43%
doozerlib/gitdata.py                            171    137     76      0    14%
doozerlib/image.py                              505    300    214     12    35%
doozerlib/logutil.py                              9      0      2      1    91%
doozerlib/metadata.py                           432    151    184     30    61%
doozerlib/model.py                              113     21     36      2    82%
doozerlib/olm/__init__.py                         0      0      0      0   100%
doozerlib/olm/bundle.py                         315    230     72      0    22%
doozerlib/osbs2_builder.py                      119     30     44     19    67%
doozerlib/plashet.py                            134      9     90     15    89%
doozerlib/pushd.py                               22      0      2      0   100%
doozerlib/release_schedule.py                    28     17      8      0    31%
doozerlib/repos.py                              255     95    123     18    56%
doozerlib/rhcos.py                              248     26     96     15    88%
doozerlib/rpm_builder.py                        232     32    123     32    80%
doozerlib/rpm_delivery.py                        16      1      0      0    94%
doozerlib/rpm_utils.py                          134     23     90     14    81%
doozerlib/rpmcfg.py                             151     61     64      8    55%
doozerlib/runtime.py                            952    694    378      8    21%
doozerlib/source_modifications.py               116     33     26      4    68%
doozerlib/state.py                               23     12      8      0    35%
doozerlib/util.py                               452    217    180     13    48%
-------------------------------------------------------------------------------
TOTAL                                         12262   7353   5206    332    37%
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)

@openshift-bot
Copy link

Build #5

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/setup.py
py38 inst-nodeps: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev17+g4c2ebf4.zip
py38 installed: aiofiles==23.1.0,aiohttp==3.8.4,aiosignal==1.3.1,astroid==2.15.5,async-timeout==4.0.2,attrs==23.1.0,autopep8==2.0.2,bashlex==0.18,bcrypt==4.0.1,cachetools==5.3.1,certifi==2023.5.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==3.1.0,click==8.1.3,colorama==0.4.6,coverage==7.2.7,cryptography==41.0.1,decorator==5.1.1,defusedxml==0.7.1,Deprecated==1.2.14,dill==0.3.6,distlib==0.3.6,dockerfile-parse==2.0.0,exceptiongroup==1.1.1,fastcore==1.5.29,filelock==3.12.2,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,ghapi==1.0.4,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.12.0,jira==3.4.1,koji==1.33.0,krb5==0.5.0,lazy-object-proxy==1.9.0,mccabe==0.7.0,multidict==6.0.4,mysql-connector-python==8.0.33,oauthlib==3.2.2,openshift-client==1.0.18,packaging==23.1,paramiko==3.2.0,platformdirs==3.6.0,pluggy==1.0.0,protobuf==3.20.3,pycodestyle==2.10.0,pycparser==2.21,pydantic==1.10.9,pyflakes==3.0.1,pygit2==1.10.1,PyGithub==1.58.2,PyJWT==2.7.0,pylint==2.17.4,PyNaCl==1.5.0,pyproject-api==1.5.2,pyspnego==0.9.1,pytest==7.3.2,python-dateutil==2.8.2,PyYAML==6.0,requests==2.31.0,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==1.0.0,rh-doozer @ file:///mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev17%2Bg4c2ebf4.zip,semver==3.0.1,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.2.2,tomli==2.0.1,tomlkit==0.11.8,tox==4.6.3,typing==3.7.4.3,typing-extensions==4.6.3,urllib3==2.0.3,virtualenv==20.23.1,wrapt==1.15.0,yarl==1.9.2
py38 run-test-pre: PYTHONHASHSEED='253072285'
py38 run-test: commands[0] | coverage run --branch --source doozerlib -m unittest discover -t . -s tests/
................................................................................................................................................s.s.......E............................s.s...s.s..s..s.s.s...................................................................................
======================================================================
ERROR: test_push (tests.test_distgit.test_image_distgit.test_image_distgit.TestImageDistGit)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib64/python3.8/unittest/async_case.py", line 65, in _callTestMethod
    self._callMaybeAsync(method)
  File "/usr/lib64/python3.8/unittest/async_case.py", line 84, in _callMaybeAsync
    ret = func(*args, **kwargs)
  File "/mnt/workspace/jenkins/working/art-tools_doozer_PR-783/tests/test_distgit/test_image_distgit/test_image_distgit.py", line 195, in test_push
    actual = distgit.ImageDistGitRepo(metadata, autoclone=False).push()
  File "/mnt/workspace/jenkins/working/art-tools_doozer_PR-783/doozerlib/distgit.py", line 378, in push
    major, _ = self.runtime.get_major_minor_fields()
AttributeError: 'MockClass' object has no attribute 'get_major_minor_fields'

----------------------------------------------------------------------
Ran 275 tests in 2.342s

FAILED (errors=1, skipped=10)
ERROR: InvocationError for command /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/py38/bin/coverage run --branch --source doozerlib -m unittest discover -t . -s tests/ (exited with code 1)
___________________________________ summary ____________________________________
ERROR:   py38: commands failed

@openshift-bot
Copy link

Build #6

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/setup.py
py38 inst-nodeps: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev20+g0388f83.zip
py38 installed: aiofiles==23.1.0,aiohttp==3.8.4,aiosignal==1.3.1,astroid==2.15.5,async-timeout==4.0.2,attrs==23.1.0,autopep8==2.0.2,bashlex==0.18,bcrypt==4.0.1,cachetools==5.3.1,certifi==2023.5.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==3.1.0,click==8.1.3,colorama==0.4.6,coverage==7.2.7,cryptography==41.0.1,decorator==5.1.1,defusedxml==0.7.1,Deprecated==1.2.14,dill==0.3.6,distlib==0.3.6,dockerfile-parse==2.0.0,exceptiongroup==1.1.1,fastcore==1.5.29,filelock==3.12.2,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,ghapi==1.0.4,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.12.0,jira==3.4.1,koji==1.33.0,krb5==0.5.0,lazy-object-proxy==1.9.0,mccabe==0.7.0,multidict==6.0.4,mysql-connector-python==8.0.33,oauthlib==3.2.2,openshift-client==1.0.18,packaging==23.1,paramiko==3.2.0,platformdirs==3.6.0,pluggy==1.0.0,protobuf==3.20.3,pycodestyle==2.10.0,pycparser==2.21,pydantic==1.10.9,pyflakes==3.0.1,pygit2==1.10.1,PyGithub==1.58.2,PyJWT==2.7.0,pylint==2.17.4,PyNaCl==1.5.0,pyproject-api==1.5.2,pyspnego==0.9.1,pytest==7.3.2,python-dateutil==2.8.2,PyYAML==6.0,requests==2.31.0,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==1.0.0,rh-doozer @ file:///mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev20%2Bg0388f83.zip,semver==3.0.1,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.2.2,tomli==2.0.1,tomlkit==0.11.8,tox==4.6.3,typing==3.7.4.3,typing-extensions==4.6.3,urllib3==2.0.3,virtualenv==20.23.1,wrapt==1.15.0,yarl==1.9.2
py38 run-test-pre: PYTHONHASHSEED='3816729856'
py38 run-test: commands[0] | coverage run --branch --source doozerlib -m unittest discover -t . -s tests/
................................................................................................................................................s.s....................................s.s...s.s..s..s.s.s...................................................................................
----------------------------------------------------------------------
Ran 275 tests in 2.438s

OK (skipped=10)
py38 run-test: commands[1] | flake8
py38 run-test: commands[2] | coverage report
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
doozerlib/__init__.py                            12      7      2      1    43%
doozerlib/_version.py                             2      2      0      0     0%
doozerlib/assembly.py                           158     20     87     11    84%
doozerlib/assembly_inspector.py                 220    158    128      8    24%
doozerlib/assertion.py                           13      0      6      0   100%
doozerlib/brew.py                               366    206    152      4    40%
doozerlib/build_status_detector.py               85     10     54      3    86%
doozerlib/cli/__init__.py                       122     64     28      0    39%
doozerlib/cli/__main__.py                      1200   1200    474      0     0%
doozerlib/cli/cli_opts.py                        20      3      8      0    89%
doozerlib/cli/config_plashet.py                 535    535    246      0     0%
doozerlib/cli/config_tag_rpms.py                141     20     77     15    82%
doozerlib/cli/detect_embargo.py                 167     35     70      8    75%
doozerlib/cli/get_nightlies.py                  230     59    127      3    71%
doozerlib/cli/images_health.py                   82     30     26      2    59%
doozerlib/cli/images_streams.py                 687    687    296      0     0%
doozerlib/cli/inspect_stream.py                  66     66     28      0     0%
doozerlib/cli/release_calc_upgrade_tests.py      24     24      6      0     0%
doozerlib/cli/release_gen_assembly.py           277    146    118      3    42%
doozerlib/cli/release_gen_payload.py            703    260    300     20    58%
doozerlib/cli/rpms_build.py                     165     59     58      8    57%
doozerlib/cli/scan_sources.py                   182    141    100      2    17%
doozerlib/comment_on_pr.py                       46      0      8      0   100%
doozerlib/config.py                              97     97     44      0     0%
doozerlib/constants.py                           11      0      0      0   100%
doozerlib/coverity.py                           255    225     82      0     9%
doozerlib/dblib.py                              263    160     68      4    35%
doozerlib/distgit.py                           1456    903    692     40    36%
doozerlib/dotconfig.py                           54     43     31      0    13%
doozerlib/exceptions.py                           2      0      0      0   100%
doozerlib/exectools.py                          197    105     76     10    43%
doozerlib/gitdata.py                            171    137     76      0    14%
doozerlib/image.py                              505    300    214     12    35%
doozerlib/logutil.py                              9      0      2      1    91%
doozerlib/metadata.py                           432    151    184     30    61%
doozerlib/model.py                              113     21     36      2    82%
doozerlib/olm/__init__.py                         0      0      0      0   100%
doozerlib/olm/bundle.py                         315    230     72      0    22%
doozerlib/osbs2_builder.py                      119     30     44     19    67%
doozerlib/plashet.py                            134      9     90     15    89%
doozerlib/pushd.py                               22      0      2      0   100%
doozerlib/release_schedule.py                    28     17      8      0    31%
doozerlib/repos.py                              255     95    123     18    56%
doozerlib/rhcos.py                              248     26     96     15    88%
doozerlib/rpm_builder.py                        232     32    123     32    80%
doozerlib/rpm_delivery.py                        16      1      0      0    94%
doozerlib/rpm_utils.py                          134     23     90     14    81%
doozerlib/rpmcfg.py                             151     61     64      8    55%
doozerlib/runtime.py                            952    694    378      8    21%
doozerlib/source_modifications.py               116     33     26      4    68%
doozerlib/state.py                               23     12      8      0    35%
doozerlib/util.py                               452    217    180     13    48%
-------------------------------------------------------------------------------
TOTAL                                         12265   7354   5208    333    37%
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)

@openshift-bot
Copy link

Build #7

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/setup.py
py38 inst-nodeps: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev21+g5c27aec.zip
py38 installed: aiofiles==23.1.0,aiohttp==3.8.4,aiosignal==1.3.1,astroid==2.15.5,async-timeout==4.0.2,attrs==23.1.0,autopep8==2.0.2,bashlex==0.18,bcrypt==4.0.1,cachetools==5.3.1,certifi==2023.5.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==3.1.0,click==8.1.3,colorama==0.4.6,coverage==7.2.7,cryptography==41.0.1,decorator==5.1.1,defusedxml==0.7.1,Deprecated==1.2.14,dill==0.3.6,distlib==0.3.6,dockerfile-parse==2.0.0,exceptiongroup==1.1.1,fastcore==1.5.29,filelock==3.12.2,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,ghapi==1.0.4,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.12.0,jira==3.4.1,koji==1.33.0,krb5==0.5.0,lazy-object-proxy==1.9.0,mccabe==0.7.0,multidict==6.0.4,mysql-connector-python==8.0.33,oauthlib==3.2.2,openshift-client==1.0.18,packaging==23.1,paramiko==3.2.0,platformdirs==3.6.0,pluggy==1.0.0,protobuf==3.20.3,pycodestyle==2.10.0,pycparser==2.21,pydantic==1.10.9,pyflakes==3.0.1,pygit2==1.10.1,PyGithub==1.58.2,PyJWT==2.7.0,pylint==2.17.4,PyNaCl==1.5.0,pyproject-api==1.5.2,pyspnego==0.9.1,pytest==7.3.2,python-dateutil==2.8.2,PyYAML==6.0,requests==2.31.0,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==1.0.0,rh-doozer @ file:///mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev21%2Bg5c27aec.zip,semver==3.0.1,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.2.2,tomli==2.0.1,tomlkit==0.11.8,tox==4.6.3,typing==3.7.4.3,typing-extensions==4.6.3,urllib3==2.0.3,virtualenv==20.23.1,wrapt==1.15.0,yarl==1.9.2
py38 run-test-pre: PYTHONHASHSEED='590209146'
py38 run-test: commands[0] | coverage run --branch --source doozerlib -m unittest discover -t . -s tests/
................................................................................................................................................s.s....................................s.s...s.s..s..s.s.s...................................................................................
----------------------------------------------------------------------
Ran 275 tests in 2.840s

OK (skipped=10)
py38 run-test: commands[1] | flake8
py38 run-test: commands[2] | coverage report
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
doozerlib/__init__.py                            12      7      2      1    43%
doozerlib/_version.py                             2      2      0      0     0%
doozerlib/assembly.py                           158     20     87     11    84%
doozerlib/assembly_inspector.py                 220    158    128      8    24%
doozerlib/assertion.py                           13      0      6      0   100%
doozerlib/brew.py                               366    206    152      4    40%
doozerlib/build_status_detector.py               85     10     54      3    86%
doozerlib/cli/__init__.py                       122     64     28      0    39%
doozerlib/cli/__main__.py                      1200   1200    474      0     0%
doozerlib/cli/cli_opts.py                        20      3      8      0    89%
doozerlib/cli/config_plashet.py                 536    536    246      0     0%
doozerlib/cli/config_tag_rpms.py                141     20     77     15    82%
doozerlib/cli/detect_embargo.py                 167     35     70      8    75%
doozerlib/cli/get_nightlies.py                  230     59    127      3    71%
doozerlib/cli/images_health.py                   82     30     26      2    59%
doozerlib/cli/images_streams.py                 687    687    296      0     0%
doozerlib/cli/inspect_stream.py                  66     66     28      0     0%
doozerlib/cli/release_calc_upgrade_tests.py      24     24      6      0     0%
doozerlib/cli/release_gen_assembly.py           277    146    118      3    42%
doozerlib/cli/release_gen_payload.py            703    260    300     20    58%
doozerlib/cli/rpms_build.py                     165     59     58      8    57%
doozerlib/cli/scan_sources.py                   182    141    100      2    17%
doozerlib/comment_on_pr.py                       46      0      8      0   100%
doozerlib/config.py                              97     97     44      0     0%
doozerlib/constants.py                           11      0      0      0   100%
doozerlib/coverity.py                           255    225     82      0     9%
doozerlib/dblib.py                              263    160     68      4    35%
doozerlib/distgit.py                           1456    903    692     40    36%
doozerlib/dotconfig.py                           54     43     31      0    13%
doozerlib/exceptions.py                           2      0      0      0   100%
doozerlib/exectools.py                          197    105     76     10    43%
doozerlib/gitdata.py                            171    137     76      0    14%
doozerlib/image.py                              505    300    214     12    35%
doozerlib/logutil.py                              9      0      2      1    91%
doozerlib/metadata.py                           432    151    184     30    61%
doozerlib/model.py                              113     21     36      2    82%
doozerlib/olm/__init__.py                         0      0      0      0   100%
doozerlib/olm/bundle.py                         315    230     72      0    22%
doozerlib/osbs2_builder.py                      119     30     44     19    67%
doozerlib/plashet.py                            134      9     90     15    89%
doozerlib/pushd.py                               22      0      2      0   100%
doozerlib/release_schedule.py                    28     17      8      0    31%
doozerlib/repos.py                              255     95    123     18    56%
doozerlib/rhcos.py                              248     26     96     15    88%
doozerlib/rpm_builder.py                        232     32    123     32    80%
doozerlib/rpm_delivery.py                        16      1      0      0    94%
doozerlib/rpm_utils.py                          134     23     90     14    81%
doozerlib/rpmcfg.py                             151     61     64      8    55%
doozerlib/runtime.py                            952    694    378      8    21%
doozerlib/source_modifications.py               116     33     26      4    68%
doozerlib/state.py                               23     12      8      0    35%
doozerlib/util.py                               452    217    180     13    48%
-------------------------------------------------------------------------------
TOTAL                                         12266   7355   5208    333    37%
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)

@openshift-bot
Copy link

Build #8

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/setup.py
py38 inst-nodeps: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev23+gb9ea64d.zip
py38 installed: aiofiles==23.1.0,aiohttp==3.8.4,aiosignal==1.3.1,astroid==2.15.5,async-timeout==4.0.2,attrs==23.1.0,autopep8==2.0.2,bashlex==0.18,bcrypt==4.0.1,cachetools==5.3.1,certifi==2023.5.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==3.1.0,click==8.1.3,colorama==0.4.6,coverage==7.2.7,cryptography==41.0.1,decorator==5.1.1,defusedxml==0.7.1,Deprecated==1.2.14,dill==0.3.6,distlib==0.3.6,dockerfile-parse==2.0.0,exceptiongroup==1.1.1,fastcore==1.5.29,filelock==3.12.2,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,ghapi==1.0.4,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.12.0,jira==3.4.1,koji==1.33.0,krb5==0.5.0,lazy-object-proxy==1.9.0,mccabe==0.7.0,multidict==6.0.4,mysql-connector-python==8.0.33,oauthlib==3.2.2,openshift-client==1.0.18,packaging==23.1,paramiko==3.2.0,platformdirs==3.6.0,pluggy==1.0.0,protobuf==3.20.3,pycodestyle==2.10.0,pycparser==2.21,pydantic==1.10.9,pyflakes==3.0.1,pygit2==1.10.1,PyGithub==1.58.2,PyJWT==2.7.0,pylint==2.17.4,PyNaCl==1.5.0,pyproject-api==1.5.2,pyspnego==0.9.1,pytest==7.3.2,python-dateutil==2.8.2,PyYAML==6.0,requests==2.31.0,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==1.0.0,rh-doozer @ file:///mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev23%2Bgb9ea64d.zip,semver==3.0.1,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.2.2,tomli==2.0.1,tomlkit==0.11.8,tox==4.6.3,typing==3.7.4.3,typing-extensions==4.6.3,urllib3==2.0.3,virtualenv==20.23.1,wrapt==1.15.0,yarl==1.9.2
py38 run-test-pre: PYTHONHASHSEED='1023644105'
py38 run-test: commands[0] | coverage run --branch --source doozerlib -m unittest discover -t . -s tests/
................................................................................................................................................s.s....................................s.s...s.s..s..s.s.s...................................................................................
----------------------------------------------------------------------
Ran 275 tests in 2.209s

OK (skipped=10)
py38 run-test: commands[1] | flake8
py38 run-test: commands[2] | coverage report
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
doozerlib/__init__.py                            12      7      2      1    43%
doozerlib/_version.py                             2      2      0      0     0%
doozerlib/assembly.py                           158     20     87     11    84%
doozerlib/assembly_inspector.py                 220    158    128      8    24%
doozerlib/assertion.py                           13      0      6      0   100%
doozerlib/brew.py                               366    206    152      4    40%
doozerlib/build_status_detector.py               85     10     54      3    86%
doozerlib/cli/__init__.py                       122     64     28      0    39%
doozerlib/cli/__main__.py                      1200   1200    474      0     0%
doozerlib/cli/cli_opts.py                        20      3      8      0    89%
doozerlib/cli/config_plashet.py                 536    536    246      0     0%
doozerlib/cli/config_tag_rpms.py                141     20     77     15    82%
doozerlib/cli/detect_embargo.py                 167     35     70      8    75%
doozerlib/cli/get_nightlies.py                  230     59    127      3    71%
doozerlib/cli/images_health.py                   82     30     26      2    59%
doozerlib/cli/images_streams.py                 687    687    296      0     0%
doozerlib/cli/inspect_stream.py                  66     66     28      0     0%
doozerlib/cli/release_calc_upgrade_tests.py      24     24      6      0     0%
doozerlib/cli/release_gen_assembly.py           277    146    118      3    42%
doozerlib/cli/release_gen_payload.py            703    260    300     20    58%
doozerlib/cli/rpms_build.py                     165     59     58      8    57%
doozerlib/cli/scan_sources.py                   182    141    100      2    17%
doozerlib/comment_on_pr.py                       46      0      8      0   100%
doozerlib/config.py                              97     97     44      0     0%
doozerlib/constants.py                           12      0      0      0   100%
doozerlib/coverity.py                           255    225     82      0     9%
doozerlib/dblib.py                              263    160     68      4    35%
doozerlib/distgit.py                           1456    903    692     40    36%
doozerlib/dotconfig.py                           54     43     31      0    13%
doozerlib/exceptions.py                           2      0      0      0   100%
doozerlib/exectools.py                          197    105     76     10    43%
doozerlib/gitdata.py                            171    137     76      0    14%
doozerlib/image.py                              505    300    214     12    35%
doozerlib/logutil.py                              9      0      2      1    91%
doozerlib/metadata.py                           432    151    184     30    61%
doozerlib/model.py                              113     21     36      2    82%
doozerlib/olm/__init__.py                         0      0      0      0   100%
doozerlib/olm/bundle.py                         315    230     72      0    22%
doozerlib/osbs2_builder.py                      119     30     44     19    67%
doozerlib/plashet.py                            134      9     90     15    89%
doozerlib/pushd.py                               22      0      2      0   100%
doozerlib/release_schedule.py                    28     17      8      0    31%
doozerlib/repos.py                              255     95    123     18    56%
doozerlib/rhcos.py                              248     26     96     15    88%
doozerlib/rpm_builder.py                        232     32    123     32    80%
doozerlib/rpm_delivery.py                        16      1      0      0    94%
doozerlib/rpm_utils.py                          134     23     90     14    81%
doozerlib/rpmcfg.py                             151     61     64      8    55%
doozerlib/runtime.py                            952    694    378      8    21%
doozerlib/source_modifications.py               116     33     26      4    68%
doozerlib/state.py                               23     12      8      0    35%
doozerlib/util.py                               452    217    180     13    48%
-------------------------------------------------------------------------------
TOTAL                                         12267   7355   5208    333    37%
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)

@openshift-bot
Copy link

Build #9

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/setup.py
py38 inst-nodeps: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev25+g83395aa.zip
py38 installed: aiofiles==23.1.0,aiohttp==3.8.4,aiosignal==1.3.1,astroid==2.15.5,async-timeout==4.0.2,attrs==23.1.0,autopep8==2.0.2,bashlex==0.18,bcrypt==4.0.1,cachetools==5.3.1,certifi==2023.5.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==3.1.0,click==8.1.3,colorama==0.4.6,coverage==7.2.7,cryptography==41.0.1,decorator==5.1.1,defusedxml==0.7.1,Deprecated==1.2.14,dill==0.3.6,distlib==0.3.6,dockerfile-parse==2.0.0,exceptiongroup==1.1.1,fastcore==1.5.29,filelock==3.12.2,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,ghapi==1.0.4,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.12.0,jira==3.4.1,koji==1.33.0,krb5==0.5.0,lazy-object-proxy==1.9.0,mccabe==0.7.0,multidict==6.0.4,mysql-connector-python==8.0.33,oauthlib==3.2.2,openshift-client==1.0.18,packaging==23.1,paramiko==3.2.0,platformdirs==3.6.0,pluggy==1.0.0,protobuf==3.20.3,pycodestyle==2.10.0,pycparser==2.21,pydantic==1.10.9,pyflakes==3.0.1,pygit2==1.10.1,PyGithub==1.58.2,PyJWT==2.7.0,pylint==2.17.4,PyNaCl==1.5.0,pyproject-api==1.5.2,pyspnego==0.9.1,pytest==7.3.2,python-dateutil==2.8.2,PyYAML==6.0,requests==2.31.0,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==1.0.0,rh-doozer @ file:///mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev25%2Bg83395aa.zip,semver==3.0.1,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.2.2,tomli==2.0.1,tomlkit==0.11.8,tox==4.6.3,typing==3.7.4.3,typing-extensions==4.6.3,urllib3==2.0.3,virtualenv==20.23.1,wrapt==1.15.0,yarl==1.9.2
py38 run-test-pre: PYTHONHASHSEED='2126077176'
py38 run-test: commands[0] | coverage run --branch --source doozerlib -m unittest discover -t . -s tests/
................................................................................................................................................s.s....................................s.s...s.s..s..s.s.s...................................................................................
----------------------------------------------------------------------
Ran 275 tests in 2.294s

OK (skipped=10)
py38 run-test: commands[1] | flake8
py38 run-test: commands[2] | coverage report
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
doozerlib/__init__.py                            12      7      2      1    43%
doozerlib/_version.py                             2      2      0      0     0%
doozerlib/assembly.py                           158     20     87     11    84%
doozerlib/assembly_inspector.py                 220    158    128      8    24%
doozerlib/assertion.py                           13      0      6      0   100%
doozerlib/brew.py                               366    206    152      4    40%
doozerlib/build_status_detector.py               85     10     54      3    86%
doozerlib/cli/__init__.py                       122     64     28      0    39%
doozerlib/cli/__main__.py                      1200   1200    474      0     0%
doozerlib/cli/cli_opts.py                        20      3      8      0    89%
doozerlib/cli/config_plashet.py                 536    536    246      0     0%
doozerlib/cli/config_tag_rpms.py                141     20     77     15    82%
doozerlib/cli/detect_embargo.py                 167     35     70      8    75%
doozerlib/cli/get_nightlies.py                  230     59    127      3    71%
doozerlib/cli/images_health.py                   82     30     26      2    59%
doozerlib/cli/images_streams.py                 687    687    296      0     0%
doozerlib/cli/inspect_stream.py                  66     66     28      0     0%
doozerlib/cli/release_calc_upgrade_tests.py      24     24      6      0     0%
doozerlib/cli/release_gen_assembly.py           277    146    118      3    42%
doozerlib/cli/release_gen_payload.py            703    260    300     20    58%
doozerlib/cli/rpms_build.py                     165     59     58      8    57%
doozerlib/cli/scan_sources.py                   182    141    100      2    17%
doozerlib/comment_on_pr.py                       46      0      8      0   100%
doozerlib/config.py                              97     97     44      0     0%
doozerlib/constants.py                           12      0      0      0   100%
doozerlib/coverity.py                           255    225     82      0     9%
doozerlib/dblib.py                              263    160     68      4    35%
doozerlib/distgit.py                           1456    903    692     40    36%
doozerlib/dotconfig.py                           54     43     31      0    13%
doozerlib/exceptions.py                           2      0      0      0   100%
doozerlib/exectools.py                          197    105     76     10    43%
doozerlib/gitdata.py                            171    137     76      0    14%
doozerlib/image.py                              505    300    214     12    35%
doozerlib/logutil.py                              9      0      2      1    91%
doozerlib/metadata.py                           432    151    184     30    61%
doozerlib/model.py                              113     21     36      2    82%
doozerlib/olm/__init__.py                         0      0      0      0   100%
doozerlib/olm/bundle.py                         315    230     72      0    22%
doozerlib/osbs2_builder.py                      119     30     44     19    67%
doozerlib/plashet.py                            134      9     90     15    89%
doozerlib/pushd.py                               22      0      2      0   100%
doozerlib/release_schedule.py                    28     17      8      0    31%
doozerlib/repos.py                              255     95    123     18    56%
doozerlib/rhcos.py                              248     26     96     15    88%
doozerlib/rpm_builder.py                        232     32    123     32    80%
doozerlib/rpm_delivery.py                        16      1      0      0    94%
doozerlib/rpm_utils.py                          134     23     90     14    81%
doozerlib/rpmcfg.py                             151     61     64      8    55%
doozerlib/runtime.py                            952    694    378      8    21%
doozerlib/source_modifications.py               116     33     26      4    68%
doozerlib/state.py                               23     12      8      0    35%
doozerlib/util.py                               452    217    180     13    48%
-------------------------------------------------------------------------------
TOTAL                                         12267   7355   5208    333    37%
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)

@openshift-bot
Copy link

Build #10

GLOB sdist-make: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/setup.py
py38 inst-nodeps: /mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev27+gbf56b25.zip
py38 installed: aiofiles==23.1.0,aiohttp==3.8.4,aiosignal==1.3.1,astroid==2.15.5,async-timeout==4.0.2,attrs==23.1.0,autopep8==2.0.2,bashlex==0.18,bcrypt==4.0.1,cachetools==5.3.1,certifi==2023.5.7,cffi==1.15.1,chardet==5.1.0,charset-normalizer==3.1.0,click==8.1.3,colorama==0.4.6,coverage==7.2.7,cryptography==41.0.1,decorator==5.1.1,defusedxml==0.7.1,Deprecated==1.2.14,dill==0.3.6,distlib==0.3.6,dockerfile-parse==2.0.0,exceptiongroup==1.1.1,fastcore==1.5.29,filelock==3.12.2,flake8==6.0.0,flexmock==0.11.3,frozenlist==1.3.3,future==0.18.3,ghapi==1.0.4,gssapi==1.8.2,idna==3.4,iniconfig==2.0.0,isort==5.12.0,jira==3.4.1,koji==1.33.0,krb5==0.5.0,lazy-object-proxy==1.9.0,mccabe==0.7.0,multidict==6.0.4,mysql-connector-python==8.0.33,oauthlib==3.2.2,openshift-client==1.0.18,packaging==23.1,paramiko==3.2.0,platformdirs==3.6.0,pluggy==1.0.0,protobuf==3.20.3,pycodestyle==2.10.0,pycparser==2.21,pydantic==1.10.9,pyflakes==3.0.1,pygit2==1.10.1,PyGithub==1.58.2,PyJWT==2.7.0,pylint==2.17.4,PyNaCl==1.5.0,pyproject-api==1.5.2,pyspnego==0.9.1,pytest==7.3.2,python-dateutil==2.8.2,PyYAML==6.0,requests==2.31.0,requests-gssapi==1.2.3,requests-kerberos==0.14.0,requests-oauthlib==1.3.1,requests-toolbelt==1.0.0,rh-doozer @ file:///mnt/workspace/jenkins/working/art-tools_doozer_PR-783/.tox/.tmp/package/1/rh-doozer-2.1.1.dev27%2Bgbf56b25.zip,semver==3.0.1,setuptools-scm==7.1.0,six==1.16.0,tenacity==8.2.2,tomli==2.0.1,tomlkit==0.11.8,tox==4.6.3,typing==3.7.4.3,typing-extensions==4.6.3,urllib3==2.0.3,virtualenv==20.23.1,wrapt==1.15.0,yarl==1.9.2
py38 run-test-pre: PYTHONHASHSEED='1792506616'
py38 run-test: commands[0] | coverage run --branch --source doozerlib -m unittest discover -t . -s tests/
................................................................................................................................................s.s....................................s.s...s.s..s..s.s.s...................................................................................
----------------------------------------------------------------------
Ran 275 tests in 2.208s

OK (skipped=10)
py38 run-test: commands[1] | flake8
py38 run-test: commands[2] | coverage report
Name                                          Stmts   Miss Branch BrPart  Cover
-------------------------------------------------------------------------------
doozerlib/__init__.py                            12      7      2      1    43%
doozerlib/_version.py                             2      2      0      0     0%
doozerlib/assembly.py                           158     20     87     11    84%
doozerlib/assembly_inspector.py                 220    158    128      8    24%
doozerlib/assertion.py                           13      0      6      0   100%
doozerlib/brew.py                               366    206    152      4    40%
doozerlib/build_status_detector.py               85     10     54      3    86%
doozerlib/cli/__init__.py                       122     64     28      0    39%
doozerlib/cli/__main__.py                      1202   1202    474      0     0%
doozerlib/cli/cli_opts.py                        20      3      8      0    89%
doozerlib/cli/config_plashet.py                 536    536    246      0     0%
doozerlib/cli/config_tag_rpms.py                141     20     77     15    82%
doozerlib/cli/detect_embargo.py                 167     35     70      8    75%
doozerlib/cli/get_nightlies.py                  230     59    127      3    71%
doozerlib/cli/images_health.py                   82     30     26      2    59%
doozerlib/cli/images_streams.py                 687    687    296      0     0%
doozerlib/cli/inspect_stream.py                  66     66     28      0     0%
doozerlib/cli/release_calc_upgrade_tests.py      24     24      6      0     0%
doozerlib/cli/release_gen_assembly.py           277    146    118      3    42%
doozerlib/cli/release_gen_payload.py            703    260    300     20    58%
doozerlib/cli/rpms_build.py                     165     59     58      8    57%
doozerlib/cli/scan_sources.py                   182    141    100      2    17%
doozerlib/comment_on_pr.py                       46      0      8      0   100%
doozerlib/config.py                              97     97     44      0     0%
doozerlib/constants.py                           12      0      0      0   100%
doozerlib/coverity.py                           255    225     82      0     9%
doozerlib/dblib.py                              263    160     68      4    35%
doozerlib/distgit.py                           1456    903    692     40    36%
doozerlib/dotconfig.py                           54     43     31      0    13%
doozerlib/exceptions.py                           2      0      0      0   100%
doozerlib/exectools.py                          197    105     76     10    43%
doozerlib/gitdata.py                            171    137     76      0    14%
doozerlib/image.py                              505    300    214     12    35%
doozerlib/logutil.py                              9      0      2      1    91%
doozerlib/metadata.py                           432    151    184     30    61%
doozerlib/model.py                              113     21     36      2    82%
doozerlib/olm/__init__.py                         0      0      0      0   100%
doozerlib/olm/bundle.py                         315    230     72      0    22%
doozerlib/osbs2_builder.py                      119     30     44     19    67%
doozerlib/plashet.py                            134      9     90     15    89%
doozerlib/pushd.py                               22      0      2      0   100%
doozerlib/release_schedule.py                    28     17      8      0    31%
doozerlib/repos.py                              255     95    123     18    56%
doozerlib/rhcos.py                              248     26     96     15    88%
doozerlib/rpm_builder.py                        232     32    123     32    80%
doozerlib/rpm_delivery.py                        16      1      0      0    94%
doozerlib/rpm_utils.py                          134     23     90     14    81%
doozerlib/rpmcfg.py                             151     61     64      8    55%
doozerlib/runtime.py                            954    696    380      8    21%
doozerlib/source_modifications.py               116     33     26      4    68%
doozerlib/state.py                               23     12      8      0    35%
doozerlib/util.py                               452    217    180     13    48%
-------------------------------------------------------------------------------
TOTAL                                         12271   7359   5210    333    37%
___________________________________ summary ____________________________________
  py38: commands succeeded
  congratulations :)

@vfreex vfreex closed this Jul 12, 2023
@vfreex
Copy link
Contributor Author

vfreex commented Jul 12, 2023

Replaced by a new PR.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants