From bd6b7ab0b27d4167e9051a5069da47b6311b79bb Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: May 30 2024 20:07:27 +0000 Subject: Support publishing container images to registries (#4) This adds support for publishing container images to registries. It is intended to replace the sync-latest-container-base-image.sh and sync-ostree-base-containers.sh scripts we currently use for this purpose. It finds "docker" or "ociarchive" type images in the compose and matches them against a list of known "repos" (fedora-toolbox, fedora-silverblue etc.) Images that match are pushed to the registry using `skopeo copy`. Then a manifest is produced from the published images, and published itself; if the compose is a Rawhide compose, or a compose of the current stable release, a manifest is also published under an alias ("rawhide" or "latest", respectively). This initial implementation is intentionally closely based on the sync-latest-container-base-image.sh approach. The other script uses a somewhat different approach where the release numbered manifest is created from the local image files and then pushed with `--all`, which also causes the image files to be pushed, then the manifest is copied to the 'aliased' name. I think the eventual outcome is really the same in both cases, though. The container support can be activated by configuring at least one registry in the consumer config. If this is not done, container images will not be handled. As part of this, we move to trying every handler against every image in the compose, and filter out non-cloud and non-container images in the handlers themselves. This avoids having two levels of filtering and makes the code a bit cleaner. We also drop the `CantHandle` and `NotHandled` exceptions and concepts, as we've decided the model is "any number of handlers might potentially all handle a given image", so it's not really possible for an individual handler to declare that an image is "not handled" by this project at all. This means there's no need to distinguish between different cases when a handler bails early, so it can just `return` and we can drop the exception handling. We also set an environment variable that disables caching of filelists and PDC queries in fedfind (5.3.0+), as this can cause things to be left out of pyvcr cassettes. Signed-off-by: Adam Williamson --- diff --git a/Containerfile b/Containerfile index 0781fb5..c5b8fa8 100644 --- a/Containerfile +++ b/Containerfile @@ -5,7 +5,9 @@ LABEL org.opencontainers.image.authors="Fedora Cloud SIG + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=3038 + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:47 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHT2mti5Q4-osOpGWzRAAAA8I + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/compose + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2217 + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:47 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHTzuWhzpWHAjyjksnlAAABI4 + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/COMPOSE_ID + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2228 + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:47 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHT_EdkCTc_XA9jUzfswAAAhE + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/COMPOSE_ID + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2616 + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:48 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHUNzYCNJwtm0JAhGCugAABFc + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/COMPOSE_ID + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2778 + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:48 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHUPYPQ6beqzZJoe4I2AAACsE + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/COMPOSE_ID + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2545 + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:48 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHUGDKJnmES5WV3NZxdgAAA9I + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/COMPOSE_ID + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2540 + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:49 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHUc2dRVrGrvfHXIirbwAABsU + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/compose + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2497 + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:49 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHUfrbPBQAVrZAyqhchAAABwo + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/compose + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2203 + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:49 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHUWmti5Q4-osOpGWztwAAA9E + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Content-Type: + - application/json + Host: + - pdc.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://pdc.fedoraproject.org/rest_api/v1/compose-images/Fedora-Rawhide-20240501.n.0/?page=1 + response: + body: + string: '{"header":{"version":"1.2","type":"productmd.images"},"payload":{"images":{"Workstation":{"aarch64":[{"subvariant":"Workstation","format":"raw.xz","volume_id":null,"mtime":1714551577,"checksums":{"sha256":"169a31fd5cf10faafaba87b2342ad6475bc1d20ce3e71946d0fa2694bd4484fe"},"arch":"aarch64","size":2806539876,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Workstation/aarch64/images/Fedora-Workstation-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"Workstation","format":"iso","volume_id":null,"mtime":1714550825,"checksums":{"sha256":"2e6757ccad552f5929f1a69777f3a8166985953b0331ab6386ab6af8ca0e8322"},"arch":"aarch64","size":2609154048,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Workstation/aarch64/iso/Fedora-Workstation-Live-osb-Rawhide-20240501.n.0.aarch64.iso","type":"live-osbuild"}],"x86_64":[{"subvariant":"Workstation","format":"iso","volume_id":null,"mtime":1714551289,"checksums":{"sha256":"81584c47d50304bf1a659c17af7b761891e8f70545eb97e1ae0cc7ff511f79ee"},"arch":"x86_64","size":2654552064,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Workstation/x86_64/iso/Fedora-Workstation-Live-osb-Rawhide-20240501.n.0.x86_64.iso","type":"live-osbuild"},{"subvariant":"Workstation","format":"iso","volume_id":null,"mtime":1714549615,"checksums":{"sha256":"264d04c31714ba0734940819b8bdc7863701f9cd7a16e553b5b6a5db121effa7"},"arch":"x86_64","size":2314934272,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"}],"ppc64le":[{"subvariant":"Workstation","format":"iso","volume_id":null,"mtime":1714549972,"checksums":{"sha256":"1f19f95713627cfbb487cb32ccaf0dcaeb49717e23649c6244ace0e71f6932fe"},"arch":"ppc64le","size":2265411584,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Workstation/ppc64le/iso/Fedora-Workstation-Live-ppc64le-Rawhide-20240501.n.0.iso","type":"live"}]},"Container":{"aarch64":[{"subvariant":"Container_Minimal_Base","format":"tar.xz","volume_id":null,"mtime":1714548151,"checksums":{"sha256":"570b6e8f5e642df8541add9734ce6263396ac8b31410d334affd4f241161bb0e"},"arch":"aarch64","size":45765840,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/aarch64/images/Fedora-Container-Base-Generic-Minimal.aarch64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Base","format":"tar.xz","volume_id":null,"mtime":1714548144,"checksums":{"sha256":"4410600bf5c55c2ed2d892f448d0f940f1d04bd3758df45c1214e666f909376a"},"arch":"aarch64","size":80061492,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/aarch64/images/Fedora-Container-Base-Generic.aarch64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Toolbox","format":"tar.xz","volume_id":null,"mtime":1714548390,"checksums":{"sha256":"14662b170bb2a792ef59471c4f3832aec24a156a63723ae7f3189ae39055198c"},"arch":"aarch64","size":309801336,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/aarch64/images/Fedora-Container-Toolbox.aarch64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"}],"x86_64":[{"subvariant":"Container_Minimal_Base","format":"tar.xz","volume_id":null,"mtime":1714548002,"checksums":{"sha256":"99762e812b170a2b5ae21ffdfcc26d6f821064c3347c3456bcfb0946b51d3e39"},"arch":"x86_64","size":47325456,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/x86_64/images/Fedora-Container-Base-Generic-Minimal.x86_64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Base","format":"tar.xz","volume_id":null,"mtime":1714548128,"checksums":{"sha256":"22ec94af77d239c4be0d6441b57b1a36e7f5ab78da4ebeb2fa0ebc5e2d84ab99"},"arch":"x86_64","size":81582552,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/x86_64/images/Fedora-Container-Base-Generic.x86_64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Toolbox","format":"tar.xz","volume_id":null,"mtime":1714548391,"checksums":{"sha256":"4338e4bf47b0f98cde51fcd90f4c8dd0ec6e44e19f066ac71a3a8f0b156bd613"},"arch":"x86_64","size":333172684,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/x86_64/images/Fedora-Container-Toolbox.x86_64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"}],"s390x":[{"subvariant":"Container_Minimal_Base","format":"tar.xz","volume_id":null,"mtime":1714547999,"checksums":{"sha256":"5126ea913a0cce891f146c98d64f7041f88ec97fdf833050b66bcb1761963e7e"},"arch":"s390x","size":47592832,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/s390x/images/Fedora-Container-Base-Generic-Minimal.s390x-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Base","format":"tar.xz","volume_id":null,"mtime":1714548085,"checksums":{"sha256":"b872fec000a3c09d0b0875d14ab11df3ae8fac9841c9ce2d75479d87b99b77bb"},"arch":"s390x","size":82633556,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/s390x/images/Fedora-Container-Base-Generic.s390x-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Toolbox","format":"tar.xz","volume_id":null,"mtime":1714548383,"checksums":{"sha256":"254e6199117fd50a0a402a8e0bcf0d1a497457712525e05e67bde46c6b43a6ee"},"arch":"s390x","size":295170680,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/s390x/images/Fedora-Container-Toolbox.s390x-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"}],"ppc64le":[{"subvariant":"Container_Minimal_Base","format":"tar.xz","volume_id":null,"mtime":1714548195,"checksums":{"sha256":"a1609b38c5ca8b5725a5b861e6d223ebd7efb540a5a8dcb0d124c8143edacc15"},"arch":"ppc64le","size":53859988,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/ppc64le/images/Fedora-Container-Base-Generic-Minimal.ppc64le-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Base","format":"tar.xz","volume_id":null,"mtime":1714548207,"checksums":{"sha256":"16232ae6ac7d85480a12307b418ea86c62097889369f241607a6da3fdc810294"},"arch":"ppc64le","size":89383320,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/ppc64le/images/Fedora-Container-Base-Generic.ppc64le-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Toolbox","format":"tar.xz","volume_id":null,"mtime":1714548405,"checksums":{"sha256":"f24b0e9d19a19e509bef289c02ce0ce017b8abaa3d94dd3e160756cfbfe9a1e8"},"arch":"ppc64le","size":317277716,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/ppc64le/images/Fedora-Container-Toolbox.ppc64le-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"}]},"Everything":{"aarch64":[{"subvariant":"Everything","format":"iso","volume_id":"Fedora-E-dvd-aarch64-rawh","mtime":1714543271,"checksums":{"sha256":"c8761f0c0c969b2208bc1eec38608a3d421c74168e11bf6842ce0649c0b6e2c1"},"arch":"aarch64","size":881444864,"disc_count":1,"bootable":true,"implant_md5":"eb260a2607dea1ea7b4c70a3bc3b3309","disc_number":1,"path":"Everything/aarch64/iso/Fedora-Everything-netinst-aarch64-Rawhide-20240501.n.0.iso","type":"boot"}],"x86_64":[{"subvariant":"Everything","format":"iso","volume_id":"Fedora-E-dvd-x86_64-rawh","mtime":1714543598,"checksums":{"sha256":"6a4c569813b8fa3269122d4de538302d212be395f2465f192c3b42c3bd29c4d6"},"arch":"x86_64","size":862216192,"disc_count":1,"bootable":true,"implant_md5":"4fada428441a95574831d3cb8b254e44","disc_number":1,"path":"Everything/x86_64/iso/Fedora-Everything-netinst-x86_64-Rawhide-20240501.n.0.iso","type":"boot"}],"s390x":[{"subvariant":"Everything","format":"iso","volume_id":"Fedora-E-dvd-s390x-rawh","mtime":1714543372,"checksums":{"sha256":"1a1d0489e884cee0f5611adf10dcdc2cc8cecd8a43ca72e9133835cd0c993726"},"arch":"s390x","size":538773504,"disc_count":1,"bootable":true,"implant_md5":"d75c8272c5b65a38083becafe0114e2c","disc_number":1,"path":"Everything/s390x/iso/Fedora-Everything-netinst-s390x-Rawhide-20240501.n.0.iso","type":"boot"}],"ppc64le":[{"subvariant":"Everything","format":"iso","volume_id":"Fedora-E-dvd-ppc64le-rawh","mtime":1714544248,"checksums":{"sha256":"06e517e99fc1ad551afc5796ba574f96940c93321ec8e1af0597c44fceef1829"},"arch":"ppc64le","size":868366336,"disc_count":1,"bootable":true,"implant_md5":"447733a53e635d41f0221cd038799cea","disc_number":1,"path":"Everything/ppc64le/iso/Fedora-Everything-netinst-ppc64le-Rawhide-20240501.n.0.iso","type":"boot"}]},"Onyx":{"x86_64":[{"subvariant":"Onyx","format":"iso","volume_id":"Fedora-Onyx-ostree-x86_64-rawh","mtime":1714546339,"checksums":{"sha256":"c7fc13f5fbd63ede8dcee60880ec9353e192d27e1298d70553987667472d468e"},"arch":"x86_64","size":2758076416,"disc_count":1,"bootable":true,"implant_md5":"eea8885d7c0c04c811dbb7fadb88c18b","disc_number":1,"path":"Onyx/x86_64/iso/Fedora-Onyx-ostree-x86_64-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}]},"Server":{"aarch64":[{"subvariant":"Server_KVM","format":"qcow2","volume_id":null,"mtime":1714548481,"checksums":{"sha256":"7df0a82f10cf9ff246a4367c9d2738dcfa38adeab43f6259fd59c248334e754d"},"arch":"aarch64","size":679477248,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Server/aarch64/images/Fedora-Server-KVM-Rawhide-20240501.n.0.aarch64.qcow2","type":"qcow2"},{"subvariant":"Server","format":"raw.xz","volume_id":null,"mtime":1714549351,"checksums":{"sha256":"606840743d5f6949f6a24a087a83ee30ba75061efccae97dc10b0a9911eb647f"},"arch":"aarch64","size":1156440656,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Server/aarch64/images/Fedora-Server-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-aarch64-rawh","mtime":1714547827,"checksums":{"sha256":"9254a157dd98c83ec69bd6bfa32c332132a77a244196d986e61a8e07dcef482b"},"arch":"aarch64","size":2571698176,"disc_count":1,"bootable":true,"implant_md5":"3b4bf7e119d816a9b7d7ff43bb1e7397","disc_number":1,"path":"Server/aarch64/iso/Fedora-Server-dvd-aarch64-Rawhide-20240501.n.0.iso","type":"dvd"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-aarch64-rawh","mtime":1714543282,"checksums":{"sha256":"f97a38209469f4aabebf80734d97f672d0e7a76599178e627f551be0efca705d"},"arch":"aarch64","size":891131904,"disc_count":1,"bootable":true,"implant_md5":"56a7d1aa0db7f8885ce2bb582431c20a","disc_number":1,"path":"Server/aarch64/iso/Fedora-Server-netinst-aarch64-Rawhide-20240501.n.0.iso","type":"boot"}],"x86_64":[{"subvariant":"Server_KVM","format":"qcow2","volume_id":null,"mtime":1714548432,"checksums":{"sha256":"874dca83ba136eda1395d5b4195252b80c9c46586b5d0959cab8a2228fa87981"},"arch":"x86_64","size":663355392,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Server/x86_64/images/Fedora-Server-KVM-Rawhide-20240501.n.0.x86_64.qcow2","type":"qcow2"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-x86_64-rawh","mtime":1714547835,"checksums":{"sha256":"28f2da7d8092d8d9fdf9b2e55a6c01cb8df4d91040698b4e5eeaefb59bc0562e"},"arch":"x86_64","size":2659516416,"disc_count":1,"bootable":true,"implant_md5":"09ab21ecd902b709225a183bdb4d221f","disc_number":1,"path":"Server/x86_64/iso/Fedora-Server-dvd-x86_64-Rawhide-20240501.n.0.iso","type":"dvd"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-x86_64-rawh","mtime":1714544390,"checksums":{"sha256":"284d59258c0097df13b6e534e7286cc0aef3ff97355867c958b50ad1fbcefbd2"},"arch":"x86_64","size":872001536,"disc_count":1,"bootable":true,"implant_md5":"415e2b42be4a7ab863b531a9f103609b","disc_number":1,"path":"Server/x86_64/iso/Fedora-Server-netinst-x86_64-Rawhide-20240501.n.0.iso","type":"boot"}],"s390x":[{"subvariant":"Server_KVM","format":"qcow2","volume_id":null,"mtime":1714548425,"checksums":{"sha256":"fb3c65a91db222dd53642ddfc8bc79f93d6b368daba2de08fa29995c56b51f25"},"arch":"s390x","size":642777088,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Server/s390x/images/Fedora-Server-KVM-Rawhide-20240501.n.0.s390x.qcow2","type":"qcow2"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-s390x-rawh","mtime":1714548033,"checksums":{"sha256":"1b01c52808aca1e6612318816d9f23d28731433213b9dca0f5001ac176e571f6"},"arch":"s390x","size":2002780160,"disc_count":1,"bootable":true,"implant_md5":"4c9027c3bdf2355b1bd44d2e1510e20b","disc_number":1,"path":"Server/s390x/iso/Fedora-Server-dvd-s390x-Rawhide-20240501.n.0.iso","type":"dvd"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-s390x-rawh","mtime":1714543378,"checksums":{"sha256":"bd5408c0fef7d15cb9ecefd6890473cfea0c8eb2c3ac87eaeb03469d7b8bc05a"},"arch":"s390x","size":549619712,"disc_count":1,"bootable":true,"implant_md5":"239d338c78263b5528a0ef1a2da78540","disc_number":1,"path":"Server/s390x/iso/Fedora-Server-netinst-s390x-Rawhide-20240501.n.0.iso","type":"boot"}],"ppc64le":[{"subvariant":"Server_KVM","format":"qcow2","volume_id":null,"mtime":1714555324,"checksums":{"sha256":"8697bb87795aeb0cfdbf67683c72672e5390c0c26d8c456147b3c237a35c6467"},"arch":"ppc64le","size":684392448,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Server/ppc64le/images/Fedora-Server-KVM-Rawhide-20240501.n.0.ppc64le.qcow2","type":"qcow2"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-ppc64le-rawh","mtime":1714548000,"checksums":{"sha256":"1eb107a7627f035ab3fe6f21db00b2b5d6766af991453287db444edd5532b625"},"arch":"ppc64le","size":2409299968,"disc_count":1,"bootable":true,"implant_md5":"52aa0d9a2a7e40ed64c6cc301020308e","disc_number":1,"path":"Server/ppc64le/iso/Fedora-Server-dvd-ppc64le-Rawhide-20240501.n.0.iso","type":"dvd"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-ppc64le-rawh","mtime":1714543594,"checksums":{"sha256":"f74d20418c881571be50a2184f240d13b8cfdf7bbad72bfc2571bb819674390a"},"arch":"ppc64le","size":879071232,"disc_count":1,"bootable":true,"implant_md5":"5e55736ea6f1dc86ce1c22b93e8fa0b3","disc_number":1,"path":"Server/ppc64le/iso/Fedora-Server-netinst-ppc64le-Rawhide-20240501.n.0.iso","type":"boot"}]},"Labs":{"aarch64":[{"subvariant":"Python_Classroom","format":"raw.xz","volume_id":null,"mtime":1714549628,"checksums":{"sha256":"53517e834f444d1bbfdb95506d3c97d6563736c63d23fcb7cb0485c8e8555345"},"arch":"aarch64","size":2717602640,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Labs/aarch64/images/Fedora-Python-Classroom-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"}],"x86_64":[{"subvariant":"Python_Classroom","format":"vagrant-libvirt.box","volume_id":null,"mtime":1714548988,"checksums":{"sha256":"85eb263a920688d56d5e74958161ced4044578d7093b0018d09b78245712c63a"},"arch":"x86_64","size":1567637359,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/images/Fedora-Python-Classroom-Vagrant-Rawhide-20240501.n.0.x86_64.vagrant-libvirt.box","type":"vagrant-libvirt"},{"subvariant":"Python_Classroom","format":"vagrant-virtualbox.box","volume_id":null,"mtime":1714549060,"checksums":{"sha256":"81685cb0637678d5111e8b50dc61e94df119a2c2bb3b2ec216d04d35c5356527"},"arch":"x86_64","size":1589186560,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/images/Fedora-Python-Classroom-Vagrant-Rawhide-20240501.n.0.x86_64.vagrant-virtualbox.box","type":"vagrant-virtualbox"},{"subvariant":"Scientific","format":"vagrant-libvirt.box","volume_id":null,"mtime":1714549937,"checksums":{"sha256":"6a9b6f17eb655962a8b3e343f09ed06cb5fca92ad3faef6a01215ae673a62bad"},"arch":"x86_64","size":4906517741,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/images/Fedora-Scientific-Vagrant-Rawhide-20240501.n.0.x86_64.vagrant-libvirt.box","type":"vagrant-libvirt"},{"subvariant":"Scientific","format":"vagrant-virtualbox.box","volume_id":null,"mtime":1714550139,"checksums":{"sha256":"29547a3dc363baf76c26c53350a066d76b4287e644019d5f3e43c16e8aad196c"},"arch":"x86_64","size":4963287040,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/images/Fedora-Scientific-Vagrant-Rawhide-20240501.n.0.x86_64.vagrant-virtualbox.box","type":"vagrant-virtualbox"},{"subvariant":"Astronomy_KDE","format":"iso","volume_id":null,"mtime":1714549753,"checksums":{"sha256":"eedb523885c20bfb5b246563def3e4a593d7698d7847923cf5292a2f726ab772"},"arch":"x86_64","size":4663750656,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Astronomy_KDE-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Comp_Neuro","format":"iso","volume_id":null,"mtime":1714549174,"checksums":{"sha256":"78a2911eb3c6fe4f86bbdcc93930eb8b2172f8b4971e5f83324bc496c1d9ad3f"},"arch":"x86_64","size":3089092608,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Comp_Neuro-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Games","format":"iso","volume_id":null,"mtime":1714549710,"checksums":{"sha256":"bd14181af753ff6d6273d0cc6575b2b13ee601564f526ab43c8060e9a44a8833"},"arch":"x86_64","size":6911944704,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Games-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Jam_KDE","format":"iso","volume_id":null,"mtime":1714549112,"checksums":{"sha256":"d612fc08962b47f04a6cc7549f45d7deb8740c0cf7838bd48423d4147aa2803f"},"arch":"x86_64","size":3543447552,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Jam_KDE-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Python_Classroom","format":"iso","volume_id":null,"mtime":1714549398,"checksums":{"sha256":"5f0fd5c2f81e6838409adfd70f71f532a73435505fd939f6f1c78c9ba57795bd"},"arch":"x86_64","size":2366535680,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Python-Classroom-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Robotics","format":"iso","volume_id":null,"mtime":1714549620,"checksums":{"sha256":"a91c562e1e2878977ec7639e7fe6056acc649822456fd4d50f9184dec9ee6376"},"arch":"x86_64","size":3167330304,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Robotics-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Scientific_KDE","format":"iso","volume_id":null,"mtime":1714549887,"checksums":{"sha256":"cdb127b1b26e6b1b4541be85c890bc6a20f36c58e596d77042d6b99d61d40c55"},"arch":"x86_64","size":5520687104,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Scientific_KDE-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Security","format":"iso","volume_id":null,"mtime":1714549047,"checksums":{"sha256":"ba32f7df92892f6185e46349e825c995ba81c5a26b482e46554079f22b4da894"},"arch":"x86_64","size":2481698816,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Security-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"}]},"Silverblue":{"aarch64":[{"subvariant":"Silverblue","format":"iso","volume_id":"Fedora-SB-ostree-aarch64-rawh","mtime":1714546273,"checksums":{"sha256":"b5a25b696cc0fdea442671eebcbb999287378e87542cfdb4b68b52dd2bd0ef4b"},"arch":"aarch64","size":3620956160,"disc_count":1,"bootable":true,"implant_md5":"461ca41e418493e1475d5bcd5fc1546f","disc_number":1,"path":"Silverblue/aarch64/iso/Fedora-Silverblue-ostree-aarch64-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}],"x86_64":[{"subvariant":"Silverblue","format":"iso","volume_id":"Fedora-SB-ostree-x86_64-rawh","mtime":1714546928,"checksums":{"sha256":"c138b73ec6e460d2ef300d04052e5f851e22d97bc00b96663a0b19daf37da973"},"arch":"x86_64","size":3640899584,"disc_count":1,"bootable":true,"implant_md5":"ac049c322f096d2dbdd55b7369048584","disc_number":1,"path":"Silverblue/x86_64/iso/Fedora-Silverblue-ostree-x86_64-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}],"ppc64le":[{"subvariant":"Silverblue","format":"iso","volume_id":"Fedora-SB-ostree-ppc64le-rawh","mtime":1714547457,"checksums":{"sha256":"02951538e73b9a53657e667a4fe745ba31ad70c9a07a445ba299369c487f3047"},"arch":"ppc64le","size":3572103168,"disc_count":1,"bootable":true,"implant_md5":"8a9f0707386f692fc93ae051f97487fb","disc_number":1,"path":"Silverblue/ppc64le/iso/Fedora-Silverblue-ostree-ppc64le-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}]},"Cloud":{"aarch64":[{"subvariant":"Cloud_Base","format":"raw.xz","volume_id":null,"mtime":1714548549,"checksums":{"sha256":"761269846a3fb0750fdf3853cc7838189ee1317c376e45de4225a6364ce51907"},"arch":"aarch64","size":372905420,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-AmazonEC2.aarch64-Rawhide-20240501.n.0.raw.xz","type":"raw-xz"},{"subvariant":"Cloud_Base","format":"vhd.xz","volume_id":null,"mtime":1714548597,"checksums":{"sha256":"aa977ff3c52903c0000338914b4c0691f8d857675742ac0bda12ed8af6b6fd71"},"arch":"aarch64","size":438226428,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-Azure.aarch64-Rawhide-20240501.n.0.vhdfixed.xz","type":"vhd-compressed"},{"subvariant":"Cloud_Base","format":"tar.gz","volume_id":null,"mtime":1714548410,"checksums":{"sha256":"acdb1bd9065c6a648f7f45ed68ed001a333f9d1fee96768a758cf56885e7191f"},"arch":"aarch64","size":415969669,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-GCE.aarch64-Rawhide-20240501.n.0.tar.gz","type":"docker"},{"subvariant":"Cloud_Base","format":"qcow2","volume_id":null,"mtime":1714548405,"checksums":{"sha256":"ceaee75dd6a3a6c4244a30eb59184a935bbc0d004dce13f29f22a62631819b4e"},"arch":"aarch64","size":415891456,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-Generic.aarch64-Rawhide-20240501.n.0.qcow2","type":"qcow2"},{"subvariant":"Cloud_Base_UKI","format":"qcow2","volume_id":null,"mtime":1714548578,"checksums":{"sha256":"2487abdf4e5ae7a9be4439833ae769ea946bb7f14632236f65b91913001ee1d7"},"arch":"aarch64","size":430243840,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-UEFI-UKI.aarch64-Rawhide-20240501.n.0.qcow2","type":"qcow2"},{"subvariant":"Cloud_Base","format":"vagrant-libvirt.box","volume_id":null,"mtime":1714548420,"checksums":{"sha256":"18ddad07c623baa1c33552ad6261423bc4e0dc689f8399cda6224e53fe705c67"},"arch":"aarch64","size":571752165,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-Vagrant-libvirt.aarch64-Rawhide-20240501.n.0.vagrant.libvirt.box","type":"vagrant-libvirt"}],"x86_64":[{"subvariant":"Cloud_Base","format":"raw.xz","volume_id":null,"mtime":1714548401,"checksums":{"sha256":"c376b61792828219d46f918f5c9cbcc1966c0ec4fd841b3ac8dc1b590eb87ece"},"arch":"x86_64","size":377126452,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-AmazonEC2.x86_64-Rawhide-20240501.n.0.raw.xz","type":"raw-xz"},{"subvariant":"Cloud_Base","format":"vhd.xz","volume_id":null,"mtime":1714548407,"checksums":{"sha256":"b95bef74af4a21cbedb1c590eada488bcf23bd1ca84b111bd6ba803c8783eff8"},"arch":"x86_64","size":452488716,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-Azure.x86_64-Rawhide-20240501.n.0.vhdfixed.xz","type":"vhd-compressed"},{"subvariant":"Cloud_Base","format":"tar.gz","volume_id":null,"mtime":1714548403,"checksums":{"sha256":"6b2b7114f924cd610d54d1166a5ca74250c49fbbe3e83ebf132150a8185f7bf5"},"arch":"x86_64","size":411774493,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-GCE.x86_64-Rawhide-20240501.n.0.tar.gz","type":"docker"},{"subvariant":"Cloud_Base","format":"qcow2","volume_id":null,"mtime":1714548401,"checksums":{"sha256":"b872fe26d3e5a8093f4de7600411dd935b1ea3614542a6dc5a22f3cea4015936"},"arch":"x86_64","size":408944640,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-Rawhide-20240501.n.0.qcow2","type":"qcow2"},{"subvariant":"Cloud_Base_UKI","format":"qcow2","volume_id":null,"mtime":1714548404,"checksums":{"sha256":"f9b82e1b9e226df36117143c55dd534a006aaf90c3ca158037c211ef4535db81"},"arch":"x86_64","size":439222272,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-UEFI-UKI.x86_64-Rawhide-20240501.n.0.qcow2","type":"qcow2"},{"subvariant":"Cloud_Base","format":"vagrant-virtualbox.box","volume_id":null,"mtime":1714548418,"checksums":{"sha256":"89a2cbab39f0750125b51be6e04da067aa0484598a86e558cbeb6cab074cd311"},"arch":"x86_64","size":571837191,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-VirtualBox.x86_64-Rawhide-20240501.n.0.vagrant.virtualbox.box","type":"vagrant-virtualbox"},{"subvariant":"Cloud_Base","format":"vagrant-libvirt.box","volume_id":null,"mtime":1714548418,"checksums":{"sha256":"f96fee2a6ac8e0d63400eb7dfe1a1c3100041a6a61c7be378b4ae0dcc223343b"},"arch":"x86_64","size":581492129,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-libvirt.x86_64-Rawhide-20240501.n.0.vagrant.libvirt.box","type":"vagrant-libvirt"}],"s390x":[{"subvariant":"Cloud_Base","format":"qcow2","volume_id":null,"mtime":1714548400,"checksums":{"sha256":"69a9e590a7fafdf5bcc6ab7b00943e453930f34136571aff0b77a028346f36fa"},"arch":"s390x","size":374772736,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/s390x/images/Fedora-Cloud-Base-Generic.s390x-Rawhide-20240501.n.0.qcow2","type":"qcow2"}],"ppc64le":[{"subvariant":"Cloud_Base","format":"qcow2","volume_id":null,"mtime":1714548579,"checksums":{"sha256":"60b69830dde0dd01d250277e61f2f779a78636274157f76ed4922f91e0c66b04"},"arch":"ppc64le","size":405536768,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/ppc64le/images/Fedora-Cloud-Base-Generic.ppc64le-Rawhide-20240501.n.0.qcow2","type":"qcow2"}]},"Kinoite":{"x86_64":[{"subvariant":"Kinoite","format":"iso","volume_id":"Fedora-Knt-ostree-x86_64-rawh","mtime":1714547170,"checksums":{"sha256":"b9f83ad46bd54203e71d7694ed2a93c926ef90a6eadfb4e54fdcc878bd3b5c55"},"arch":"x86_64","size":4265914368,"disc_count":1,"bootable":true,"implant_md5":"0cdc1ad51e553cd561b707fc7649880b","disc_number":1,"path":"Kinoite/x86_64/iso/Fedora-Kinoite-ostree-x86_64-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}],"ppc64le":[{"subvariant":"Kinoite","format":"iso","volume_id":"Fedora-Knt-ostree-ppc64le-rawh","mtime":1714547314,"checksums":{"sha256":"eb53b4a4803f3f07b70440e6e418a3d99fad77554a8d24e637f593d7a4111c8b"},"arch":"ppc64le","size":3977838592,"disc_count":1,"bootable":true,"implant_md5":"a4a70257ed61704a79ba87fbd4e858bf","disc_number":1,"path":"Kinoite/ppc64le/iso/Fedora-Kinoite-ostree-ppc64le-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}]},"Spins":{"aarch64":[{"subvariant":"KDE","format":"raw.xz","volume_id":null,"mtime":1714551236,"checksums":{"sha256":"1f59bcccda3ce19825729af0f5d2e1728312757e85d8eac0790b828723b3edbb"},"arch":"aarch64","size":3323626052,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/images/Fedora-KDE-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"LXQt","format":"raw.xz","volume_id":null,"mtime":1714550923,"checksums":{"sha256":"b85c09dfce672d5844edeaac41f45d7595bf971be0ff5ff2733fc816594a731e"},"arch":"aarch64","size":2160802488,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/images/Fedora-LXQt-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"Minimal","format":"raw.xz","volume_id":null,"mtime":1714548583,"checksums":{"sha256":"722e1717d73bf43e2eb6e0cb4fb8ae3cb19b4a2de8cf1c49da4d6020597d3b66"},"arch":"aarch64","size":933003100,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/images/Fedora-Minimal-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"SoaS","format":"raw.xz","volume_id":null,"mtime":1714549638,"checksums":{"sha256":"242229d68cf1af9ce239192ad87965f216c118c75d9fd74e72b08ab0f00e24ed"},"arch":"aarch64","size":1885278248,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/images/Fedora-SoaS-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"Xfce","format":"raw.xz","volume_id":null,"mtime":1714549789,"checksums":{"sha256":"c707ac0edeffe9f1fc3fef644bb49c421f94f01f2f385b46a07533c18932895d"},"arch":"aarch64","size":2286809604,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/images/Fedora-Xfce-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"KDE","format":"iso","volume_id":null,"mtime":1714549170,"checksums":{"sha256":"64eb2f3cd6e54b724ccd3528867d49a4057789ed8a00e5f01d2ba1f37a24bc2c"},"arch":"aarch64","size":2649317376,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/iso/Fedora-KDE-Live-aarch64-Rawhide-20240501.n.0.iso","type":"live"}],"x86_64":[{"subvariant":"Budgie","format":"iso","volume_id":null,"mtime":1714549119,"checksums":{"sha256":"7170cec0da8874d774b611afa4f398684d050407cd476672c50897f8c23a271b"},"arch":"x86_64","size":2154031104,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-Budgie-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Cinnamon","format":"iso","volume_id":null,"mtime":1714549323,"checksums":{"sha256":"6ca934500ad73394e30cb6394eac7f01cf8f9b034a7338f2ea259f3a72287153"},"arch":"x86_64","size":2566842368,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-Cinnamon-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"KDE","format":"iso","volume_id":null,"mtime":1714549325,"checksums":{"sha256":"8b10a757116d53ede4725a6e08766af3b3fa5c0c953c24021f6c07616fda8485"},"arch":"x86_64","size":2673795072,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-KDE-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"LXDE","format":"iso","volume_id":null,"mtime":1714549033,"checksums":{"sha256":"1a082a163d6a4a083f7a14752bf05444810759e09d7c032449c1ec39db03d670"},"arch":"x86_64","size":1755189248,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-LXDE-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"LXQt","format":"iso","volume_id":null,"mtime":1714549069,"checksums":{"sha256":"b206c9622050720e8dab00ff071e8ab3c4a5aeba04a810da933969c02a7f0785"},"arch":"x86_64","size":1881649152,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-LXQt-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Mate","format":"iso","volume_id":null,"mtime":1714549314,"checksums":{"sha256":"218b1e1e8efb78b34a9706b0d995f0f6d2450086635cf07477cd4330f8c8c24e"},"arch":"x86_64","size":2452094976,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-MATE_Compiz-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"SoaS","format":"iso","volume_id":null,"mtime":1714548992,"checksums":{"sha256":"ddb3d9ad6c2169f79c1ffa6cad759199d79c2d51e3012eb7ea18599ab0ec3864"},"arch":"x86_64","size":1459724288,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-SoaS-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Sway","format":"iso","volume_id":null,"mtime":1714549007,"checksums":{"sha256":"2fb50be1ed0b5d12a648d1b113b9c2bdb2debece729eee65d219b94b2d2f21d3"},"arch":"x86_64","size":1651877888,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-Sway-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Xfce","format":"iso","volume_id":null,"mtime":1714549105,"checksums":{"sha256":"0d845b914b0f5e83ca2ce845652d25da556537db31e090b16167e34aca314094"},"arch":"x86_64","size":1903425536,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-Xfce-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"i3","format":"iso","volume_id":null,"mtime":1714549001,"checksums":{"sha256":"cae0b4113cc260962b573315cbf0ce01df7d14f4d6d7794a0e700a0e30d8f0ac"},"arch":"x86_64","size":1637480448,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-i3-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"}]},"Sericea":{"x86_64":[{"subvariant":"Sericea","format":"iso","volume_id":"Fedora-Src-ostree-x86_64-rawh","mtime":1714546202,"checksums":{"sha256":"4e33ca3626e68a99d87e2da6552536bb1da53f4a885f265f3e41b2026ff13a9c"},"arch":"x86_64","size":2600185856,"disc_count":1,"bootable":true,"implant_md5":"7edb7a3c6255c9485d706bfaaf10e410","disc_number":1,"path":"Sericea/x86_64/iso/Fedora-Sericea-ostree-x86_64-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}]}},"compose":{"date":"20240501","respin":0,"type":"nightly","id":"Fedora-Rawhide-20240501.n.0"}}}' + headers: + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:50 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy04.fedoraproject.org + X-Fedora-RequestID: + - ZlfHUrAMQ1iYCtlRmxpLEAAAA9M + X-Frame-Options: + - SAMEORIGIN + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + allow: + - GET, HEAD, OPTIONS + apptime: + - D=1025542 + cache-control: + - private, max-age=0, must-revalidate + content-type: + - application/json + set-cookie: + - SERVERID=pdc-web01; path=/ + vary: + - Accept,Cookie,Accept-Encoding + x-fedora-appserver: + - pdc-web01.iad2.fedoraproject.org + x-frame-options: + - SAMEORIGIN + - SAMEORIGIN + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, br + Connection: + - keep-alive + User-Agent: + - python-requests/2.31.0 + method: GET + uri: https://bodhi.fedoraproject.org/releases/F41 + response: + body: + string: '{"name": "F41", "long_name": "Fedora 41", "version": "41", "id_prefix": + "FEDORA", "branch": "rawhide", "dist_tag": "f41", "stable_tag": "f41", "testing_tag": + "f41-updates-testing", "candidate_tag": "f41-updates-candidate", "pending_signing_tag": + "f41-signing-pending", "pending_testing_tag": "f41-updates-testing-pending", + "pending_stable_tag": "f41-updates-pending", "override_tag": "f41-override", + "mail_template": "fedora_errata_template", "state": "pending", "composed_by_bodhi": + false, "create_automatic_updates": true, "package_manager": "unspecified", + "testing_repository": null, "released_on": null, "eol": null, "setting_status": + "pre_beta"}' + headers: + AppTime: + - D=44636 + Connection: + - Keep-Alive + Date: + - Thu, 30 May 2024 00:24:51 GMT + Keep-Alive: + - timeout=15, max=500 + Referrer-Policy: + - same-origin + Server: + - gunicorn + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + - nosniff + X-Fedora-ProxyServer: + - proxy14.fedoraproject.org + X-Fedora-RequestID: + - ZlfHU8_z7IlprDyBbLxCtQAABoU + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '650' + content-type: + - application/json + set-cookie: + - 1caa5c4232b1a1f24f8c4f6e0f496284=54379c9e3297d922e85a653bc349fdb4; path=/; + HttpOnly; Secure; SameSite=None + x-content-type-options: + - nosniff + - nosniff + status: + code: 200 + message: OK +version: 1 diff --git a/tests/fixtures/cassettes/test_containers[compose1].yaml b/tests/fixtures/cassettes/test_containers[compose1].yaml new file mode 100644 index 0000000..44d4e03 --- /dev/null +++ b/tests/fixtures/cassettes/test_containers[compose1].yaml @@ -0,0 +1,1450 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/40/Fedora-40-20240414.0/compose + response: + body: + string: ' + + + + 301 Moved Permanently + + + +

Moved Permanently

+ +

The document has moved here.

+ + + + ' + headers: + AppTime: + - D=1332 + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:52 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHVAAp6vzMrxI0tML2PAAACVQ + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '283' + content-type: + - text/html; charset=iso-8859-1 + location: + - https://kojipkgs.fedoraproject.org/compose/40/Fedora-40-20240414.0/compose/ + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 301 + message: Moved Permanently +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/40/Fedora-40-20240414.0/compose/ + response: + body: + string: "\n\n + \n Index of /compose/40/Fedora-40-20240414.0/compose\n + \n \n

Index of /compose/40/Fedora-40-20240414.0/compose

\n
\"Icon Name                              Last modified      Size  Description
\"[PARENTDIR]\" + Parent Directory - + \ \n\"[DIR]\" Cloud/ + \ 2024-04-14 23:08 - \n\"[DIR]\" Container/ 2024-04-14 + 22:55 - \n\"[DIR]\" Everything/ + \ 2024-04-14 18:34 - \n\"[DIR]\" Kinoite/ 2024-04-14 + 17:59 - \n\"[DIR]\" Labs/ + \ 2024-04-14 23:57 - \n\"[DIR]\" Onyx/ 2024-04-14 + 17:59 - \n\"[DIR]\" Sericea/ + \ 2024-04-14 17:59 - \n\"[DIR]\" Server/ 2024-04-14 + 18:44 - \n\"[DIR]\" Silverblue/ + \ 2024-04-14 17:59 - \n\"[DIR]\" Spins/ 2024-04-14 + 23:07 - \n\"[DIR]\" Workstation/ + \ 2024-04-14 23:51 - \n\"[DIR]\" metadata/ 2024-04-15 + 01:25 - \n
\n\n" + headers: + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:52 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHVNzYCNJwtm0JAhGC-AAABE8 + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + apptime: + - D=128932 + content-length: + - '2096' + content-type: + - text/html;charset=ISO-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs02.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/40/Fedora-40-20240414.0/STATUS + response: + body: + string: 'FINISHED_INCOMPLETE + + ' + headers: + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:52 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHVADwF_W1v7Rmc345bgAABA0 + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=109258 + content-length: + - '20' + last-modified: + - Mon, 15 Apr 2024 01:25:57 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs01.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/40/Fedora-40-20240414.0/compose/metadata/composeinfo.json + response: + body: + string: "{\n \"header\": {\n \"type\": \"productmd.composeinfo\",\n + \ \"version\": \"1.2\"\n },\n \"payload\": {\n \"compose\": + {\n \"date\": \"20240414\",\n \"final\": true,\n \"id\": + \"Fedora-40-20240414.0\",\n \"label\": \"RC-1.14\",\n \"respin\": + 0,\n \"type\": \"production\"\n },\n \"release\": + {\n \"internal\": false,\n \"name\": \"Fedora\",\n \"short\": + \"Fedora\",\n \"type\": \"ga\",\n \"version\": \"40\"\n + \ },\n \"variants\": {\n \"Cloud\": {\n \"arches\": + [\n \"aarch64\",\n \"ppc64le\",\n \"s390x\",\n + \ \"x86_64\"\n ],\n \"id\": + \"Cloud\",\n \"name\": \"Cloud\",\n \"paths\": + {\n \"images\": {\n \"aarch64\": + \"Cloud/aarch64/images\",\n \"ppc64le\": \"Cloud/ppc64le/images\",\n + \ \"s390x\": \"Cloud/s390x/images\",\n \"x86_64\": + \"Cloud/x86_64/images\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"Cloud\"\n },\n \"Container\": + {\n \"arches\": [\n \"aarch64\",\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"Container\",\n \"name\": \"Container\",\n + \ \"paths\": {\n \"images\": {\n \"aarch64\": + \"Container/aarch64/images\",\n \"ppc64le\": \"Container/ppc64le/images\",\n + \ \"s390x\": \"Container/s390x/images\",\n \"x86_64\": + \"Container/x86_64/images\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"Container\"\n },\n \"Everything\": + {\n \"arches\": [\n \"aarch64\",\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"Everything\",\n \"name\": \"Everything\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"aarch64\": \"Everything/aarch64/debug/tree/Packages\",\n + \ \"ppc64le\": \"Everything/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"Everything/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"Everything/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"aarch64\": + \"Everything/aarch64/debug/tree\",\n \"ppc64le\": \"Everything/ppc64le/debug/tree\",\n + \ \"s390x\": \"Everything/s390x/debug/tree\",\n \"x86_64\": + \"Everything/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"aarch64\": \"Everything/aarch64/debug/tree\",\n + \ \"ppc64le\": \"Everything/ppc64le/debug/tree\",\n + \ \"s390x\": \"Everything/s390x/debug/tree\",\n \"x86_64\": + \"Everything/x86_64/debug/tree\"\n },\n \"isos\": + {\n \"aarch64\": \"Everything/aarch64/iso\",\n \"ppc64le\": + \"Everything/ppc64le/iso\",\n \"s390x\": \"Everything/s390x/iso\",\n + \ \"x86_64\": \"Everything/x86_64/iso\"\n },\n + \ \"os_tree\": {\n \"aarch64\": \"Everything/aarch64/os\",\n + \ \"ppc64le\": \"Everything/ppc64le/os\",\n \"s390x\": + \"Everything/s390x/os\",\n \"x86_64\": \"Everything/x86_64/os\"\n + \ },\n \"packages\": {\n \"aarch64\": + \"Everything/aarch64/os/Packages\",\n \"ppc64le\": + \"Everything/ppc64le/os/Packages\",\n \"s390x\": \"Everything/s390x/os/Packages\",\n + \ \"x86_64\": \"Everything/x86_64/os/Packages\"\n },\n + \ \"repository\": {\n \"aarch64\": + \"Everything/aarch64/os\",\n \"ppc64le\": \"Everything/ppc64le/os\",\n + \ \"s390x\": \"Everything/s390x/os\",\n \"x86_64\": + \"Everything/x86_64/os\"\n },\n \"source_packages\": + {\n \"aarch64\": \"Everything/source/tree/Packages\",\n + \ \"ppc64le\": \"Everything/source/tree/Packages\",\n + \ \"s390x\": \"Everything/source/tree/Packages\",\n + \ \"x86_64\": \"Everything/source/tree/Packages\"\n + \ },\n \"source_repository\": {\n \"aarch64\": + \"Everything/source/tree\",\n \"ppc64le\": \"Everything/source/tree\",\n + \ \"s390x\": \"Everything/source/tree\",\n \"x86_64\": + \"Everything/source/tree\"\n },\n \"source_tree\": + {\n \"aarch64\": \"Everything/source/tree\",\n \"ppc64le\": + \"Everything/source/tree\",\n \"s390x\": \"Everything/source/tree\",\n + \ \"x86_64\": \"Everything/source/tree\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"Everything\"\n },\n \"Kinoite\": {\n \"arches\": + [\n \"aarch64\",\n \"ppc64le\",\n \"x86_64\"\n + \ ],\n \"id\": \"Kinoite\",\n \"name\": + \"Kinoite\",\n \"paths\": {\n \"images\": + {\n \"aarch64\": \"Kinoite/aarch64/images\",\n \"ppc64le\": + \"Kinoite/ppc64le/images\",\n \"x86_64\": \"Kinoite/x86_64/images\"\n + \ },\n \"isos\": {\n \"aarch64\": + \"Kinoite/aarch64/iso\",\n \"x86_64\": \"Kinoite/x86_64/iso\"\n + \ },\n \"os_tree\": {\n \"aarch64\": + \"Kinoite/aarch64/os\",\n \"x86_64\": \"Kinoite/x86_64/os\"\n + \ },\n \"repository\": {\n \"aarch64\": + \"Kinoite/aarch64/os\",\n \"x86_64\": \"Kinoite/x86_64/os\"\n + \ }\n },\n \"type\": \"variant\",\n + \ \"uid\": \"Kinoite\"\n },\n \"Labs\": + {\n \"arches\": [\n \"aarch64\",\n \"x86_64\"\n + \ ],\n \"id\": \"Labs\",\n \"name\": + \"Labs\",\n \"paths\": {\n \"images\": {\n + \ \"aarch64\": \"Labs/aarch64/images\",\n \"x86_64\": + \"Labs/x86_64/images\"\n },\n \"isos\": + {\n \"x86_64\": \"Labs/x86_64/iso\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"Labs\"\n },\n \"Onyx\": {\n \"arches\": + [\n \"x86_64\"\n ],\n \"id\": + \"Onyx\",\n \"name\": \"Onyx\",\n \"paths\": + {\n \"images\": {\n \"x86_64\": + \"Onyx/x86_64/images\"\n },\n \"isos\": + {\n \"x86_64\": \"Onyx/x86_64/iso\"\n },\n + \ \"os_tree\": {\n \"x86_64\": \"Onyx/x86_64/os\"\n + \ },\n \"repository\": {\n \"x86_64\": + \"Onyx/x86_64/os\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"Onyx\"\n },\n \"Sericea\": + {\n \"arches\": [\n \"aarch64\",\n \"x86_64\"\n + \ ],\n \"id\": \"Sericea\",\n \"name\": + \"Sericea\",\n \"paths\": {\n \"images\": + {\n \"aarch64\": \"Sericea/aarch64/images\",\n \"x86_64\": + \"Sericea/x86_64/images\"\n },\n \"isos\": + {\n \"x86_64\": \"Sericea/x86_64/iso\"\n },\n + \ \"os_tree\": {\n \"x86_64\": \"Sericea/x86_64/os\"\n + \ },\n \"repository\": {\n \"x86_64\": + \"Sericea/x86_64/os\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"Sericea\"\n },\n \"Server\": + {\n \"arches\": [\n \"aarch64\",\n \"ppc64le\",\n + \ \"s390x\",\n \"x86_64\"\n ],\n + \ \"id\": \"Server\",\n \"name\": \"Server\",\n + \ \"paths\": {\n \"debug_packages\": {\n + \ \"aarch64\": \"Server/aarch64/debug/tree/Packages\",\n + \ \"ppc64le\": \"Server/ppc64le/debug/tree/Packages\",\n + \ \"s390x\": \"Server/s390x/debug/tree/Packages\",\n + \ \"x86_64\": \"Server/x86_64/debug/tree/Packages\"\n + \ },\n \"debug_repository\": {\n \"aarch64\": + \"Server/aarch64/debug/tree\",\n \"ppc64le\": \"Server/ppc64le/debug/tree\",\n + \ \"s390x\": \"Server/s390x/debug/tree\",\n \"x86_64\": + \"Server/x86_64/debug/tree\"\n },\n \"debug_tree\": + {\n \"aarch64\": \"Server/aarch64/debug/tree\",\n \"ppc64le\": + \"Server/ppc64le/debug/tree\",\n \"s390x\": \"Server/s390x/debug/tree\",\n + \ \"x86_64\": \"Server/x86_64/debug/tree\"\n },\n + \ \"images\": {\n \"aarch64\": \"Server/aarch64/images\",\n + \ \"ppc64le\": \"Server/ppc64le/images\",\n \"s390x\": + \"Server/s390x/images\",\n \"x86_64\": \"Server/x86_64/images\"\n + \ },\n \"isos\": {\n \"aarch64\": + \"Server/aarch64/iso\",\n \"ppc64le\": \"Server/ppc64le/iso\",\n + \ \"s390x\": \"Server/s390x/iso\",\n \"x86_64\": + \"Server/x86_64/iso\"\n },\n \"os_tree\": + {\n \"aarch64\": \"Server/aarch64/os\",\n \"ppc64le\": + \"Server/ppc64le/os\",\n \"s390x\": \"Server/s390x/os\",\n + \ \"x86_64\": \"Server/x86_64/os\"\n },\n + \ \"packages\": {\n \"aarch64\": + \"Server/aarch64/os/Packages\",\n \"ppc64le\": \"Server/ppc64le/os/Packages\",\n + \ \"s390x\": \"Server/s390x/os/Packages\",\n \"x86_64\": + \"Server/x86_64/os/Packages\"\n },\n \"repository\": + {\n \"aarch64\": \"Server/aarch64/os\",\n \"ppc64le\": + \"Server/ppc64le/os\",\n \"s390x\": \"Server/s390x/os\",\n + \ \"x86_64\": \"Server/x86_64/os\"\n },\n + \ \"source_packages\": {\n \"aarch64\": + \"Server/source/tree/Packages\",\n \"ppc64le\": \"Server/source/tree/Packages\",\n + \ \"s390x\": \"Server/source/tree/Packages\",\n \"x86_64\": + \"Server/source/tree/Packages\"\n },\n \"source_repository\": + {\n \"aarch64\": \"Server/source/tree\",\n \"ppc64le\": + \"Server/source/tree\",\n \"s390x\": \"Server/source/tree\",\n + \ \"x86_64\": \"Server/source/tree\"\n },\n + \ \"source_tree\": {\n \"aarch64\": + \"Server/source/tree\",\n \"ppc64le\": \"Server/source/tree\",\n + \ \"s390x\": \"Server/source/tree\",\n \"x86_64\": + \"Server/source/tree\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"Server\"\n },\n \"Silverblue\": + {\n \"arches\": [\n \"aarch64\",\n \"ppc64le\",\n + \ \"x86_64\"\n ],\n \"id\": + \"Silverblue\",\n \"name\": \"Silverblue\",\n \"paths\": + {\n \"images\": {\n \"aarch64\": + \"Silverblue/aarch64/images\",\n \"ppc64le\": \"Silverblue/ppc64le/images\",\n + \ \"x86_64\": \"Silverblue/x86_64/images\"\n },\n + \ \"isos\": {\n \"aarch64\": \"Silverblue/aarch64/iso\",\n + \ \"ppc64le\": \"Silverblue/ppc64le/iso\",\n \"x86_64\": + \"Silverblue/x86_64/iso\"\n },\n \"os_tree\": + {\n \"aarch64\": \"Silverblue/aarch64/os\",\n \"ppc64le\": + \"Silverblue/ppc64le/os\",\n \"x86_64\": \"Silverblue/x86_64/os\"\n + \ },\n \"repository\": {\n \"aarch64\": + \"Silverblue/aarch64/os\",\n \"ppc64le\": \"Silverblue/ppc64le/os\",\n + \ \"x86_64\": \"Silverblue/x86_64/os\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"Silverblue\"\n },\n \"Spins\": {\n \"arches\": + [\n \"aarch64\",\n \"x86_64\"\n ],\n + \ \"id\": \"Spins\",\n \"name\": \"Spins\",\n + \ \"paths\": {\n \"images\": {\n \"aarch64\": + \"Spins/aarch64/images\"\n },\n \"isos\": + {\n \"x86_64\": \"Spins/x86_64/iso\"\n }\n + \ },\n \"type\": \"variant\",\n \"uid\": + \"Spins\"\n },\n \"Workstation\": {\n \"arches\": + [\n \"aarch64\",\n \"ppc64le\",\n \"x86_64\"\n + \ ],\n \"id\": \"Workstation\",\n \"name\": + \"Workstation\",\n \"paths\": {\n \"images\": + {\n \"aarch64\": \"Workstation/aarch64/images\"\n },\n + \ \"isos\": {\n \"aarch64\": \"Workstation/aarch64/iso\",\n + \ \"ppc64le\": \"Workstation/ppc64le/iso\",\n \"x86_64\": + \"Workstation/x86_64/iso\"\n }\n },\n \"type\": + \"variant\",\n \"uid\": \"Workstation\"\n }\n }\n + \ }\n}" + headers: + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:53 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHVVfhLCLNHgHklhJwxQAABVA + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=2286 + content-length: + - '14963' + content-type: + - application/json + last-modified: + - Mon, 15 Apr 2024 01:25:53 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs02.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/40/Fedora-40-20240414.0/compose/metadata/images.json + response: + body: + string: "{\n \"header\": {\n \"type\": \"productmd.images\",\n \"version\": + \"1.2\"\n },\n \"payload\": {\n \"compose\": {\n \"date\": + \"20240414\",\n \"id\": \"Fedora-40-20240414.0\",\n \"respin\": + 0,\n \"type\": \"production\"\n },\n \"images\": + {\n \"Cloud\": {\n \"aarch64\": [\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"ab0fcaf5b5bbb4362d3757ff5e3fcea04fb4a4d6c501c19c1a55064194290230\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135599,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-AmazonEC2.aarch64-40-1.14.raw.xz\",\n + \ \"size\": 365970064,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"raw-xz\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"d53dbc3f75e527f12bad03c0b00f6b3ebbc45be3098c37cf932cdb3b2889c0ab\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vhd.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135978,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-Azure.aarch64-40-1.14.vhdfixed.xz\",\n + \ \"size\": 426868528,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"vhd-compressed\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"7153713f2a44607376b45786f609026cd64b2c3e276ee421c70a6f4fea74b501\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.gz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135981,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-GCE.aarch64-40-1.14.tar.gz\",\n \"size\": + 407577788,\n \"subvariant\": \"Cloud_Base\",\n \"type\": + \"docker\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"ebdce26d861a9d15072affe1919ed753ec7015bd97b3a7d0d0df6a10834f7459\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1713135596,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-Generic.aarch64-40-1.14.qcow2\",\n + \ \"size\": 408289280,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"95224953d04b8af9447c5422e6af819e8e47a961476528b9b814dc52d48f424e\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1713135984,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-UEFI-UKI.aarch64-40-1.14.qcow2\",\n + \ \"size\": 400883712,\n \"subvariant\": + \"Cloud_Base_UKI\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"02aca73fe591bcc8e7d02b69d15d58a40110e73c7dd33de819aae3c602e9e1ed\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vagrant-libvirt.box\",\n \"implant_md5\": + null,\n \"mtime\": 1713135601,\n \"path\": + \"Cloud/aarch64/images/Fedora-Cloud-Base-Vagrant-libvirt.aarch64-40-1.14.vagrant.libvirt.box\",\n + \ \"size\": 384506222,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"vagrant-libvirt\",\n + \ \"volume_id\": null\n }\n ],\n + \ \"ppc64le\": [\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"ede915e0461c112b444519559fbed5f9c9f69a72db215a2c2989b99f03f0b08a\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1713136020,\n \"path\": + \"Cloud/ppc64le/images/Fedora-Cloud-Base-Generic.ppc64le-40-1.14.qcow2\",\n + \ \"size\": 398589952,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"808226b31c6c61e08cde77fe7ba61d766f7528c857e7ae8553040c177cbda9a7\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1713135364,\n \"path\": + \"Cloud/s390x/images/Fedora-Cloud-Base-Generic.s390x-40-1.14.qcow2\",\n \"size\": + 367915520,\n \"subvariant\": \"Cloud_Base\",\n \"type\": + \"qcow2\",\n \"volume_id\": null\n }\n + \ ],\n \"x86_64\": [\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"42c682c2c77ead24ea6af989d1fed28d93e2134c85b016674e109ee6f6699446\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135441,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-AmazonEC2.x86_64-40-1.14.raw.xz\",\n + \ \"size\": 366518332,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"raw-xz\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"9630c21d15990a08a793c35d4ef70dbef4bf98d8865dda6081aa14c1a90200e3\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vhd.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135500,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-Azure.x86_64-40-1.14.vhdfixed.xz\",\n + \ \"size\": 437304100,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"vhd-compressed\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"dcc05425e07b87f6f53f142c693bff3d47942fa4b05e1e08ab122db57ba478b5\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.gz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135465,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-GCE.x86_64-40-1.14.tar.gz\",\n \"size\": + 400065273,\n \"subvariant\": \"Cloud_Base\",\n \"type\": + \"docker\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"ac58f3c35b73272d5986fa6d3bc44fd246b45df4c334e99a07b3bbd00684adee\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1713135440,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-40-1.14.qcow2\",\n + \ \"size\": 397475840,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"e58fbd6c147c0eda6eca72491ddc74871c3c3db9b808dc4fcf0d313510c43d81\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1713135438,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-UEFI-UKI.x86_64-40-1.14.qcow2\",\n + \ \"size\": 403767296,\n \"subvariant\": + \"Cloud_Base_UKI\",\n \"type\": \"qcow2\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"35f734b81396b3da3bc75c201cb71458745f7539f22ac1dd11b8268a81fa2915\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vagrant-virtualbox.box\",\n \"implant_md5\": + null,\n \"mtime\": 1713135451,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-VirtualBox.x86_64-40-1.14.vagrant.virtualbox.box\",\n + \ \"size\": 375556047,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"vagrant-virtualbox\",\n + \ \"volume_id\": null\n },\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"359c93a006c378210ae8f3a26eb7333693152ed2a6960904a9113742850ad12b\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vagrant-libvirt.box\",\n \"implant_md5\": + null,\n \"mtime\": 1713135456,\n \"path\": + \"Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-libvirt.x86_64-40-1.14.vagrant.libvirt.box\",\n + \ \"size\": 379222737,\n \"subvariant\": + \"Cloud_Base\",\n \"type\": \"vagrant-libvirt\",\n + \ \"volume_id\": null\n }\n ]\n + \ },\n \"Container\": {\n \"aarch64\": + [\n {\n \"arch\": \"aarch64\",\n + \ \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"e374388c2a158729dcc7e9b4d61507ee0146103119eb711e9b91745e559ee94b\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135329,\n \"path\": + \"Container/aarch64/images/Fedora-Container-Base-Generic-Minimal.aarch64-40-1.14.oci.tar.xz\",\n + \ \"size\": 44594488,\n \"subvariant\": + \"Container_Minimal_Base\",\n \"type\": \"docker\",\n + \ \"volume_id\": null\n },\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"8f7262dfaf502787581c49669d73b3bd0210b5d916f1d669b9a5737ad1a84830\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135489,\n \"path\": + \"Container/aarch64/images/Fedora-Container-Base-Generic.aarch64-40-1.14.oci.tar.xz\",\n + \ \"size\": 80074648,\n \"subvariant\": + \"Container_Base\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"247ec625257f0da9f5ce637e65900e61a127e60f508c8f489c13a14521a6f8a4\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135395,\n \"path\": + \"Container/aarch64/images/Fedora-Container-Toolbox.aarch64-40-1.14.oci.tar.xz\",\n + \ \"size\": 302343672,\n \"subvariant\": + \"Container_Toolbox\",\n \"type\": \"docker\",\n \"volume_id\": + null\n }\n ],\n \"ppc64le\": + [\n {\n \"arch\": \"ppc64le\",\n + \ \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"c8fd5cfab4d0a960a28df32d187c9b83133953aebc8096bd9c1bc37a71b592dd\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135311,\n \"path\": + \"Container/ppc64le/images/Fedora-Container-Base-Generic-Minimal.ppc64le-40-1.14.oci.tar.xz\",\n + \ \"size\": 51102672,\n \"subvariant\": + \"Container_Minimal_Base\",\n \"type\": \"docker\",\n + \ \"volume_id\": null\n },\n {\n + \ \"arch\": \"ppc64le\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"75d9864be59de913596240bca2779697d3a5f18e1a4fc0c8a05aafcb13a0034b\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713136025,\n \"path\": + \"Container/ppc64le/images/Fedora-Container-Base-Generic.ppc64le-40-1.14.oci.tar.xz\",\n + \ \"size\": 87901272,\n \"subvariant\": + \"Container_Base\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"0bbf987a98ebf61b24e89f4a1b6e348edc690e87ee7eb3a410c9bef56f75eece\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713136473,\n \"path\": + \"Container/ppc64le/images/Fedora-Container-Toolbox.ppc64le-40-1.14.oci.tar.xz\",\n + \ \"size\": 307939276,\n \"subvariant\": + \"Container_Toolbox\",\n \"type\": \"docker\",\n \"volume_id\": + null\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"90704b4ce8156cb26e4e92c3eafb69e823c8c837d7567b5287dca7c9e7e4d631\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135252,\n \"path\": + \"Container/s390x/images/Fedora-Container-Base-Generic-Minimal.s390x-40-1.14.oci.tar.xz\",\n + \ \"size\": 46196064,\n \"subvariant\": + \"Container_Minimal_Base\",\n \"type\": \"docker\",\n + \ \"volume_id\": null\n },\n {\n + \ \"arch\": \"s390x\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"3930880dc22d405611f4aaae3526d45024ecf71f5ae0825fd397c176fd61aaa1\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135272,\n \"path\": + \"Container/s390x/images/Fedora-Container-Base-Generic.s390x-40-1.14.oci.tar.xz\",\n + \ \"size\": 81930940,\n \"subvariant\": + \"Container_Base\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"s390x\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"49bc41d3180300abaced1c49be91f2c4050551c4c81652e672c197649519b050\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135340,\n \"path\": + \"Container/s390x/images/Fedora-Container-Toolbox.s390x-40-1.14.oci.tar.xz\",\n + \ \"size\": 285858376,\n \"subvariant\": + \"Container_Toolbox\",\n \"type\": \"docker\",\n \"volume_id\": + null\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"78434b6f41b209a2ed882b0c0f4f9f78a20aa965899c7860da24d02ab11235e3\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135278,\n \"path\": + \"Container/x86_64/images/Fedora-Container-Base-Generic-Minimal.x86_64-40-1.14.oci.tar.xz\",\n + \ \"size\": 45908620,\n \"subvariant\": + \"Container_Minimal_Base\",\n \"type\": \"docker\",\n + \ \"volume_id\": null\n },\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"c5c9dc3320ca474ff40b5a378b443a2b290f258a08e909a43fe81ca7a9bbe966\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135297,\n \"path\": + \"Container/x86_64/images/Fedora-Container-Base-Generic.x86_64-40-1.14.oci.tar.xz\",\n + \ \"size\": 81711536,\n \"subvariant\": + \"Container_Base\",\n \"type\": \"docker\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"335900c5185c273e68da30c461ba4739f0a9692a8013014032c9929396840bf8\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"tar.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135361,\n \"path\": + \"Container/x86_64/images/Fedora-Container-Toolbox.x86_64-40-1.14.oci.tar.xz\",\n + \ \"size\": 323370324,\n \"subvariant\": + \"Container_Toolbox\",\n \"type\": \"docker\",\n \"volume_id\": + null\n }\n ]\n },\n \"Everything\": + {\n \"aarch64\": [\n {\n \"arch\": + \"aarch64\",\n \"bootable\": true,\n \"checksums\": + {\n \"sha256\": \"512d1da43a71cde6fd20a4c2f5cae39fab2966fe6d3ad491964dd0be9b0772fc\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"7bf3fd693814339bad5d61b4c2fe368b\",\n \"mtime\": + 1713118156,\n \"path\": \"Everything/aarch64/iso/Fedora-Everything-netinst-aarch64-40-1.14.iso\",\n + \ \"size\": 837763072,\n \"subvariant\": + \"Everything\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-E-dvd-aarch64-40\"\n }\n ],\n \"ppc64le\": + [\n {\n \"arch\": \"ppc64le\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"sha256\": \"8dc915fabe631cf235820a0e41a8bc6ca30664f5fa5aa3e17bb7b9c064e31afe\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"7d35e0a335a3efe6d8f15e7d8cfb9d16\",\n \"mtime\": + 1713119671,\n \"path\": \"Everything/ppc64le/iso/Fedora-Everything-netinst-ppc64le-40-1.14.iso\",\n + \ \"size\": 802918400,\n \"subvariant\": + \"Everything\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-E-dvd-ppc64le-40\"\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"a9cf7091294710615c10fba7a3ce25da6de516cccf77c6956e8ce5e883704307\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"24a9ee5e8abda63188ee8c7bedc2cec5\",\n \"mtime\": + 1713118230,\n \"path\": \"Everything/s390x/iso/Fedora-Everything-netinst-s390x-40-1.14.iso\",\n + \ \"size\": 500766720,\n \"subvariant\": + \"Everything\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-E-dvd-s390x-40\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"sha256\": \"4d1c0a7dda6c1d21a1483acb6c7914193158921113f947c5a0519d26bcc548b2\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"76fd4488e0831e52f521992d29dcc53d\",\n \"mtime\": + 1713118558,\n \"path\": \"Everything/x86_64/iso/Fedora-Everything-netinst-x86_64-40-1.14.iso\",\n + \ \"size\": 812255232,\n \"subvariant\": + \"Everything\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-E-dvd-x86_64-40\"\n }\n ]\n },\n + \ \"Kinoite\": {\n \"aarch64\": [\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"d3f5cea671ea0fed7f036091be0514bf290340e09cea6232a907b747c6a24217\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"ociarchive\",\n \"implant_md5\": + null,\n \"mtime\": 1713120245,\n \"path\": + \"Kinoite/aarch64/images/Fedora-Kinoite-40.1.14.ociarchive\",\n \"size\": + 2644884992,\n \"subvariant\": \"Kinoite\",\n \"type\": + \"ociarchive\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"6fb0687148f494ba273eb9e278bcf269f88be7d1783c6e380067d540a995fbda\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"e5bf9a93a95b4d4660cdcbc8af891ec7\",\n \"mtime\": + 1713133789,\n \"path\": \"Kinoite/aarch64/iso/Fedora-Kinoite-ostree-aarch64-40-1.14.iso\",\n + \ \"size\": 4161081344,\n \"subvariant\": + \"Kinoite\",\n \"type\": \"dvd-ostree\",\n \"volume_id\": + \"Fedora-Knt-ostree-aarch64-40\"\n }\n ],\n + \ \"ppc64le\": [\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"7ee09b442e2bc77cf9516315724c37e33c7ca729080db56db14e71c2a7e16be8\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"ociarchive\",\n \"implant_md5\": + null,\n \"mtime\": 1713127760,\n \"path\": + \"Kinoite/ppc64le/images/Fedora-Kinoite-40.1.14.ociarchive\",\n \"size\": + 2489408000,\n \"subvariant\": \"Kinoite\",\n \"type\": + \"ociarchive\",\n \"volume_id\": null\n }\n + \ ],\n \"x86_64\": [\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"0afed26d6101f52f2481230978f1491401a332f6d427bdefe657248e09d4981d\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"ociarchive\",\n \"implant_md5\": + null,\n \"mtime\": 1713120471,\n \"path\": + \"Kinoite/x86_64/images/Fedora-Kinoite-40.1.14.ociarchive\",\n \"size\": + 2659151872,\n \"subvariant\": \"Kinoite\",\n \"type\": + \"ociarchive\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"c6abc4d88de97fd62f42b299cd2879a0e68d9552c9cfd3cc98753a1ff27be16c\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"f66598e2003985c75bd9f6e30680fddd\",\n \"mtime\": + 1713134646,\n \"path\": \"Kinoite/x86_64/iso/Fedora-Kinoite-ostree-x86_64-40-1.14.iso\",\n + \ \"size\": 4181080064,\n \"subvariant\": + \"Kinoite\",\n \"type\": \"dvd-ostree\",\n \"volume_id\": + \"Fedora-Knt-ostree-x86_64-40\"\n }\n ]\n + \ },\n \"Labs\": {\n \"aarch64\": [\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"9c3f177cf24a802eaf8ce616b3b8e349b2850f7ea9692c05e9bf068255de1a7a\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713138953,\n \"path\": + \"Labs/aarch64/images/Fedora-Python-Classroom-40-1.14.aarch64.raw.xz\",\n + \ \"size\": 2709743384,\n \"subvariant\": + \"Python_Classroom\",\n \"type\": \"raw-xz\",\n \"volume_id\": + null\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"163ed90b1c47d8428959c825ea92974fe153714b6c3ca438c91c0b316645baef\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vagrant-libvirt.box\",\n \"implant_md5\": + null,\n \"mtime\": 1713136066,\n \"path\": + \"Labs/x86_64/images/Fedora-Python-Classroom-Vagrant-40-1.14.x86_64.vagrant-libvirt.box\",\n + \ \"size\": 1547788429,\n \"subvariant\": + \"Python_Classroom\",\n \"type\": \"vagrant-libvirt\",\n + \ \"volume_id\": null\n },\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"aa4da25b27e82add30e5eb0c8526af28963eafcde6f3c7c6a6a96122819e1389\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vagrant-virtualbox.box\",\n \"implant_md5\": + null,\n \"mtime\": 1713136106,\n \"path\": + \"Labs/x86_64/images/Fedora-Python-Classroom-Vagrant-40-1.14.x86_64.vagrant-virtualbox.box\",\n + \ \"size\": 1569054720,\n \"subvariant\": + \"Python_Classroom\",\n \"type\": \"vagrant-virtualbox\",\n + \ \"volume_id\": null\n },\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"78c2cfe481c9ef549eca5808ffc9f0a21a85ad2bb4c444369740fd8d9dd32b6f\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vagrant-libvirt.box\",\n \"implant_md5\": + null,\n \"mtime\": 1713137373,\n \"path\": + \"Labs/x86_64/images/Fedora-Scientific-Vagrant-40-1.14.x86_64.vagrant-libvirt.box\",\n + \ \"size\": 4930855083,\n \"subvariant\": + \"Scientific\",\n \"type\": \"vagrant-libvirt\",\n + \ \"volume_id\": null\n },\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"ab61c41a4199165ee85b00b1bb3b1f5c27f7d10603ab13e4116e6d27951406bf\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"vagrant-virtualbox.box\",\n \"implant_md5\": + null,\n \"mtime\": 1713137485,\n \"path\": + \"Labs/x86_64/images/Fedora-Scientific-Vagrant-40-1.14.x86_64.vagrant-virtualbox.box\",\n + \ \"size\": 4987146240,\n \"subvariant\": + \"Scientific\",\n \"type\": \"vagrant-virtualbox\",\n + \ \"volume_id\": null\n },\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"af586cefa44b7f9c8b755c121e7d5c99f3d88beb39721daec7f3a626622b64fb\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136830,\n \"path\": + \"Labs/x86_64/iso/Fedora-Astronomy_KDE-Live-x86_64-40-1.14.iso\",\n \"size\": + 4634284032,\n \"subvariant\": \"Astronomy_KDE\",\n + \ \"type\": \"live\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": true,\n \"checksums\": + {\n \"sha256\": \"3e17b61870224ca92f85cb031070c4a969a07ad7dacfaacbfd5b70ecb32331c1\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136579,\n \"path\": + \"Labs/x86_64/iso/Fedora-Comp_Neuro-Live-x86_64-40-1.14.iso\",\n \"size\": + 3074414592,\n \"subvariant\": \"Comp_Neuro\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"d99ad7ec55a27393dcb846a333b0e74d5d8b0c70a335b4a0a98ff6e850c852aa\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136822,\n \"path\": + \"Labs/x86_64/iso/Fedora-Games-Live-x86_64-40-1.14.iso\",\n \"size\": + 6890553344,\n \"subvariant\": \"Games\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"816a7d24aa1afc5e875a33e319204a7cd12a7780ae33ab019ee1c5141941611f\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136478,\n \"path\": + \"Labs/x86_64/iso/Fedora-Jam_KDE-Live-x86_64-40-1.14.iso\",\n \"size\": + 3520172032,\n \"subvariant\": \"Jam_KDE\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"5893394eccd8228f9e4f708e76f6cdb77f61ba79c6d19a1dd4a11776e824afe6\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136343,\n \"path\": + \"Labs/x86_64/iso/Fedora-Python-Classroom-Live-x86_64-40-1.14.iso\",\n \"size\": + 2346051584,\n \"subvariant\": \"Python_Classroom\",\n + \ \"type\": \"live\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": true,\n \"checksums\": + {\n \"sha256\": \"c8de28ddb4667d57dc9527d2a7b445ec77861e129b3354251068a0ca9a2e640d\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136335,\n \"path\": + \"Labs/x86_64/iso/Fedora-Robotics-Live-x86_64-40-1.14.iso\",\n \"size\": + 3168759808,\n \"subvariant\": \"Robotics\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"4cfb06b40a5b7fbbc46794a8a1fa89f819712681fc2b8d23d3beb4b394cea0db\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713137226,\n \"path\": + \"Labs/x86_64/iso/Fedora-Scientific_KDE-Live-x86_64-40-1.14.iso\",\n \"size\": + 5545820160,\n \"subvariant\": \"Scientific_KDE\",\n + \ \"type\": \"live\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": true,\n \"checksums\": + {\n \"sha256\": \"2a2e55d2fb08c905e945e259d8b5cab55701c3dbdec717d178d7fb4a5da45608\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136333,\n \"path\": + \"Labs/x86_64/iso/Fedora-Security-Live-x86_64-40-1.14.iso\",\n \"size\": + 2463766528,\n \"subvariant\": \"Security\",\n \"type\": + \"live\",\n \"volume_id\": null\n }\n + \ ]\n },\n \"Onyx\": {\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"511c2f46c298d1cff1df08b770d23f6fcd25d252d19ca837732e349f12086bb1\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"ociarchive\",\n \"implant_md5\": + null,\n \"mtime\": 1713134693,\n \"path\": + \"Onyx/x86_64/images/Fedora-Onyx-40.1.14.ociarchive\",\n \"size\": + 2201719808,\n \"subvariant\": \"Onyx\",\n \"type\": + \"ociarchive\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"b196159ab8bf2ced06204a13925f330546f9b0f3db253f6b399a3a5dac517acb\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"6d1aaecf42d3d0cc855324173ccf6859\",\n \"mtime\": + 1713133807,\n \"path\": \"Onyx/x86_64/iso/Fedora-Onyx-ostree-x86_64-40-1.14.iso\",\n + \ \"size\": 2701541376,\n \"subvariant\": + \"Onyx\",\n \"type\": \"dvd-ostree\",\n \"volume_id\": + \"Fedora-Onyx-ostree-x86_64-40\"\n }\n ]\n + \ },\n \"Sericea\": {\n \"aarch64\": [\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"216c52c960f4a7da1a5fc0056ee138e25cef3f41d2131501089cb3486aaff35e\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"ociarchive\",\n \"implant_md5\": + null,\n \"mtime\": 1713118667,\n \"path\": + \"Sericea/aarch64/images/Fedora-Sericea-40.1.14.ociarchive\",\n \"size\": + 1987797504,\n \"subvariant\": \"Sericea\",\n \"type\": + \"ociarchive\",\n \"volume_id\": null\n }\n + \ ],\n \"x86_64\": [\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"f5d797d8ff27771b95aedd418eebc0d271904505e9156444c8a0c7c5dca0a08a\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"ociarchive\",\n \"implant_md5\": + null,\n \"mtime\": 1713119001,\n \"path\": + \"Sericea/x86_64/images/Fedora-Sericea-40.1.14.ociarchive\",\n \"size\": + 2001887744,\n \"subvariant\": \"Sericea\",\n \"type\": + \"ociarchive\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"9b8cce1ecbaba24a7e8db1b401b240382954acee5fb9993ad4b536f42f9186a6\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"030db49ce5182ba4e71c717b950598fb\",\n \"mtime\": + 1713133600,\n \"path\": \"Sericea/x86_64/iso/Fedora-Sericea-ostree-x86_64-40-1.14.iso\",\n + \ \"size\": 2536486912,\n \"subvariant\": + \"Sericea\",\n \"type\": \"dvd-ostree\",\n \"volume_id\": + \"Fedora-Src-ostree-x86_64-40\"\n }\n ]\n + \ },\n \"Server\": {\n \"aarch64\": [\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"a624d7275bf8538ee875a5f69b60b04d9114ad6ea918ecad160dde24b4b75b35\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713137407,\n \"path\": + \"Server/aarch64/images/Fedora-Server-40-1.14.aarch64.raw.xz\",\n \"size\": + 1108904380,\n \"subvariant\": \"Server\",\n \"type\": + \"raw-xz\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"2fed4e38a927824704d6bd88466b3b938543b335669e470981fa123f965f1c68\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1713136435,\n \"path\": + \"Server/aarch64/images/Fedora-Server-KVM-40-1.14.aarch64.qcow2\",\n \"size\": + 672661504,\n \"subvariant\": \"Server_KVM\",\n \"type\": + \"qcow2\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"9146b9563d68c9c9cc53fac75f5e9caefaff8d0e350cd6c4312553deb99b5430\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"1ec36133552bcf746633b30e19b7b0eb\",\n \"mtime\": + 1713135235,\n \"path\": \"Server/aarch64/iso/Fedora-Server-dvd-aarch64-40-1.14.iso\",\n + \ \"size\": 2535260160,\n \"subvariant\": + \"Server\",\n \"type\": \"dvd\",\n \"volume_id\": + \"Fedora-S-dvd-aarch64-40\"\n },\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"690731ac6abba81413d97517baa80841cb122d07b296ec3f2935848be45be8fe\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"5a1006b4b30a1ad1b21d4d756c9495cd\",\n \"mtime\": + 1713118154,\n \"path\": \"Server/aarch64/iso/Fedora-Server-netinst-aarch64-40-1.14.iso\",\n + \ \"size\": 837820416,\n \"subvariant\": + \"Server\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-S-dvd-aarch64-40\"\n }\n ],\n \"ppc64le\": + [\n {\n \"arch\": \"ppc64le\",\n + \ \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"b5817bcabd28f336f457cc7cafedeef963dc6e1b3227786b92446a8f9bade549\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1713143951,\n \"path\": + \"Server/ppc64le/images/Fedora-Server-KVM-40-1.14.ppc64le.qcow2\",\n \"size\": + 675479552,\n \"subvariant\": \"Server_KVM\",\n \"type\": + \"qcow2\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"ppc64le\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"4fa5eafedf7668093f5b10dbbefa8f3d49269036af09dd35f17247d1aed8c0a6\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"dfe900eaeea376d841d11cecdfa6d01e\",\n \"mtime\": + 1713135288,\n \"path\": \"Server/ppc64le/iso/Fedora-Server-dvd-ppc64le-40-1.14.iso\",\n + \ \"size\": 2357985280,\n \"subvariant\": + \"Server\",\n \"type\": \"dvd\",\n \"volume_id\": + \"Fedora-S-dvd-ppc64le-40\"\n },\n {\n + \ \"arch\": \"ppc64le\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"e24354b40722b7a1964e50abae0efc1030faa5605503fcc371bece1897b289eb\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"178c3a1225edc5110692bb32ebae55db\",\n \"mtime\": + 1713118384,\n \"path\": \"Server/ppc64le/iso/Fedora-Server-netinst-ppc64le-40-1.14.iso\",\n + \ \"size\": 802988032,\n \"subvariant\": + \"Server\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-S-dvd-ppc64le-40\"\n }\n ],\n \"s390x\": + [\n {\n \"arch\": \"s390x\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"091c232a7301be14e19c76ce9a0c1cbd2be2c4157884a731e1fc4f89e7455a5f\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1713135580,\n \"path\": + \"Server/s390x/images/Fedora-Server-KVM-40-1.14.s390x.qcow2\",\n \"size\": + 646119424,\n \"subvariant\": \"Server_KVM\",\n \"type\": + \"qcow2\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"5e1844fa681ddedcd69ef10a54b4c7bf0dadcb335027b9982c26d53acc9c0f61\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"a32cc4d8ca8f0e1074a6231d5a77a678\",\n \"mtime\": + 1713135471,\n \"path\": \"Server/s390x/iso/Fedora-Server-dvd-s390x-40-1.14.iso\",\n + \ \"size\": 1990197248,\n \"subvariant\": + \"Server\",\n \"type\": \"dvd\",\n \"volume_id\": + \"Fedora-S-dvd-s390x-40\"\n },\n {\n + \ \"arch\": \"s390x\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"6daee5daf5367802633ca8262e122df74ce0cbdab0e39a6ecb6ad4c18bd9afda\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"a25987f92bde5966a9decffdb1681cd1\",\n \"mtime\": + 1713118230,\n \"path\": \"Server/s390x/iso/Fedora-Server-netinst-s390x-40-1.14.iso\",\n + \ \"size\": 500807680,\n \"subvariant\": + \"Server\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-S-dvd-s390x-40\"\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"a16ba1f26aaf010f62bd94e9f772079353e4bbcffe2c8078f1dfab8aeb848851\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"qcow2\",\n \"implant_md5\": + null,\n \"mtime\": 1713135735,\n \"path\": + \"Server/x86_64/images/Fedora-Server-KVM-40-1.14.x86_64.qcow2\",\n \"size\": + 658702336,\n \"subvariant\": \"Server_KVM\",\n \"type\": + \"qcow2\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"32d9ab1798fc8106a0b06e873bdcd83a3efea8412c9401dfe4097347ed0cfc65\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"cff4f63cc29f4c5a34b3187e643646d4\",\n \"mtime\": + 1713135246,\n \"path\": \"Server/x86_64/iso/Fedora-Server-dvd-x86_64-40-1.14.iso\",\n + \ \"size\": 2612854784,\n \"subvariant\": + \"Server\",\n \"type\": \"dvd\",\n \"volume_id\": + \"Fedora-S-dvd-x86_64-40\"\n },\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"1b4f163c55aa9b35bb08f3d465534aa68899a4984b8ba8976b1e7b28297b61fe\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"da6ff3e6d0ffe4bae7cea6062f6fe307\",\n \"mtime\": + 1713119419,\n \"path\": \"Server/x86_64/iso/Fedora-Server-netinst-x86_64-40-1.14.iso\",\n + \ \"size\": 812312576,\n \"subvariant\": + \"Server\",\n \"type\": \"boot\",\n \"volume_id\": + \"Fedora-S-dvd-x86_64-40\"\n }\n ]\n },\n + \ \"Silverblue\": {\n \"aarch64\": [\n {\n + \ \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"7f7c6839aa83c03c388b37f6b90c57c799a56a1eab45443a57400b410ac591d1\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"ociarchive\",\n \"implant_md5\": + null,\n \"mtime\": 1713119502,\n \"path\": + \"Silverblue/aarch64/images/Fedora-Silverblue-40.1.14.ociarchive\",\n \"size\": + 2108361216,\n \"subvariant\": \"Silverblue\",\n \"type\": + \"ociarchive\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"c482885894c0ff722c305ca36259dc59d94a36582053b64d6042287c103c9c1c\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"0f104e39971464627679ed12a1fb8d9b\",\n \"mtime\": + 1713133688,\n \"path\": \"Silverblue/aarch64/iso/Fedora-Silverblue-ostree-aarch64-40-1.14.iso\",\n + \ \"size\": 3573305344,\n \"subvariant\": + \"Silverblue\",\n \"type\": \"dvd-ostree\",\n \"volume_id\": + \"Fedora-SB-ostree-aarch64-40\"\n }\n ],\n + \ \"ppc64le\": [\n {\n \"arch\": + \"ppc64le\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"32107335909c0bb98c195c1bcd1b3c7b515409ac3cd9460c020a5dd8d8ca9a1d\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"ociarchive\",\n \"implant_md5\": + null,\n \"mtime\": 1713127903,\n \"path\": + \"Silverblue/ppc64le/images/Fedora-Silverblue-40.1.14.ociarchive\",\n \"size\": + 2049432576,\n \"subvariant\": \"Silverblue\",\n \"type\": + \"ociarchive\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"ppc64le\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"cbadcf23a74783bb61f0907329310ad4ac07e7b06659f33afa9106f896fafb25\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"3f83f88976c5551c67b6e9ac831f7faf\",\n \"mtime\": + 1713134909,\n \"path\": \"Silverblue/ppc64le/iso/Fedora-Silverblue-ostree-ppc64le-40-1.14.iso\",\n + \ \"size\": 3499855872,\n \"subvariant\": + \"Silverblue\",\n \"type\": \"dvd-ostree\",\n \"volume_id\": + \"Fedora-SB-ostree-ppc64le-40\"\n }\n ],\n + \ \"x86_64\": [\n {\n \"arch\": + \"x86_64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"706ddc97e9cc8a35d3ce457370aecae032f382bffd0de404aeba062f74940d4c\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"ociarchive\",\n \"implant_md5\": + null,\n \"mtime\": 1713119572,\n \"path\": + \"Silverblue/x86_64/images/Fedora-Silverblue-40.1.14.ociarchive\",\n \"size\": + 2124795904,\n \"subvariant\": \"Silverblue\",\n \"type\": + \"ociarchive\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"8f49c9880cf0eb24e0461498d27d3d5134f056975c478f7d0febb1b9e5d1edbb\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + \"4cc0e9c55bdaad116a611d41223e5d54\",\n \"mtime\": + 1713134394,\n \"path\": \"Silverblue/x86_64/iso/Fedora-Silverblue-ostree-x86_64-40-1.14.iso\",\n + \ \"size\": 3582482432,\n \"subvariant\": + \"Silverblue\",\n \"type\": \"dvd-ostree\",\n \"volume_id\": + \"Fedora-SB-ostree-x86_64-40\"\n }\n ]\n + \ },\n \"Spins\": {\n \"aarch64\": [\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"3840ebba322b9a24867a777c472f510a47193db90cf96a51da074758cc5299e1\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713140460,\n \"path\": + \"Spins/aarch64/images/Fedora-KDE-40-1.14.aarch64.raw.xz\",\n \"size\": + 3297951536,\n \"subvariant\": \"KDE\",\n \"type\": + \"raw-xz\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"9a0aa0a82a10edc184f67c1c2609f11f06a2ea43dd6801863df4189dd647e62b\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713136738,\n \"path\": + \"Spins/aarch64/images/Fedora-LXQt-40-1.14.aarch64.raw.xz\",\n \"size\": + 1995815572,\n \"subvariant\": \"LXQt\",\n \"type\": + \"raw-xz\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"36920c0f7a0ae00c2542579f9b600108f77de228a892417ebf8cb651123ad1e8\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713135848,\n \"path\": + \"Spins/aarch64/images/Fedora-Minimal-40-1.14.aarch64.raw.xz\",\n \"size\": + 912716876,\n \"subvariant\": \"Minimal\",\n \"type\": + \"raw-xz\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"27a015a74dd7cdfd8a2a13cf0fec521e04f04249e5430e26bc698719f6df60b1\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713136685,\n \"path\": + \"Spins/aarch64/images/Fedora-Phosh-40-1.14.aarch64.raw.xz\",\n \"size\": + 2086621740,\n \"subvariant\": \"Phosh\",\n \"type\": + \"raw-xz\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"a4cdd47d37438bbd90ddf1f9ecde7ed94765788381afa4a93412a22301014c87\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713136186,\n \"path\": + \"Spins/aarch64/images/Fedora-SoaS-40-1.14.aarch64.raw.xz\",\n \"size\": + 1720404580,\n \"subvariant\": \"SoaS\",\n \"type\": + \"raw-xz\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"aarch64\",\n \"bootable\": + false,\n \"checksums\": {\n \"sha256\": + \"8622a0f05cc09ec22bd63bc3712b552cee3512f2b135fa51d08a745e4b0169ce\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713136735,\n \"path\": + \"Spins/aarch64/images/Fedora-Xfce-40-1.14.aarch64.raw.xz\",\n \"size\": + 2282925736,\n \"subvariant\": \"Xfce\",\n \"type\": + \"raw-xz\",\n \"volume_id\": null\n }\n + \ ],\n \"x86_64\": [\n {\n + \ \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"18a2876d031fd58d00d9a37d3a823caa03cf7059309bed1de79eb3a46dc4bc21\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136139,\n \"path\": + \"Spins/x86_64/iso/Fedora-Budgie-Live-x86_64-40-1.14.iso\",\n \"size\": + 2146633728,\n \"subvariant\": \"Budgie\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"081ac2402d3e2e704d36ee6aacd67ba631d1939e0c35cf517e996dbb70117735\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136218,\n \"path\": + \"Spins/x86_64/iso/Fedora-Cinnamon-Live-x86_64-40-1.14.iso\",\n \"size\": + 2558238720,\n \"subvariant\": \"Cinnamon\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"8b9da20cfa947b16c8f0c5187e9b4389e13821e31b062688a48cf1b3028c335c\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136407,\n \"path\": + \"Spins/x86_64/iso/Fedora-KDE-Live-x86_64-40-1.14.iso\",\n \"size\": + 2645645312,\n \"subvariant\": \"KDE\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"3be326068be6bd7e98d7e7e89f4427648fe83484ecd36e1e77304af1369d1920\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713135996,\n \"path\": + \"Spins/x86_64/iso/Fedora-LXDE-Live-x86_64-40-1.14.iso\",\n \"size\": + 1741191168,\n \"subvariant\": \"LXDE\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"ef0fbed423acc7484b6fea14a062c41a3026ca93d71edf28debe2d883f9ce61c\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136088,\n \"path\": + \"Spins/x86_64/iso/Fedora-LXQt-Live-x86_64-40-1.14.iso\",\n \"size\": + 1845794816,\n \"subvariant\": \"LXQt\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"3242eb53dd2d0bad66dff04f7e54848aa750910171a110e2f8677aa23b8e84e0\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136230,\n \"path\": + \"Spins/x86_64/iso/Fedora-MATE_Compiz-Live-x86_64-40-1.14.iso\",\n \"size\": + 2454198272,\n \"subvariant\": \"Mate\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"4287b380b4be2f2c421178b9dfdcaf8c64ed58e343baa7d1d482c4f3481975fb\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136027,\n \"path\": + \"Spins/x86_64/iso/Fedora-SoaS-Live-x86_64-40-1.14.iso\",\n \"size\": + 1440874496,\n \"subvariant\": \"SoaS\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"6974428b65153156e133fe0165cdf5cb4420b987fe27c53218480414b685e602\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713135976,\n \"path\": + \"Spins/x86_64/iso/Fedora-Sway-Live-x86_64-40-1.14.iso\",\n \"size\": + 1637679104,\n \"subvariant\": \"Sway\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"519db49a21587c007b8135cfc8fba470951937d2f7edc01a8f4b96abc772370c\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136105,\n \"path\": + \"Spins/x86_64/iso/Fedora-Xfce-Live-x86_64-40-1.14.iso\",\n \"size\": + 1889988608,\n \"subvariant\": \"Xfce\",\n \"type\": + \"live\",\n \"volume_id\": null\n },\n + \ {\n \"arch\": \"x86_64\",\n \"bootable\": + true,\n \"checksums\": {\n \"sha256\": + \"1f55028b79c6633178a0106fdb3d34ccb489f1dc039c5e96a829cea28624d7a8\"\n },\n + \ \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136412,\n \"path\": + \"Spins/x86_64/iso/Fedora-i3-Live-x86_64-40-1.14.iso\",\n \"size\": + 1617053696,\n \"subvariant\": \"i3\",\n \"type\": + \"live\",\n \"volume_id\": null\n }\n + \ ]\n },\n \"Workstation\": {\n \"aarch64\": + [\n {\n \"arch\": \"aarch64\",\n + \ \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"edaaf8e78db25c81c5600ef65b1ed2c85417ba7b51c3a5785d5acff6e8c90721\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"raw.xz\",\n \"implant_md5\": + null,\n \"mtime\": 1713137105,\n \"path\": + \"Workstation/aarch64/images/Fedora-Workstation-40-1.14.aarch64.raw.xz\",\n + \ \"size\": 2622667416,\n \"subvariant\": + \"Workstation\",\n \"type\": \"raw-xz\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"aarch64\",\n \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"ebb1edbf16da88ed3fb804eca01625fb4341f59ce747c6b89ec00af58a9a6158\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713138011,\n \"path\": + \"Workstation/aarch64/iso/Fedora-Workstation-Live-osb-40-1.14.aarch64.iso\",\n + \ \"size\": 2582759424,\n \"subvariant\": + \"Workstation\",\n \"type\": \"live-osbuild\",\n \"volume_id\": + null\n }\n ],\n \"ppc64le\": + [\n {\n \"arch\": \"ppc64le\",\n + \ \"bootable\": true,\n \"checksums\": + {\n \"sha256\": \"d015fe246beac888433a1e5b3bc314d29946e91a4df90bb24d1c7b1903e8edf4\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713138621,\n \"path\": + \"Workstation/ppc64le/iso/Fedora-Workstation-Live-ppc64le-40-1.14.iso\",\n + \ \"size\": 2228242432,\n \"subvariant\": + \"Workstation\",\n \"type\": \"live\",\n \"volume_id\": + null\n }\n ],\n \"x86_64\": + [\n {\n \"arch\": \"x86_64\",\n + \ \"bootable\": false,\n \"checksums\": + {\n \"sha256\": \"8d3cb4d99f27eb932064915bc9ad34a7529d5d073a390896152a8a899518573f\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713138847,\n \"path\": + \"Workstation/x86_64/iso/Fedora-Workstation-Live-osb-40-1.14.x86_64.iso\",\n + \ \"size\": 2623733760,\n \"subvariant\": + \"Workstation\",\n \"type\": \"live-osbuild\",\n \"volume_id\": + null\n },\n {\n \"arch\": + \"x86_64\",\n \"bootable\": true,\n \"checksums\": + {\n \"sha256\": \"dd1faca950d1a8c3d169adf2df4c3644ebb62f8aac04c401f2393e521395d613\"\n + \ },\n \"disc_count\": 1,\n \"disc_number\": + 1,\n \"format\": \"iso\",\n \"implant_md5\": + null,\n \"mtime\": 1713136256,\n \"path\": + \"Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-40-1.14.iso\",\n \"size\": + 2295853056,\n \"subvariant\": \"Workstation\",\n \"type\": + \"live\",\n \"volume_id\": null\n }\n + \ ]\n }\n }\n }\n}" + headers: + Connection: + - close + Date: + - Thu, 30 May 2024 00:24:53 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHVfrbPBQAVrZAyqhcvAAABwU + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + accept-ranges: + - bytes + apptime: + - D=2008 + content-length: + - '78266' + content-type: + - application/json + last-modified: + - Mon, 15 Apr 2024 01:25:53 GMT + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + x-fedora-appserver: + - kojipkgs02.iad2.fedoraproject.org + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, br + Connection: + - keep-alive + User-Agent: + - python-requests/2.31.0 + method: GET + uri: https://bodhi.fedoraproject.org/releases/F40 + response: + body: + string: '{"name": "F40", "long_name": "Fedora 40", "version": "40", "id_prefix": + "FEDORA", "branch": "f40", "dist_tag": "f40", "stable_tag": "f40-updates", + "testing_tag": "f40-updates-testing", "candidate_tag": "f40-updates-candidate", + "pending_signing_tag": "f40-signing-pending", "pending_testing_tag": "f40-updates-testing-pending", + "pending_stable_tag": "f40-updates-pending", "override_tag": "f40-override", + "mail_template": "fedora_errata_template", "state": "current", "composed_by_bodhi": + true, "create_automatic_updates": false, "package_manager": "dnf", "testing_repository": + "updates-testing", "released_on": null, "eol": "2025-05-13", "setting_status": + null}' + headers: + AppTime: + - D=7246945 + Connection: + - Keep-Alive + Date: + - Thu, 30 May 2024 00:25:01 GMT + Keep-Alive: + - timeout=15, max=500 + Referrer-Policy: + - same-origin + Server: + - gunicorn + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + - nosniff + X-Fedora-ProxyServer: + - proxy04.fedoraproject.org + X-Fedora-RequestID: + - ZlfHVl3P06DD75b0dzPdeAAABYc + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '661' + content-type: + - application/json + set-cookie: + - 1caa5c4232b1a1f24f8c4f6e0f496284=cbca343a697424f4648bad1112e1f4a5; path=/; + HttpOnly; Secure; SameSite=None + x-content-type-options: + - nosniff + - nosniff + status: + code: 200 + message: OK +version: 1 diff --git a/tests/fixtures/cassettes/test_containers_registries_not_configured.yaml b/tests/fixtures/cassettes/test_containers_registries_not_configured.yaml new file mode 100644 index 0000000..7093591 --- /dev/null +++ b/tests/fixtures/cassettes/test_containers_registries_not_configured.yaml @@ -0,0 +1,683 @@ +interactions: +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/compose + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2376 + Connection: + - close + Date: + - Thu, 30 May 2024 00:25:01 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHXU0FjxMk9tie55ZJIwAACwM + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/compose + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2643 + Connection: + - close + Date: + - Thu, 30 May 2024 00:25:01 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHXWmti5Q4-osOpGW0QgAAA8s + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/COMPOSE_ID + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=3161 + Connection: + - close + Date: + - Thu, 30 May 2024 00:25:02 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHXo16DgLUPyhgv1bd5QAAAQ0 + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/COMPOSE_ID + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=3629 + Connection: + - close + Date: + - Thu, 30 May 2024 00:25:02 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHXgube8DRnI9SdhUm2QAABgU + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/COMPOSE_ID + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2573 + Connection: + - close + Date: + - Thu, 30 May 2024 00:25:02 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHXgube8DRnI9SdhUm7QAABhg + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/COMPOSE_ID + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=5483 + Connection: + - close + Date: + - Thu, 30 May 2024 00:25:02 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHXvYPQ6beqzZJoe4JqAAACsc + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/COMPOSE_ID + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=6606 + Connection: + - close + Date: + - Thu, 30 May 2024 00:25:03 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy01.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHXzuWhzpWHAjyjkso3gAABJE + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/compose + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=3372 + Connection: + - close + Date: + - Thu, 30 May 2024 00:25:03 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHX2czgTxQbJmZVvtIWQAABAA + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Host: + - kojipkgs.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20240501.n.0/compose + response: + body: + string: ' + + + + 404 Not Found + + + +

Not Found

+ +

The requested URL was not found on this server.

+ + + + ' + headers: + AppTime: + - D=2843 + Connection: + - close + Date: + - Thu, 30 May 2024 00:25:03 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy10.iad2.fedoraproject.org + X-Fedora-RequestID: + - ZlfHX3NjG4RPecDt0yhy9AAAB8M + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '196' + content-type: + - text/html; charset=iso-8859-1 + strict-transport-security: + - max-age=31536000; includeSubDomains; preload + - max-age=31536000; includeSubDomains; preload + status: + code: 404 + message: Not Found +- request: + body: null + headers: + Connection: + - close + Content-Type: + - application/json + Host: + - pdc.fedoraproject.org + User-Agent: + - Python-urllib/3.12 + method: GET + uri: https://pdc.fedoraproject.org/rest_api/v1/compose-images/Fedora-Rawhide-20240501.n.0/?page=1 + response: + body: + string: '{"header":{"version":"1.2","type":"productmd.images"},"payload":{"images":{"Workstation":{"aarch64":[{"subvariant":"Workstation","format":"raw.xz","volume_id":null,"mtime":1714551577,"checksums":{"sha256":"169a31fd5cf10faafaba87b2342ad6475bc1d20ce3e71946d0fa2694bd4484fe"},"arch":"aarch64","size":2806539876,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Workstation/aarch64/images/Fedora-Workstation-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"Workstation","format":"iso","volume_id":null,"mtime":1714550825,"checksums":{"sha256":"2e6757ccad552f5929f1a69777f3a8166985953b0331ab6386ab6af8ca0e8322"},"arch":"aarch64","size":2609154048,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Workstation/aarch64/iso/Fedora-Workstation-Live-osb-Rawhide-20240501.n.0.aarch64.iso","type":"live-osbuild"}],"x86_64":[{"subvariant":"Workstation","format":"iso","volume_id":null,"mtime":1714551289,"checksums":{"sha256":"81584c47d50304bf1a659c17af7b761891e8f70545eb97e1ae0cc7ff511f79ee"},"arch":"x86_64","size":2654552064,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Workstation/x86_64/iso/Fedora-Workstation-Live-osb-Rawhide-20240501.n.0.x86_64.iso","type":"live-osbuild"},{"subvariant":"Workstation","format":"iso","volume_id":null,"mtime":1714549615,"checksums":{"sha256":"264d04c31714ba0734940819b8bdc7863701f9cd7a16e553b5b6a5db121effa7"},"arch":"x86_64","size":2314934272,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"}],"ppc64le":[{"subvariant":"Workstation","format":"iso","volume_id":null,"mtime":1714549972,"checksums":{"sha256":"1f19f95713627cfbb487cb32ccaf0dcaeb49717e23649c6244ace0e71f6932fe"},"arch":"ppc64le","size":2265411584,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Workstation/ppc64le/iso/Fedora-Workstation-Live-ppc64le-Rawhide-20240501.n.0.iso","type":"live"}]},"Container":{"aarch64":[{"subvariant":"Container_Minimal_Base","format":"tar.xz","volume_id":null,"mtime":1714548151,"checksums":{"sha256":"570b6e8f5e642df8541add9734ce6263396ac8b31410d334affd4f241161bb0e"},"arch":"aarch64","size":45765840,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/aarch64/images/Fedora-Container-Base-Generic-Minimal.aarch64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Base","format":"tar.xz","volume_id":null,"mtime":1714548144,"checksums":{"sha256":"4410600bf5c55c2ed2d892f448d0f940f1d04bd3758df45c1214e666f909376a"},"arch":"aarch64","size":80061492,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/aarch64/images/Fedora-Container-Base-Generic.aarch64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Toolbox","format":"tar.xz","volume_id":null,"mtime":1714548390,"checksums":{"sha256":"14662b170bb2a792ef59471c4f3832aec24a156a63723ae7f3189ae39055198c"},"arch":"aarch64","size":309801336,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/aarch64/images/Fedora-Container-Toolbox.aarch64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"}],"x86_64":[{"subvariant":"Container_Minimal_Base","format":"tar.xz","volume_id":null,"mtime":1714548002,"checksums":{"sha256":"99762e812b170a2b5ae21ffdfcc26d6f821064c3347c3456bcfb0946b51d3e39"},"arch":"x86_64","size":47325456,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/x86_64/images/Fedora-Container-Base-Generic-Minimal.x86_64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Base","format":"tar.xz","volume_id":null,"mtime":1714548128,"checksums":{"sha256":"22ec94af77d239c4be0d6441b57b1a36e7f5ab78da4ebeb2fa0ebc5e2d84ab99"},"arch":"x86_64","size":81582552,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/x86_64/images/Fedora-Container-Base-Generic.x86_64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Toolbox","format":"tar.xz","volume_id":null,"mtime":1714548391,"checksums":{"sha256":"4338e4bf47b0f98cde51fcd90f4c8dd0ec6e44e19f066ac71a3a8f0b156bd613"},"arch":"x86_64","size":333172684,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/x86_64/images/Fedora-Container-Toolbox.x86_64-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"}],"s390x":[{"subvariant":"Container_Minimal_Base","format":"tar.xz","volume_id":null,"mtime":1714547999,"checksums":{"sha256":"5126ea913a0cce891f146c98d64f7041f88ec97fdf833050b66bcb1761963e7e"},"arch":"s390x","size":47592832,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/s390x/images/Fedora-Container-Base-Generic-Minimal.s390x-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Base","format":"tar.xz","volume_id":null,"mtime":1714548085,"checksums":{"sha256":"b872fec000a3c09d0b0875d14ab11df3ae8fac9841c9ce2d75479d87b99b77bb"},"arch":"s390x","size":82633556,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/s390x/images/Fedora-Container-Base-Generic.s390x-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Toolbox","format":"tar.xz","volume_id":null,"mtime":1714548383,"checksums":{"sha256":"254e6199117fd50a0a402a8e0bcf0d1a497457712525e05e67bde46c6b43a6ee"},"arch":"s390x","size":295170680,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/s390x/images/Fedora-Container-Toolbox.s390x-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"}],"ppc64le":[{"subvariant":"Container_Minimal_Base","format":"tar.xz","volume_id":null,"mtime":1714548195,"checksums":{"sha256":"a1609b38c5ca8b5725a5b861e6d223ebd7efb540a5a8dcb0d124c8143edacc15"},"arch":"ppc64le","size":53859988,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/ppc64le/images/Fedora-Container-Base-Generic-Minimal.ppc64le-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Base","format":"tar.xz","volume_id":null,"mtime":1714548207,"checksums":{"sha256":"16232ae6ac7d85480a12307b418ea86c62097889369f241607a6da3fdc810294"},"arch":"ppc64le","size":89383320,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/ppc64le/images/Fedora-Container-Base-Generic.ppc64le-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"},{"subvariant":"Container_Toolbox","format":"tar.xz","volume_id":null,"mtime":1714548405,"checksums":{"sha256":"f24b0e9d19a19e509bef289c02ce0ce017b8abaa3d94dd3e160756cfbfe9a1e8"},"arch":"ppc64le","size":317277716,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Container/ppc64le/images/Fedora-Container-Toolbox.ppc64le-Rawhide-20240501.n.0.oci.tar.xz","type":"docker"}]},"Everything":{"aarch64":[{"subvariant":"Everything","format":"iso","volume_id":"Fedora-E-dvd-aarch64-rawh","mtime":1714543271,"checksums":{"sha256":"c8761f0c0c969b2208bc1eec38608a3d421c74168e11bf6842ce0649c0b6e2c1"},"arch":"aarch64","size":881444864,"disc_count":1,"bootable":true,"implant_md5":"eb260a2607dea1ea7b4c70a3bc3b3309","disc_number":1,"path":"Everything/aarch64/iso/Fedora-Everything-netinst-aarch64-Rawhide-20240501.n.0.iso","type":"boot"}],"x86_64":[{"subvariant":"Everything","format":"iso","volume_id":"Fedora-E-dvd-x86_64-rawh","mtime":1714543598,"checksums":{"sha256":"6a4c569813b8fa3269122d4de538302d212be395f2465f192c3b42c3bd29c4d6"},"arch":"x86_64","size":862216192,"disc_count":1,"bootable":true,"implant_md5":"4fada428441a95574831d3cb8b254e44","disc_number":1,"path":"Everything/x86_64/iso/Fedora-Everything-netinst-x86_64-Rawhide-20240501.n.0.iso","type":"boot"}],"s390x":[{"subvariant":"Everything","format":"iso","volume_id":"Fedora-E-dvd-s390x-rawh","mtime":1714543372,"checksums":{"sha256":"1a1d0489e884cee0f5611adf10dcdc2cc8cecd8a43ca72e9133835cd0c993726"},"arch":"s390x","size":538773504,"disc_count":1,"bootable":true,"implant_md5":"d75c8272c5b65a38083becafe0114e2c","disc_number":1,"path":"Everything/s390x/iso/Fedora-Everything-netinst-s390x-Rawhide-20240501.n.0.iso","type":"boot"}],"ppc64le":[{"subvariant":"Everything","format":"iso","volume_id":"Fedora-E-dvd-ppc64le-rawh","mtime":1714544248,"checksums":{"sha256":"06e517e99fc1ad551afc5796ba574f96940c93321ec8e1af0597c44fceef1829"},"arch":"ppc64le","size":868366336,"disc_count":1,"bootable":true,"implant_md5":"447733a53e635d41f0221cd038799cea","disc_number":1,"path":"Everything/ppc64le/iso/Fedora-Everything-netinst-ppc64le-Rawhide-20240501.n.0.iso","type":"boot"}]},"Onyx":{"x86_64":[{"subvariant":"Onyx","format":"iso","volume_id":"Fedora-Onyx-ostree-x86_64-rawh","mtime":1714546339,"checksums":{"sha256":"c7fc13f5fbd63ede8dcee60880ec9353e192d27e1298d70553987667472d468e"},"arch":"x86_64","size":2758076416,"disc_count":1,"bootable":true,"implant_md5":"eea8885d7c0c04c811dbb7fadb88c18b","disc_number":1,"path":"Onyx/x86_64/iso/Fedora-Onyx-ostree-x86_64-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}]},"Server":{"aarch64":[{"subvariant":"Server_KVM","format":"qcow2","volume_id":null,"mtime":1714548481,"checksums":{"sha256":"7df0a82f10cf9ff246a4367c9d2738dcfa38adeab43f6259fd59c248334e754d"},"arch":"aarch64","size":679477248,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Server/aarch64/images/Fedora-Server-KVM-Rawhide-20240501.n.0.aarch64.qcow2","type":"qcow2"},{"subvariant":"Server","format":"raw.xz","volume_id":null,"mtime":1714549351,"checksums":{"sha256":"606840743d5f6949f6a24a087a83ee30ba75061efccae97dc10b0a9911eb647f"},"arch":"aarch64","size":1156440656,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Server/aarch64/images/Fedora-Server-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-aarch64-rawh","mtime":1714547827,"checksums":{"sha256":"9254a157dd98c83ec69bd6bfa32c332132a77a244196d986e61a8e07dcef482b"},"arch":"aarch64","size":2571698176,"disc_count":1,"bootable":true,"implant_md5":"3b4bf7e119d816a9b7d7ff43bb1e7397","disc_number":1,"path":"Server/aarch64/iso/Fedora-Server-dvd-aarch64-Rawhide-20240501.n.0.iso","type":"dvd"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-aarch64-rawh","mtime":1714543282,"checksums":{"sha256":"f97a38209469f4aabebf80734d97f672d0e7a76599178e627f551be0efca705d"},"arch":"aarch64","size":891131904,"disc_count":1,"bootable":true,"implant_md5":"56a7d1aa0db7f8885ce2bb582431c20a","disc_number":1,"path":"Server/aarch64/iso/Fedora-Server-netinst-aarch64-Rawhide-20240501.n.0.iso","type":"boot"}],"x86_64":[{"subvariant":"Server_KVM","format":"qcow2","volume_id":null,"mtime":1714548432,"checksums":{"sha256":"874dca83ba136eda1395d5b4195252b80c9c46586b5d0959cab8a2228fa87981"},"arch":"x86_64","size":663355392,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Server/x86_64/images/Fedora-Server-KVM-Rawhide-20240501.n.0.x86_64.qcow2","type":"qcow2"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-x86_64-rawh","mtime":1714547835,"checksums":{"sha256":"28f2da7d8092d8d9fdf9b2e55a6c01cb8df4d91040698b4e5eeaefb59bc0562e"},"arch":"x86_64","size":2659516416,"disc_count":1,"bootable":true,"implant_md5":"09ab21ecd902b709225a183bdb4d221f","disc_number":1,"path":"Server/x86_64/iso/Fedora-Server-dvd-x86_64-Rawhide-20240501.n.0.iso","type":"dvd"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-x86_64-rawh","mtime":1714544390,"checksums":{"sha256":"284d59258c0097df13b6e534e7286cc0aef3ff97355867c958b50ad1fbcefbd2"},"arch":"x86_64","size":872001536,"disc_count":1,"bootable":true,"implant_md5":"415e2b42be4a7ab863b531a9f103609b","disc_number":1,"path":"Server/x86_64/iso/Fedora-Server-netinst-x86_64-Rawhide-20240501.n.0.iso","type":"boot"}],"s390x":[{"subvariant":"Server_KVM","format":"qcow2","volume_id":null,"mtime":1714548425,"checksums":{"sha256":"fb3c65a91db222dd53642ddfc8bc79f93d6b368daba2de08fa29995c56b51f25"},"arch":"s390x","size":642777088,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Server/s390x/images/Fedora-Server-KVM-Rawhide-20240501.n.0.s390x.qcow2","type":"qcow2"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-s390x-rawh","mtime":1714548033,"checksums":{"sha256":"1b01c52808aca1e6612318816d9f23d28731433213b9dca0f5001ac176e571f6"},"arch":"s390x","size":2002780160,"disc_count":1,"bootable":true,"implant_md5":"4c9027c3bdf2355b1bd44d2e1510e20b","disc_number":1,"path":"Server/s390x/iso/Fedora-Server-dvd-s390x-Rawhide-20240501.n.0.iso","type":"dvd"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-s390x-rawh","mtime":1714543378,"checksums":{"sha256":"bd5408c0fef7d15cb9ecefd6890473cfea0c8eb2c3ac87eaeb03469d7b8bc05a"},"arch":"s390x","size":549619712,"disc_count":1,"bootable":true,"implant_md5":"239d338c78263b5528a0ef1a2da78540","disc_number":1,"path":"Server/s390x/iso/Fedora-Server-netinst-s390x-Rawhide-20240501.n.0.iso","type":"boot"}],"ppc64le":[{"subvariant":"Server_KVM","format":"qcow2","volume_id":null,"mtime":1714555324,"checksums":{"sha256":"8697bb87795aeb0cfdbf67683c72672e5390c0c26d8c456147b3c237a35c6467"},"arch":"ppc64le","size":684392448,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Server/ppc64le/images/Fedora-Server-KVM-Rawhide-20240501.n.0.ppc64le.qcow2","type":"qcow2"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-ppc64le-rawh","mtime":1714548000,"checksums":{"sha256":"1eb107a7627f035ab3fe6f21db00b2b5d6766af991453287db444edd5532b625"},"arch":"ppc64le","size":2409299968,"disc_count":1,"bootable":true,"implant_md5":"52aa0d9a2a7e40ed64c6cc301020308e","disc_number":1,"path":"Server/ppc64le/iso/Fedora-Server-dvd-ppc64le-Rawhide-20240501.n.0.iso","type":"dvd"},{"subvariant":"Server","format":"iso","volume_id":"Fedora-S-dvd-ppc64le-rawh","mtime":1714543594,"checksums":{"sha256":"f74d20418c881571be50a2184f240d13b8cfdf7bbad72bfc2571bb819674390a"},"arch":"ppc64le","size":879071232,"disc_count":1,"bootable":true,"implant_md5":"5e55736ea6f1dc86ce1c22b93e8fa0b3","disc_number":1,"path":"Server/ppc64le/iso/Fedora-Server-netinst-ppc64le-Rawhide-20240501.n.0.iso","type":"boot"}]},"Labs":{"aarch64":[{"subvariant":"Python_Classroom","format":"raw.xz","volume_id":null,"mtime":1714549628,"checksums":{"sha256":"53517e834f444d1bbfdb95506d3c97d6563736c63d23fcb7cb0485c8e8555345"},"arch":"aarch64","size":2717602640,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Labs/aarch64/images/Fedora-Python-Classroom-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"}],"x86_64":[{"subvariant":"Python_Classroom","format":"vagrant-libvirt.box","volume_id":null,"mtime":1714548988,"checksums":{"sha256":"85eb263a920688d56d5e74958161ced4044578d7093b0018d09b78245712c63a"},"arch":"x86_64","size":1567637359,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/images/Fedora-Python-Classroom-Vagrant-Rawhide-20240501.n.0.x86_64.vagrant-libvirt.box","type":"vagrant-libvirt"},{"subvariant":"Python_Classroom","format":"vagrant-virtualbox.box","volume_id":null,"mtime":1714549060,"checksums":{"sha256":"81685cb0637678d5111e8b50dc61e94df119a2c2bb3b2ec216d04d35c5356527"},"arch":"x86_64","size":1589186560,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/images/Fedora-Python-Classroom-Vagrant-Rawhide-20240501.n.0.x86_64.vagrant-virtualbox.box","type":"vagrant-virtualbox"},{"subvariant":"Scientific","format":"vagrant-libvirt.box","volume_id":null,"mtime":1714549937,"checksums":{"sha256":"6a9b6f17eb655962a8b3e343f09ed06cb5fca92ad3faef6a01215ae673a62bad"},"arch":"x86_64","size":4906517741,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/images/Fedora-Scientific-Vagrant-Rawhide-20240501.n.0.x86_64.vagrant-libvirt.box","type":"vagrant-libvirt"},{"subvariant":"Scientific","format":"vagrant-virtualbox.box","volume_id":null,"mtime":1714550139,"checksums":{"sha256":"29547a3dc363baf76c26c53350a066d76b4287e644019d5f3e43c16e8aad196c"},"arch":"x86_64","size":4963287040,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/images/Fedora-Scientific-Vagrant-Rawhide-20240501.n.0.x86_64.vagrant-virtualbox.box","type":"vagrant-virtualbox"},{"subvariant":"Astronomy_KDE","format":"iso","volume_id":null,"mtime":1714549753,"checksums":{"sha256":"eedb523885c20bfb5b246563def3e4a593d7698d7847923cf5292a2f726ab772"},"arch":"x86_64","size":4663750656,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Astronomy_KDE-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Comp_Neuro","format":"iso","volume_id":null,"mtime":1714549174,"checksums":{"sha256":"78a2911eb3c6fe4f86bbdcc93930eb8b2172f8b4971e5f83324bc496c1d9ad3f"},"arch":"x86_64","size":3089092608,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Comp_Neuro-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Games","format":"iso","volume_id":null,"mtime":1714549710,"checksums":{"sha256":"bd14181af753ff6d6273d0cc6575b2b13ee601564f526ab43c8060e9a44a8833"},"arch":"x86_64","size":6911944704,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Games-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Jam_KDE","format":"iso","volume_id":null,"mtime":1714549112,"checksums":{"sha256":"d612fc08962b47f04a6cc7549f45d7deb8740c0cf7838bd48423d4147aa2803f"},"arch":"x86_64","size":3543447552,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Jam_KDE-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Python_Classroom","format":"iso","volume_id":null,"mtime":1714549398,"checksums":{"sha256":"5f0fd5c2f81e6838409adfd70f71f532a73435505fd939f6f1c78c9ba57795bd"},"arch":"x86_64","size":2366535680,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Python-Classroom-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Robotics","format":"iso","volume_id":null,"mtime":1714549620,"checksums":{"sha256":"a91c562e1e2878977ec7639e7fe6056acc649822456fd4d50f9184dec9ee6376"},"arch":"x86_64","size":3167330304,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Robotics-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Scientific_KDE","format":"iso","volume_id":null,"mtime":1714549887,"checksums":{"sha256":"cdb127b1b26e6b1b4541be85c890bc6a20f36c58e596d77042d6b99d61d40c55"},"arch":"x86_64","size":5520687104,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Scientific_KDE-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Security","format":"iso","volume_id":null,"mtime":1714549047,"checksums":{"sha256":"ba32f7df92892f6185e46349e825c995ba81c5a26b482e46554079f22b4da894"},"arch":"x86_64","size":2481698816,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Labs/x86_64/iso/Fedora-Security-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"}]},"Silverblue":{"aarch64":[{"subvariant":"Silverblue","format":"iso","volume_id":"Fedora-SB-ostree-aarch64-rawh","mtime":1714546273,"checksums":{"sha256":"b5a25b696cc0fdea442671eebcbb999287378e87542cfdb4b68b52dd2bd0ef4b"},"arch":"aarch64","size":3620956160,"disc_count":1,"bootable":true,"implant_md5":"461ca41e418493e1475d5bcd5fc1546f","disc_number":1,"path":"Silverblue/aarch64/iso/Fedora-Silverblue-ostree-aarch64-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}],"x86_64":[{"subvariant":"Silverblue","format":"iso","volume_id":"Fedora-SB-ostree-x86_64-rawh","mtime":1714546928,"checksums":{"sha256":"c138b73ec6e460d2ef300d04052e5f851e22d97bc00b96663a0b19daf37da973"},"arch":"x86_64","size":3640899584,"disc_count":1,"bootable":true,"implant_md5":"ac049c322f096d2dbdd55b7369048584","disc_number":1,"path":"Silverblue/x86_64/iso/Fedora-Silverblue-ostree-x86_64-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}],"ppc64le":[{"subvariant":"Silverblue","format":"iso","volume_id":"Fedora-SB-ostree-ppc64le-rawh","mtime":1714547457,"checksums":{"sha256":"02951538e73b9a53657e667a4fe745ba31ad70c9a07a445ba299369c487f3047"},"arch":"ppc64le","size":3572103168,"disc_count":1,"bootable":true,"implant_md5":"8a9f0707386f692fc93ae051f97487fb","disc_number":1,"path":"Silverblue/ppc64le/iso/Fedora-Silverblue-ostree-ppc64le-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}]},"Cloud":{"aarch64":[{"subvariant":"Cloud_Base","format":"raw.xz","volume_id":null,"mtime":1714548549,"checksums":{"sha256":"761269846a3fb0750fdf3853cc7838189ee1317c376e45de4225a6364ce51907"},"arch":"aarch64","size":372905420,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-AmazonEC2.aarch64-Rawhide-20240501.n.0.raw.xz","type":"raw-xz"},{"subvariant":"Cloud_Base","format":"vhd.xz","volume_id":null,"mtime":1714548597,"checksums":{"sha256":"aa977ff3c52903c0000338914b4c0691f8d857675742ac0bda12ed8af6b6fd71"},"arch":"aarch64","size":438226428,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-Azure.aarch64-Rawhide-20240501.n.0.vhdfixed.xz","type":"vhd-compressed"},{"subvariant":"Cloud_Base","format":"tar.gz","volume_id":null,"mtime":1714548410,"checksums":{"sha256":"acdb1bd9065c6a648f7f45ed68ed001a333f9d1fee96768a758cf56885e7191f"},"arch":"aarch64","size":415969669,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-GCE.aarch64-Rawhide-20240501.n.0.tar.gz","type":"docker"},{"subvariant":"Cloud_Base","format":"qcow2","volume_id":null,"mtime":1714548405,"checksums":{"sha256":"ceaee75dd6a3a6c4244a30eb59184a935bbc0d004dce13f29f22a62631819b4e"},"arch":"aarch64","size":415891456,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-Generic.aarch64-Rawhide-20240501.n.0.qcow2","type":"qcow2"},{"subvariant":"Cloud_Base_UKI","format":"qcow2","volume_id":null,"mtime":1714548578,"checksums":{"sha256":"2487abdf4e5ae7a9be4439833ae769ea946bb7f14632236f65b91913001ee1d7"},"arch":"aarch64","size":430243840,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-UEFI-UKI.aarch64-Rawhide-20240501.n.0.qcow2","type":"qcow2"},{"subvariant":"Cloud_Base","format":"vagrant-libvirt.box","volume_id":null,"mtime":1714548420,"checksums":{"sha256":"18ddad07c623baa1c33552ad6261423bc4e0dc689f8399cda6224e53fe705c67"},"arch":"aarch64","size":571752165,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/aarch64/images/Fedora-Cloud-Base-Vagrant-libvirt.aarch64-Rawhide-20240501.n.0.vagrant.libvirt.box","type":"vagrant-libvirt"}],"x86_64":[{"subvariant":"Cloud_Base","format":"raw.xz","volume_id":null,"mtime":1714548401,"checksums":{"sha256":"c376b61792828219d46f918f5c9cbcc1966c0ec4fd841b3ac8dc1b590eb87ece"},"arch":"x86_64","size":377126452,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-AmazonEC2.x86_64-Rawhide-20240501.n.0.raw.xz","type":"raw-xz"},{"subvariant":"Cloud_Base","format":"vhd.xz","volume_id":null,"mtime":1714548407,"checksums":{"sha256":"b95bef74af4a21cbedb1c590eada488bcf23bd1ca84b111bd6ba803c8783eff8"},"arch":"x86_64","size":452488716,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-Azure.x86_64-Rawhide-20240501.n.0.vhdfixed.xz","type":"vhd-compressed"},{"subvariant":"Cloud_Base","format":"tar.gz","volume_id":null,"mtime":1714548403,"checksums":{"sha256":"6b2b7114f924cd610d54d1166a5ca74250c49fbbe3e83ebf132150a8185f7bf5"},"arch":"x86_64","size":411774493,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-GCE.x86_64-Rawhide-20240501.n.0.tar.gz","type":"docker"},{"subvariant":"Cloud_Base","format":"qcow2","volume_id":null,"mtime":1714548401,"checksums":{"sha256":"b872fe26d3e5a8093f4de7600411dd935b1ea3614542a6dc5a22f3cea4015936"},"arch":"x86_64","size":408944640,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-Generic.x86_64-Rawhide-20240501.n.0.qcow2","type":"qcow2"},{"subvariant":"Cloud_Base_UKI","format":"qcow2","volume_id":null,"mtime":1714548404,"checksums":{"sha256":"f9b82e1b9e226df36117143c55dd534a006aaf90c3ca158037c211ef4535db81"},"arch":"x86_64","size":439222272,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-UEFI-UKI.x86_64-Rawhide-20240501.n.0.qcow2","type":"qcow2"},{"subvariant":"Cloud_Base","format":"vagrant-virtualbox.box","volume_id":null,"mtime":1714548418,"checksums":{"sha256":"89a2cbab39f0750125b51be6e04da067aa0484598a86e558cbeb6cab074cd311"},"arch":"x86_64","size":571837191,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-VirtualBox.x86_64-Rawhide-20240501.n.0.vagrant.virtualbox.box","type":"vagrant-virtualbox"},{"subvariant":"Cloud_Base","format":"vagrant-libvirt.box","volume_id":null,"mtime":1714548418,"checksums":{"sha256":"f96fee2a6ac8e0d63400eb7dfe1a1c3100041a6a61c7be378b4ae0dcc223343b"},"arch":"x86_64","size":581492129,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/x86_64/images/Fedora-Cloud-Base-Vagrant-libvirt.x86_64-Rawhide-20240501.n.0.vagrant.libvirt.box","type":"vagrant-libvirt"}],"s390x":[{"subvariant":"Cloud_Base","format":"qcow2","volume_id":null,"mtime":1714548400,"checksums":{"sha256":"69a9e590a7fafdf5bcc6ab7b00943e453930f34136571aff0b77a028346f36fa"},"arch":"s390x","size":374772736,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/s390x/images/Fedora-Cloud-Base-Generic.s390x-Rawhide-20240501.n.0.qcow2","type":"qcow2"}],"ppc64le":[{"subvariant":"Cloud_Base","format":"qcow2","volume_id":null,"mtime":1714548579,"checksums":{"sha256":"60b69830dde0dd01d250277e61f2f779a78636274157f76ed4922f91e0c66b04"},"arch":"ppc64le","size":405536768,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Cloud/ppc64le/images/Fedora-Cloud-Base-Generic.ppc64le-Rawhide-20240501.n.0.qcow2","type":"qcow2"}]},"Kinoite":{"x86_64":[{"subvariant":"Kinoite","format":"iso","volume_id":"Fedora-Knt-ostree-x86_64-rawh","mtime":1714547170,"checksums":{"sha256":"b9f83ad46bd54203e71d7694ed2a93c926ef90a6eadfb4e54fdcc878bd3b5c55"},"arch":"x86_64","size":4265914368,"disc_count":1,"bootable":true,"implant_md5":"0cdc1ad51e553cd561b707fc7649880b","disc_number":1,"path":"Kinoite/x86_64/iso/Fedora-Kinoite-ostree-x86_64-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}],"ppc64le":[{"subvariant":"Kinoite","format":"iso","volume_id":"Fedora-Knt-ostree-ppc64le-rawh","mtime":1714547314,"checksums":{"sha256":"eb53b4a4803f3f07b70440e6e418a3d99fad77554a8d24e637f593d7a4111c8b"},"arch":"ppc64le","size":3977838592,"disc_count":1,"bootable":true,"implant_md5":"a4a70257ed61704a79ba87fbd4e858bf","disc_number":1,"path":"Kinoite/ppc64le/iso/Fedora-Kinoite-ostree-ppc64le-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}]},"Spins":{"aarch64":[{"subvariant":"KDE","format":"raw.xz","volume_id":null,"mtime":1714551236,"checksums":{"sha256":"1f59bcccda3ce19825729af0f5d2e1728312757e85d8eac0790b828723b3edbb"},"arch":"aarch64","size":3323626052,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/images/Fedora-KDE-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"LXQt","format":"raw.xz","volume_id":null,"mtime":1714550923,"checksums":{"sha256":"b85c09dfce672d5844edeaac41f45d7595bf971be0ff5ff2733fc816594a731e"},"arch":"aarch64","size":2160802488,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/images/Fedora-LXQt-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"Minimal","format":"raw.xz","volume_id":null,"mtime":1714548583,"checksums":{"sha256":"722e1717d73bf43e2eb6e0cb4fb8ae3cb19b4a2de8cf1c49da4d6020597d3b66"},"arch":"aarch64","size":933003100,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/images/Fedora-Minimal-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"SoaS","format":"raw.xz","volume_id":null,"mtime":1714549638,"checksums":{"sha256":"242229d68cf1af9ce239192ad87965f216c118c75d9fd74e72b08ab0f00e24ed"},"arch":"aarch64","size":1885278248,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/images/Fedora-SoaS-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"Xfce","format":"raw.xz","volume_id":null,"mtime":1714549789,"checksums":{"sha256":"c707ac0edeffe9f1fc3fef644bb49c421f94f01f2f385b46a07533c18932895d"},"arch":"aarch64","size":2286809604,"disc_count":1,"bootable":false,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/images/Fedora-Xfce-Rawhide-20240501.n.0.aarch64.raw.xz","type":"raw-xz"},{"subvariant":"KDE","format":"iso","volume_id":null,"mtime":1714549170,"checksums":{"sha256":"64eb2f3cd6e54b724ccd3528867d49a4057789ed8a00e5f01d2ba1f37a24bc2c"},"arch":"aarch64","size":2649317376,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/aarch64/iso/Fedora-KDE-Live-aarch64-Rawhide-20240501.n.0.iso","type":"live"}],"x86_64":[{"subvariant":"Budgie","format":"iso","volume_id":null,"mtime":1714549119,"checksums":{"sha256":"7170cec0da8874d774b611afa4f398684d050407cd476672c50897f8c23a271b"},"arch":"x86_64","size":2154031104,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-Budgie-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Cinnamon","format":"iso","volume_id":null,"mtime":1714549323,"checksums":{"sha256":"6ca934500ad73394e30cb6394eac7f01cf8f9b034a7338f2ea259f3a72287153"},"arch":"x86_64","size":2566842368,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-Cinnamon-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"KDE","format":"iso","volume_id":null,"mtime":1714549325,"checksums":{"sha256":"8b10a757116d53ede4725a6e08766af3b3fa5c0c953c24021f6c07616fda8485"},"arch":"x86_64","size":2673795072,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-KDE-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"LXDE","format":"iso","volume_id":null,"mtime":1714549033,"checksums":{"sha256":"1a082a163d6a4a083f7a14752bf05444810759e09d7c032449c1ec39db03d670"},"arch":"x86_64","size":1755189248,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-LXDE-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"LXQt","format":"iso","volume_id":null,"mtime":1714549069,"checksums":{"sha256":"b206c9622050720e8dab00ff071e8ab3c4a5aeba04a810da933969c02a7f0785"},"arch":"x86_64","size":1881649152,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-LXQt-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Mate","format":"iso","volume_id":null,"mtime":1714549314,"checksums":{"sha256":"218b1e1e8efb78b34a9706b0d995f0f6d2450086635cf07477cd4330f8c8c24e"},"arch":"x86_64","size":2452094976,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-MATE_Compiz-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"SoaS","format":"iso","volume_id":null,"mtime":1714548992,"checksums":{"sha256":"ddb3d9ad6c2169f79c1ffa6cad759199d79c2d51e3012eb7ea18599ab0ec3864"},"arch":"x86_64","size":1459724288,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-SoaS-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Sway","format":"iso","volume_id":null,"mtime":1714549007,"checksums":{"sha256":"2fb50be1ed0b5d12a648d1b113b9c2bdb2debece729eee65d219b94b2d2f21d3"},"arch":"x86_64","size":1651877888,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-Sway-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"Xfce","format":"iso","volume_id":null,"mtime":1714549105,"checksums":{"sha256":"0d845b914b0f5e83ca2ce845652d25da556537db31e090b16167e34aca314094"},"arch":"x86_64","size":1903425536,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-Xfce-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"},{"subvariant":"i3","format":"iso","volume_id":null,"mtime":1714549001,"checksums":{"sha256":"cae0b4113cc260962b573315cbf0ce01df7d14f4d6d7794a0e700a0e30d8f0ac"},"arch":"x86_64","size":1637480448,"disc_count":1,"bootable":true,"implant_md5":null,"disc_number":1,"path":"Spins/x86_64/iso/Fedora-i3-Live-x86_64-Rawhide-20240501.n.0.iso","type":"live"}]},"Sericea":{"x86_64":[{"subvariant":"Sericea","format":"iso","volume_id":"Fedora-Src-ostree-x86_64-rawh","mtime":1714546202,"checksums":{"sha256":"4e33ca3626e68a99d87e2da6552536bb1da53f4a885f265f3e41b2026ff13a9c"},"arch":"x86_64","size":2600185856,"disc_count":1,"bootable":true,"implant_md5":"7edb7a3c6255c9485d706bfaaf10e410","disc_number":1,"path":"Sericea/x86_64/iso/Fedora-Sericea-ostree-x86_64-Rawhide-20240501.n.0.iso","type":"dvd-ostree"}]}},"compose":{"date":"20240501","respin":0,"type":"nightly","id":"Fedora-Rawhide-20240501.n.0"}}}' + headers: + Connection: + - close + Date: + - Thu, 30 May 2024 00:25:04 GMT + Referrer-Policy: + - same-origin + Server: + - Apache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + Transfer-Encoding: + - chunked + X-Content-Type-Options: + - nosniff + X-Fedora-ProxyServer: + - proxy03.fedoraproject.org + X-Fedora-RequestID: + - ZlfHYN2bvcvk-rfKwhoX9AAAAM8 + X-Frame-Options: + - SAMEORIGIN + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + allow: + - GET, HEAD, OPTIONS + apptime: + - D=591670 + cache-control: + - private, max-age=0, must-revalidate + content-type: + - application/json + set-cookie: + - SERVERID=pdc-web01; path=/ + vary: + - Accept,Cookie,Accept-Encoding + x-fedora-appserver: + - pdc-web01.iad2.fedoraproject.org + x-frame-options: + - SAMEORIGIN + - SAMEORIGIN + status: + code: 200 + message: OK +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate, br + Connection: + - keep-alive + User-Agent: + - python-requests/2.31.0 + method: GET + uri: https://bodhi.fedoraproject.org/releases/F41 + response: + body: + string: '{"name": "F41", "long_name": "Fedora 41", "version": "41", "id_prefix": + "FEDORA", "branch": "rawhide", "dist_tag": "f41", "stable_tag": "f41", "testing_tag": + "f41-updates-testing", "candidate_tag": "f41-updates-candidate", "pending_signing_tag": + "f41-signing-pending", "pending_testing_tag": "f41-updates-testing-pending", + "pending_stable_tag": "f41-updates-pending", "override_tag": "f41-override", + "mail_template": "fedora_errata_template", "state": "pending", "composed_by_bodhi": + false, "create_automatic_updates": true, "package_manager": "unspecified", + "testing_repository": null, "released_on": null, "eol": null, "setting_status": + "pre_beta"}' + headers: + AppTime: + - D=4678477 + Connection: + - Keep-Alive + Date: + - Thu, 30 May 2024 00:25:10 GMT + Keep-Alive: + - timeout=15, max=500 + Referrer-Policy: + - same-origin + Server: + - gunicorn + Strict-Transport-Security: + - max-age=31536000; includeSubDomains; preload + X-Content-Type-Options: + - nosniff + - nosniff + X-Fedora-ProxyServer: + - proxy11.fedoraproject.org + X-Fedora-RequestID: + - ZlfHYWxxRpEfid_rZWXlmgAAAJg + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + content-length: + - '650' + content-type: + - application/json + set-cookie: + - 1caa5c4232b1a1f24f8c4f6e0f496284=cbca343a697424f4648bad1112e1f4a5; path=/; + HttpOnly; Secure; SameSite=None + x-content-type-options: + - nosniff + - nosniff + status: + code: 200 + message: OK +version: 1 diff --git a/tests/test_handler.py b/tests/test_handler.py index c1708be..fcf087d 100644 --- a/tests/test_handler.py +++ b/tests/test_handler.py @@ -19,11 +19,30 @@ from freezegun import freeze_time from requests.exceptions import RequestException from fedora_cloud_image_uploader import PLAYBOOKS, Uploader -from fedora_cloud_image_uploader.handler import CantHandle, NotHandled +from fedora_cloud_image_uploader.handler import _run + +# disable fedfind caching, as it can cause things to be left out of +# pyvcr cassettes +os.environ["FEDFIND_NO_CACHE"] = "1" + + +def _mock_download_image(self, image: dict, dest_dir: str, decompress=False) -> str: + """ + A mocked-out download_image that behaves somewhat like the real + one. + """ + fn = os.path.basename(image["path"]) + if decompress and fn.endswith(".xz"): + fn = fn.removesuffix(".xz") + return os.path.join(dest_dir, fn) -@mock.patch("fedora_cloud_image_uploader.handler.ansible_runner") @pytest.mark.vcr +@mock.patch( + "fedora_cloud_image_uploader.handler.Uploader.download_image", + lambda a, b, c, decompress: f"/test/{os.path.basename(b['path'].removesuffix('.xz'))}", +) +@mock.patch("fedora_cloud_image_uploader.handler.ansible_runner") @pytest.mark.parametrize( "compose", [ @@ -51,7 +70,8 @@ def test_gallery_name(mock_runner, fixtures_dir, compose): } consumer = Uploader() - consumer.download_image = mock.Mock() + # disable handlers we don't want to hit in this test + consumer.handlers = [consumer.handle_azure] consumer(msg) assert mock_runner.interface.run.call_count == 2 @@ -63,6 +83,133 @@ def test_gallery_name(mock_runner, fixtures_dir, compose): @pytest.mark.vcr +@mock.patch( + "fedora_cloud_image_uploader.handler.Uploader.download_image", + lambda a, b, c, decompress: f"/test/{os.path.basename(b['path'].removesuffix('.xz'))}", +) +@mock.patch("subprocess.run") +@pytest.mark.parametrize( + "compose", + [ + ( + "messages/rawhide_compose.json", + "Rawhide-20240501.n.0", + "41", + "rawhide", + { + "fedora-minimal": ["aarch64", "x86_64", "s390x", "ppc64le"], + "fedora": ["aarch64", "x86_64", "s390x", "ppc64le"], + "fedora-toolbox": ["aarch64", "x86_64", "s390x", "ppc64le"], + }, + ), + ( + "messages/rc_compose.json", + "40-1.14", + "40", + "latest", + { + "fedora-minimal": ["aarch64", "ppc64le", "s390x", "x86_64"], + "fedora": ["aarch64", "ppc64le", "s390x", "x86_64"], + "fedora-toolbox": ["aarch64", "ppc64le", "s390x", "x86_64"], + "fedora-kinoite": ["aarch64", "ppc64le", "x86_64"], + "fedora-onyx": ["x86_64"], + "fedora-sericea": ["aarch64", "x86_64"], + "fedora-silverblue": ["aarch64", "ppc64le", "x86_64"], + }, + ), + ], +) +def test_containers(mock_subrun, fixtures_dir, compose): + mock_subrun.return_value.returncode = 0 + message_file, cidorlabel, relnum, alias, expected_images = compose + registries = ["registry.fedoraproject.org", "quay.io/fedora"] + # mapping of reponames to expected image filename base strings + repotoid = { + "fedora": "Fedora-Container-Base-Generic", + "fedora-minimal": "Fedora-Container-Base-Generic-Minimal", + "fedora-toolbox": "Fedora-Container-Toolbox", + "fedora-kinoite": "Fedora-Kinoite", + "fedora-onyx": "Fedora-Onyx", + "fedora-sericea": "Fedora-Sericea", + "fedora-silverblue": "Fedora-Silverblue", + } + + with open(os.path.join(fixtures_dir, message_file)) as fd: + msg = message.load_message(json.load(fd)) + config.conf["consumer_config"]["container"] = {"registries": registries} + + consumer = Uploader() + # disable handlers we don't want to hit in this test + consumer.handlers = [consumer.handle_container] + consumer(msg) + + # this gives us a list of strings representing the commands run + # (space-joined args iterables passed to _run) + # we will check that every command we expect is in here, remove + # them all, and assert it's empty at the end + calls = [" ".join(call.args[0]) for call in mock_subrun.call_args_list] + + for registry in registries: + for exprepo, arches in expected_images.items(): + # find the expected calls to skopeo copy + for arch in arches: + ident = repotoid[exprepo] + if "Container" in ident: + expfn = f"oci-archive:/test/{ident}.{arch}-{cidorlabel}.oci.tar" + else: + # atomic desktop filenames don't have the arch and + # use a non-standard compose label representation + # https://gitlab.com/fedora/ostree/sig/-/issues/31 + expfn = f"oci-archive:/test/{ident}-{cidorlabel.replace('-', '.')}.ociarchive" + expcall = f"skopeo copy {expfn} docker://{registry}/{exprepo}:{relnum}-{arch}" + assert expcall in calls + calls.remove(expcall) + repopath = f"{registry}/{exprepo}:{relnum}" + aliaspath = f"{registry}/{exprepo}:{alias}" + # find the expected calls to buildah + expcalls = ( + f"buildah rmi {repopath}", + f"buildah rmi {aliaspath}", + f"buildah manifest create {repopath} " + + " ".join(f"{repopath}-{arch}" for arch in arches), + f"buildah manifest create {aliaspath} " + + " ".join(f"{repopath}-{arch}" for arch in arches), + f"buildah manifest push {repopath} docker://{repopath} --all", + f"buildah manifest push {aliaspath} docker://{aliaspath} --all", + ) + for call in expcalls: + assert call in calls + calls.remove(call) + + assert len(calls) == 0 + + +@pytest.mark.vcr +@mock.patch("subprocess.run") +@mock.patch("fedora_cloud_image_uploader.handler.Uploader.download_image") +def test_containers_registries_not_configured(mock_dl, mock_run, fixtures_dir): + """ + Test we correctly skip container handling if registries are not + configured. + """ + with open(os.path.join(fixtures_dir, "messages/rawhide_compose.json")) as fd: + msg = message.load_message(json.load(fd)) + config.conf["consumer_config"]["container"] = {} + + consumer = Uploader() + # disable handlers we don't want to hit in this test + consumer.handlers = [consumer.handle_container] + consumer(msg) + + assert mock_dl.call_count == 0 + assert mock_run.call_count == 0 + + +@pytest.mark.vcr +@mock.patch( + "fedora_cloud_image_uploader.handler.Uploader.download_image", + lambda a, b, c, decompress: f"/test/{os.path.basename(b['path'].removesuffix('.xz'))}", +) @mock.patch("fedora_cloud_image_uploader.handler.ansible_runner") def test_old_unsupported_azure_compose(mock_runner, fixtures_dir): mock_runner.interface.run.return_value.rc = 0 @@ -78,9 +225,11 @@ def test_old_unsupported_azure_compose(mock_runner, fixtures_dir): "storage_container_name": "vhds", "target_regions": {}, } + config.conf["consumer_config"]["container"] = { + "registries": ["registry.fedoraproject.org", "quay.io/fedora"] + } consumer = Uploader() - consumer.download_image = mock.Mock() consumer(msg) assert mock_runner.interface.run.call_count == 0 @@ -128,25 +277,26 @@ def test_ansible_fail(mock_run, caplog): assert caplog.records[-1].msg == "Playbook failed with return code 1" -def test_azure_filters(): +@mock.patch("fedora_cloud_image_uploader.handler.ansible_runner") +def test_azure_filters(mock_runner): """Test the cases where AzureHandler should decide not to handle.""" config.conf["consumer_config"]["azure"] = {} relinfo = mock.MagicMock() relinfo.relnum = 40 - image = {"type": "notonewelike", "arch": "x86_64"} + image = {"type": "notonewelike", "arch": "x86_64", "subvariant": "Cloud_Base"} consumer = Uploader() - with pytest.raises(CantHandle): - consumer.handle_azure(image, relinfo) + consumer.handle_azure(image, relinfo) + assert mock_runner.call_count == 0 + image["type"] = "vhd-compressed" image["arch"] = "ppc64le" - with pytest.raises(NotHandled) as excinfo: - consumer.handle_azure(image, relinfo) - assert str(excinfo.value) == "Unsupported arch" + consumer.handle_azure(image, relinfo) + assert mock_runner.call_count == 0 + image["arch"] = "x86_64" relinfo.relnum = 39 - with pytest.raises(NotHandled) as excinfo: - consumer.handle_azure(image, relinfo) - assert str(excinfo.value) == "Images prior to F40 aren't supported" + consumer.handle_azure(image, relinfo) + assert mock_runner.call_count == 0 @mock.patch("fedora_cloud_image_uploader.handler.ansible_runner") @@ -189,25 +339,13 @@ def test_consumer_handle_exceptions(mock_getrel, mock_relinfo, mock_sleep, fixtu consumer = Uploader() ffrel = mock_getrel.return_value - ffrel.all_images = [{"subvariant": "Cloud_Base", "type": "foo"}] + ffrel.all_images = [{"subvariant": "Cloud_Base", "type": "foo", "format": "foo"}] mock_handler1 = mock.MagicMock() - mock_handler1.side_effect = CantHandle + mock_handler1.side_effect = exceptions.Nack mock_handler2 = mock.MagicMock() - with mock.patch.object(consumer, "cloud_handlers", [mock_handler1, mock_handler2]): - consumer(msg) - # we should have continued to the second handler for CantHandle - assert mock_handler2.call_count == 1 - mock_handler2.reset_mock() - mock_handler1.side_effect = NotHandled - with mock.patch.object(consumer, "cloud_handlers", [mock_handler1, mock_handler2]): + consumer.handlers = [mock_handler1, mock_handler2] + with pytest.raises(exceptions.Nack): consumer(msg) - # for NotHandled we should bail out and never reach second handler - assert mock_handler2.call_count == 0 - mock_sleep.reset_mock() - mock_handler1.side_effect = exceptions.Nack - with mock.patch.object(consumer, "cloud_handlers", [mock_handler1, mock_handler2]): - with pytest.raises(exceptions.Nack): - consumer(msg) assert mock_handler2.call_count == 0 # we should sleep before re-raising the Nack assert mock_sleep.call_count == 1 @@ -389,3 +527,26 @@ def test_azure_rawhide_images(mock_az_client, azure_env_vars, azure_fm_conf): expected_calls.reverse() actual_calls = [call for call in client.gallery_image_versions.begin_delete.call_args_list] assert expected_calls == actual_calls + + +def test_run_error(caplog): + """Test the error handling in _run.""" + with pytest.raises(exceptions.Nack): + _run(("ls", "/some/where/that/doesnt/exist")) + assert ( + caplog.records[-1].getMessage() + == "stderr: ls: cannot access '/some/where/that/doesnt/exist': No such file or directory\n" + ) + assert caplog.records[-2].getMessage() == "stdout: " + assert caplog.records[-3].getMessage() == "Command: ls /some/where/that/doesnt/exist returned 2" + with pytest.raises(exceptions.Nack): + _run(("commandthatdoesntexist",)) + assert caplog.records[-1].getMessage() == ( + "Command: commandthatdoesntexist caused error [Errno 2] " + "No such file or directory: 'commandthatdoesntexist'" + ) + with pytest.raises(exceptions.Nack): + # this is a cute freeze_time trick to force a timeout + with freeze_time("2024-05-28", auto_tick_seconds=10000): + _run(("ls",)) + assert caplog.records[-1].getMessage() == "Command: ls timed out after two hours"