From 660c04368ba1abed310f121d01f0fa029eea5f11 Mon Sep 17 00:00:00 2001 From: Ondrej Nosek Date: Fri, 16 Feb 2018 13:40:54 +0100 Subject: [PATCH] Move ostree phase and pipelines for running phases Signed-off-by: Ondrej Nosek Related: https://pagure.io/pungi/issue/778 --- bin/pungi-koji | 52 +++--- doc/_static/phases.png | Bin 23285 -> 25108 bytes doc/_static/phases.svg | 353 +++++++++++++++++++++------------------ pungi/phases/__init__.py | 19 +-- pungi/phases/weaver.py | 72 ++++++++ tests/test_phase_base.py | 131 ++++++++++++--- 6 files changed, 389 insertions(+), 238 deletions(-) create mode 100644 pungi/phases/weaver.py diff --git a/bin/pungi-koji b/bin/pungi-koji index e5d31084..2a62a125 100755 --- a/bin/pungi-koji +++ b/bin/pungi-koji @@ -358,41 +358,27 @@ def run_compose(compose, create_latest_link=True, latest_link_status=None): # Store the password compose.conf["signing_key_password"] = signing_key_password - # INIT phase init_phase.start() init_phase.stop() - # PKGSET phase pkgset_phase.start() pkgset_phase.stop() - # BUILDINSTALL phase - start, we can run gathering, extra files and - # createrepo while buildinstall is in progress. - buildinstall_phase.start() - - # If any of the following three phases fail, we must ensure that - # buildinstall is stopped. Otherwise the whole process will hang. - try: - gather_phase.start() - gather_phase.stop() - - extrafiles_phase.start() - extrafiles_phase.stop() - - createrepo_phase.start() - createrepo_phase.stop() - - finally: - buildinstall_phase.stop() + # WEAVER phase - launches other phases which can safely run in parallel + essentials_schema = ( + buildinstall_phase, + (gather_phase, extrafiles_phase, createrepo_phase), + (ostree_phase, ostree_installer_phase), + ) + essentials_phase = pungi.phases.WeaverPhase(compose, essentials_schema) + essentials_phase.start() + essentials_phase.stop() if not buildinstall_phase.skip(): buildinstall_phase.copy_files() - ostree_phase.start() - ostree_phase.stop() - - pungi.phases.run_all([productimg_phase, - ostree_installer_phase]) + productimg_phase.start() + productimg_phase.stop() # write treeinfo before ISOs are created for variant in compose.get_variants(): @@ -408,11 +394,16 @@ def run_compose(compose, create_latest_link=True, latest_link_status=None): pungi.metadata.write_media_repo(compose, arch, variant, timestamp) # Start all phases for image artifacts - pungi.phases.run_all([createiso_phase, - liveimages_phase, - image_build_phase, - livemedia_phase, - osbs_phase]) + compose_images_schema = ( + createiso_phase, + liveimages_phase, + image_build_phase, + livemedia_phase, + osbs_phase, + ) + compose_images_phase = pungi.phases.WeaverPhase(compose, compose_images_schema) + compose_images_phase.start() + compose_images_phase.stop() image_checksum_phase.start() image_checksum_phase.stop() @@ -421,7 +412,6 @@ def run_compose(compose, create_latest_link=True, latest_link_status=None): compose.im.dump(compose.paths.compose.metadata("images.json")) osbs_phase.dump_metadata() - # TEST phase test_phase.start() test_phase.stop() diff --git a/doc/_static/phases.png b/doc/_static/phases.png index 28b2ac44644b2cb83e16397ad0ef6c920c40e893..a6d40383e1df3aa7dbe86ebee3811710db742c4c 100644 GIT binary patch literal 25108 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 DpC}MV literal 23285 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 diff --git a/doc/_static/phases.svg b/doc/_static/phases.svg index 072e5dd2..66184b15 100644 --- a/doc/_static/phases.svg +++ b/doc/_static/phases.svg @@ -14,7 +14,7 @@ viewBox="0 0 839.33334 220.33335" id="svg2" version="1.1" - inkscape:version="0.92+devel unknown" + inkscape:version="0.91 r13725" sodipodi:docname="phases.svg" inkscape:export-filename="/home/lsedlar/repos/pungi/doc/_static/phases.png" inkscape:export-xdpi="90" @@ -26,16 +26,16 @@ borderopacity="1.0" inkscape:pageopacity="1" inkscape:pageshadow="2" - inkscape:zoom="0.8266234" - inkscape:cx="226.63066" - inkscape:cy="201.60264" + inkscape:zoom="1.6532468" + inkscape:cx="337.4932" + inkscape:cy="70.825454" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:window-width="1920" - inkscape:window-height="1016" - inkscape:window-x="0" - inkscape:window-y="27" + inkscape:window-height="1020" + inkscape:window-x="1920" + inkscape:window-y="31" inkscape:window-maximized="1" units="px" inkscape:document-rotation="0" @@ -67,7 +67,7 @@ image/svg+xml - + @@ -100,87 +100,7 @@ style="font-size:13.14787769px;line-height:1.25">Pkgset - - Buildinstall - - Gather - - ExtraFiles - - Createrepo - - ImageChecksum Test + id="g3720"> Init + d="m 100.90864,859.8891 553.31842,0" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.17466855px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" /> + id="g241" + transform="translate(-60.108974,42.1407)"> OSTree + id="tspan3382" + x="403.15945" + y="847.65234" + style="font-size:13.14787769px;line-height:1.25">Productimg + id="g3668"> + id="g3663"> - Productimg - - - Buildinstall + + + + Gather + + + + + + ExtraFiles + + + + Createrepo + + + + OSTreeInstaller + x="256.90588" + y="840.3219">OSTree + + + + + OSTreeInstaller + + transform="translate(-60.108974,42.1407)"> @@ -343,7 +367,8 @@ y="971.54041" x="422.99252" style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - xml:space="preserve">