From 7000352d2dc80d6e85195bde4edc900f223d13dc Mon Sep 17 00:00:00 2001 From: jbtrystram Date: Wed, 4 Dec 2024 15:00:04 +0100 Subject: [PATCH] update_agent: support rebasing to OCI pullspec Parse rpm-ostree status to detect if the current booted deployment is an OCI image. If so, query the OCI graph for cincinnati and rebase to the correct OCI image. Requires https://github.com/coreos/fedora-coreos-cincinnati/pull/99 and https://github.com/coreos/rpm-ostree/pull/5120 Part of: https://github.com/coreos/fedora-coreos-tracker/issues/1823 --- src/cincinnati/mod.rs | 3 ++ src/identity/mod.rs | 10 ++++++ src/rpm_ostree/actor.rs | 4 ++- src/rpm_ostree/cli_deploy.rs | 26 ++++++++++------ src/rpm_ostree/cli_status.rs | 19 ++++++++---- src/rpm_ostree/mod.rs | 7 +++-- src/update_agent/actor.rs | 1 + tests/fixtures/00-config-sample.toml | 2 +- tests/fixtures/rpm-ostree-oci-status.json | 38 +++++++++++++++++++++++ 9 files changed, 89 insertions(+), 21 deletions(-) create mode 100644 tests/fixtures/rpm-ostree-oci-status.json diff --git a/src/cincinnati/mod.rs b/src/cincinnati/mod.rs index ee8ff65f..fa4adf00 100644 --- a/src/cincinnati/mod.rs +++ b/src/cincinnati/mod.rs @@ -35,6 +35,9 @@ pub static DEADEND_REASON_KEY: &str = "org.fedoraproject.coreos.updates.deadend_ /// Metadata value for "checksum" payload scheme. pub static CHECKSUM_SCHEME: &str = "checksum"; +/// Metadata value for "oci" payload scheme. +pub static OCI_SCHEME: &str = "oci"; + lazy_static::lazy_static! { static ref GRAPH_NODES: IntGauge = register_int_gauge!(opts!( "zincati_cincinnati_graph_nodes_count", diff --git a/src/identity/mod.rs b/src/identity/mod.rs index 5b359750..5b1f1922 100644 --- a/src/identity/mod.rs +++ b/src/identity/mod.rs @@ -49,6 +49,8 @@ pub(crate) struct Identity { pub(crate) rollout_wariness: Option>, /// Stream label. pub(crate) stream: String, + /// Wether the current deployment is from an OCI container or an ostree reference. + pub(crate) oci: bool, } impl Identity { @@ -104,6 +106,9 @@ impl Identity { let platform = platform::read_id("/proc/cmdline")?; let stream = rpm_ostree::parse_booted_updates_stream(&status) .context("failed to introspect OS updates stream")?; + let oci = rpm_ostree::parse_booted_oci_reference(&status) + .context("failed to introspect booted OCI reference")? + .is_some(); let id = Self { basearch, @@ -113,6 +118,7 @@ impl Identity { group: DEFAULT_GROUP.to_string(), node_uuid, rollout_wariness: None, + oci, }; Ok(id) } @@ -139,6 +145,9 @@ impl Identity { vars.insert("node_uuid".to_string(), self.node_uuid.lower_hex()); vars.insert("platform".to_string(), self.platform.clone()); vars.insert("stream".to_string(), self.stream.clone()); + if self.oci { + vars.insert("oci".to_string(), "true".to_string()); + } if let Some(rw) = self.rollout_wariness { vars.insert("rollout_wariness".to_string(), format!("{:.06}", rw)); } @@ -159,6 +168,7 @@ impl Identity { platform: "mock-azure".to_string(), rollout_wariness: Some(NotNan::new(0.5).unwrap()), stream: "mock-stable".to_string(), + oci: false, } } diff --git a/src/rpm_ostree/actor.rs b/src/rpm_ostree/actor.rs index 261776c8..70847ca8 100644 --- a/src/rpm_ostree/actor.rs +++ b/src/rpm_ostree/actor.rs @@ -42,6 +42,8 @@ pub struct StageDeployment { pub allow_downgrade: bool, /// Release to be staged. pub release: Release, + /// If the release is an OCI image pullspec. + pub oci: bool, } impl Message for StageDeployment { @@ -53,7 +55,7 @@ impl Handler for RpmOstreeClient { fn handle(&mut self, msg: StageDeployment, _ctx: &mut Self::Context) -> Self::Result { trace!("request to stage release: {:?}", msg.release); - let release = super::cli_deploy::deploy_locked(msg.release, msg.allow_downgrade); + let release = super::cli_deploy::deploy_locked(msg.release, msg.allow_downgrade, msg.oci); trace!("rpm-ostree CLI returned: {:?}", release); release } diff --git a/src/rpm_ostree/cli_deploy.rs b/src/rpm_ostree/cli_deploy.rs index 665ef9ca..247e2911 100644 --- a/src/rpm_ostree/cli_deploy.rs +++ b/src/rpm_ostree/cli_deploy.rs @@ -32,10 +32,10 @@ static REGISTER_DRIVER_FAILURES: Lazy = Lazy::new(|| { }); /// Deploy an upgrade (by checksum) and leave the new deployment locked. -pub fn deploy_locked(release: Release, allow_downgrade: bool) -> Result { +pub fn deploy_locked(release: Release, allow_downgrade: bool, oci: bool) -> Result { DEPLOY_ATTEMPTS.inc(); - let result = invoke_cli_deploy(release, allow_downgrade); + let result = invoke_cli_deploy(release, allow_downgrade, oci); if result.is_err() { DEPLOY_FAILURES.inc(); } @@ -94,16 +94,22 @@ fn invoke_cli_register() -> Result<()> { } /// CLI executor for deploying upgrades. -fn invoke_cli_deploy(release: Release, allow_downgrade: bool) -> Result { +fn invoke_cli_deploy(release: Release, allow_downgrade: bool, oci: bool) -> Result { fail_point!("deploy_locked_err", |_| bail!("deploy_locked_err")); fail_point!("deploy_locked_ok", |_| Ok(release.clone())); let mut cmd = std::process::Command::new("rpm-ostree"); - cmd.arg("deploy") - .arg("--lock-finalization") - .arg("--skip-branch-check") - .arg(format!("revision={}", release.checksum)) - .env("RPMOSTREE_CLIENT_ID", "zincati"); + if oci { + // TODO use --custom-origin-url and --custom-origin-description + cmd.arg("rebase") + .arg(format!("ostree-unverified-registry:{}", release.checksum)); + } else { + cmd.arg("deploy") + .arg("--lock-finalization") + .arg("--skip-branch-check") + .arg(format!("revision={}", release.checksum)); + } + cmd.env("RPMOSTREE_CLIENT_ID", "zincati"); if !allow_downgrade { cmd.arg("--disallow-downgrade"); } @@ -149,7 +155,7 @@ mod tests { checksum: "bar".to_string(), age_index: None, }; - let result = deploy_locked(release, true); + let result = deploy_locked(release, true, false); assert!(result.is_err()); assert!(DEPLOY_ATTEMPTS.get() >= 1); assert!(DEPLOY_FAILURES.get() >= 1); @@ -166,7 +172,7 @@ mod tests { checksum: "bar".to_string(), age_index: None, }; - let result = deploy_locked(release.clone(), true).unwrap(); + let result = deploy_locked(release.clone(), true, false).unwrap(); assert_eq!(result, release); assert!(DEPLOY_ATTEMPTS.get() >= 1); } diff --git a/src/rpm_ostree/cli_status.rs b/src/rpm_ostree/cli_status.rs index 1be93e37..446ed527 100644 --- a/src/rpm_ostree/cli_status.rs +++ b/src/rpm_ostree/cli_status.rs @@ -99,12 +99,6 @@ impl Deployment { /// Parse the booted deployment from status object. pub fn parse_booted(status: &Status) -> Result { let status = booted_status(status)?; - if let Some(img) = status.container_image_reference.as_ref() { - let msg = format!("Automatic updates disabled; booted into container image {img}"); - crate::utils::notify_ready(); - crate::utils::update_unit_status(&msg); - return Err(anyhow::Error::new(SystemInoperable(msg))); - } Ok(status.into_release()) } @@ -124,6 +118,11 @@ pub fn parse_booted_updates_stream(status: &Status) -> Result { fedora_coreos_stream_from_deployment(&json) } +/// Parse oci image reference for booted deployment from status object. +pub fn parse_booted_oci_reference(status: &Status) -> Result> { + booted_status(status).map(|s| s.container_image_reference) +} + /// Parse pending deployment from status object. pub fn parse_pending_deployment(status: &Status) -> Result> { // There can be at most one staged/pending rpm-ostree deployment, @@ -258,6 +257,14 @@ mod tests { let deployments = parse_local_deployments(&status, true); assert_eq!(deployments.len(), 1); } + { + let status = mock_status("tests/fixtures/rpm-ostree-oci-status.json").unwrap(); + let deployments = parse_local_deployments(&status, false); + assert_eq!(deployments.len(), 1); + assert!(parse_booted_oci_reference(&status).unwrap().is_some()); + assert_eq!(parse_booted_oci_reference(&status).unwrap().unwrap(), + "ostree-unverified-registry:quay.io/fedora/fedora-coreos@sha256:d12dd2fcb57ecfde0941be604f4dcd43ce0409b86e5ee4e362184c802b80fb84") + } } #[test] diff --git a/src/rpm_ostree/mod.rs b/src/rpm_ostree/mod.rs index f2c4e48c..13946d38 100644 --- a/src/rpm_ostree/mod.rs +++ b/src/rpm_ostree/mod.rs @@ -2,7 +2,8 @@ mod cli_deploy; mod cli_finalize; mod cli_status; pub use cli_status::{ - invoke_cli_status, parse_booted, parse_booted_updates_stream, SystemInoperable, + invoke_cli_status, parse_booted, parse_booted_oci_reference, parse_booted_updates_stream, + SystemInoperable, }; mod actor; @@ -14,7 +15,7 @@ pub use actor::{ #[cfg(test)] mod mock_tests; -use crate::cincinnati::{Node, AGE_INDEX_KEY, CHECKSUM_SCHEME, SCHEME_KEY}; +use crate::cincinnati::{Node, AGE_INDEX_KEY, CHECKSUM_SCHEME, OCI_SCHEME, SCHEME_KEY}; use anyhow::{anyhow, ensure, Context, Result}; use serde::Serialize; use std::cmp::Ordering; @@ -70,7 +71,7 @@ impl Release { .ok_or_else(|| anyhow!("missing metadata key: {}", SCHEME_KEY))?; ensure!( - scheme == CHECKSUM_SCHEME, + scheme == CHECKSUM_SCHEME || scheme == OCI_SCHEME, "unexpected payload scheme: {}", scheme ); diff --git a/src/update_agent/actor.rs b/src/update_agent/actor.rs index 67cc6439..1a4682f1 100644 --- a/src/update_agent/actor.rs +++ b/src/update_agent/actor.rs @@ -418,6 +418,7 @@ impl UpdateAgentInfo { let msg = rpm_ostree::StageDeployment { release, allow_downgrade: self.allow_downgrade, + oci: self.identity.oci, }; self.rpm_ostree_actor diff --git a/tests/fixtures/00-config-sample.toml b/tests/fixtures/00-config-sample.toml index af71c07d..47786bef 100644 --- a/tests/fixtures/00-config-sample.toml +++ b/tests/fixtures/00-config-sample.toml @@ -28,4 +28,4 @@ length_minutes = 120 [[updates.periodic.window]] days = [ "Wed" ] start_time = "23:30" -length_minutes = 25 \ No newline at end of file +length_minutes = 25 diff --git a/tests/fixtures/rpm-ostree-oci-status.json b/tests/fixtures/rpm-ostree-oci-status.json new file mode 100644 index 00000000..c929161b --- /dev/null +++ b/tests/fixtures/rpm-ostree-oci-status.json @@ -0,0 +1,38 @@ +{ + "deployments" : [ + { + "unlocked" : "none", + "requested-local-packages" : [], + "base-commit-meta" : { + "ostree.importer.version" : "0.14.1", + "ostree.tar-filtered" : { }, + "ostree.manifest" : "{\"schemaVersion\":2,\"config\":{\"mediaType\":\"application/vnd.oci.image.config.v1+json\",\"digest\":\"sha256:378bae37504e9d07c2d19d4f5be21dd4be300f90cd24cbc6004534032a19227a\",\"size\":8917},\"layers\":[{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:b43b758e1901aab04bb34393b4dab2213df1f50d6a45f90bf79292186bf86037\",\"size\":1539999},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:ca3a5039f05a8c93c77b0e98547c2387122eee668c4553c67adfbbc71b0a4782\",\"size\":54226233,\"annotations\":{\"ostree.components\":\"containerd\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:981a071da17cf24618ee64219bbd9e8825108fc1bade2dc633b84828ba2db476\",\"size\":40754337,\"annotations\":{\"ostree.components\":\"llvm18-libs\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:7b283136d6c1b3e2deac25e9d772db4f17e73e8a86f25068ae507561d76f6390\",\"size\":33851011,\"annotations\":{\"ostree.components\":\"moby-engine\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:1a61af750dbc9dcf1833ab8bbc39cd32102521659a0e42288e1572fd252e6c55\",\"size\":66356545,\"annotations\":{\"ostree.components\":\"kernel-modules\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:55c62a92f2491076c3cd72f839def0281188d7ff6ebc91d853e11d61c9498981\",\"size\":19693837,\"annotations\":{\"ostree.components\":\"podman\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:630a9c161be9ed51af254edd4555433aba56dbabbdea18783d6de2403ac62db1\",\"size\":39739697,\"annotations\":{\"ostree.components\":\"kernel-modules-core\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:be7b499d203798de8b25193dfcb0fa4d1b6e5ab6a2c4e87fec2e9553dd2752bf\",\"size\":39813516,\"annotations\":{\"ostree.components\":\"nvidia-gpu-firmware\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:4bc4553cd7d320321ff92f9362c256ae7ff8beb87907edcafc86bd46144a060b\",\"size\":39583204,\"annotations\":{\"ostree.components\":\"linux-firmware\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:10d062e6c4069170d3465c7314a1c17de9729ab5bd4fbb37dceac7d8b2989604\",\"size\":15215097,\"annotations\":{\"ostree.components\":\"libicu\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:5010d8aa0c68a21b75eac38475d6687190fdcb9eb2b6412bf3d71d9cc6485bec\",\"size\":9545999,\"annotations\":{\"ostree.components\":\"rpm\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:c6528befb92ef0a821aa3ce0760884102bf8eb993728faa5650ecb0c75b7828d\",\"size\":10936857,\"annotations\":{\"ostree.components\":\"skopeo\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:a99f70cd5870b25d34dbcd63371770dd2e81a4ad2114620397c1f9dcd9624cbc\",\"size\":9866444,\"annotations\":{\"ostree.components\":\"docker-cli\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:d66a85f36526ecbeedcd53b6e3a9bd9a4fe35fd3f8269a1708a4b7548159c2e4\",\"size\":17998324,\"annotations\":{\"ostree.components\":\"kernel-core\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:72add130517ab0f05b340ba091535a8860959fe037df9aa3e504ecc5f4754bec\",\"size\":8485573,\"annotations\":{\"ostree.components\":\"ignition\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:14a7dd6327fc3de9c3dd55d0c0d28e76adb399a05047c1cdf1f5912f195d5b86\",\"size\":9865820,\"annotations\":{\"ostree.components\":\"git-core\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:5c171a23375d2f2288e4f263de808801df24e59c244ffd4c89ac129a4ed2dc59\",\"size\":23268087,\"annotations\":{\"ostree.components\":\"amd-gpu-firmware\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:17ec625c03ddbb369ed13eb6b82c9117f20ee77b6105bc51f74e8319fbc86e28\",\"size\":7393274,\"annotations\":{\"ostree.components\":\"samba-client-libs\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:13852435dea40b9d389173079eabc322dd7d6bd306e989cff69f3556b2c4daab\",\"size\":6187608,\"annotations\":{\"ostree.components\":\"systemd\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:8b8f5084d440f84927ea8c9e91e2694f8473f79e16e10c801486b50ba8addc81\",\"size\":6223370,\"annotations\":{\"ostree.components\":\"rpm-ostree\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:4379e73f5017791c5a5d36134c64d21840fcd959c8add025b86defdf1c0ea060\",\"size\":6199444,\"annotations\":{\"ostree.components\":\"bootc\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:42a2f0607bdceff8aa49da4d9e35014a8153d2834c0ada82ecdf26cac5c8493d\",\"size\":5000388,\"annotations\":{\"ostree.components\":\"glib2\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:8f06468395c2bfd845c8ab69dff8bca6f26dc6f284cd0e6c5e9e80b7b5ec9e25\",\"size\":2810623,\"annotations\":{\"ostree.components\":\"systemd-udev\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:53c379fb87960ec3f4a9877ef4a8813b1e8c7cb709baf68f59376b6887349b66\",\"size\":4970951,\"annotations\":{\"ostree.components\":\"netavark\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:73cbe895ba517bb0cda3566301a8477fed885412ff935f1e5caf2f2a7e27b93f\",\"size\":4447143,\"annotations\":{\"ostree.components\":\"coreos-installer\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:a105f9f83c0c6983d38021c6a47f82d919d570db827f9dee9de14f0ffe219bab\",\"size\":4130414,\"annotations\":{\"ostree.components\":\"runc\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:edf623d2a46ae00ac64941fe5bc8b3ba490334a65735627b6da597af7ac579a7\",\"size\":4208877,\"annotations\":{\"ostree.components\":\"toolbox\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:2398fec23e673bd68ea9c9b228c0a929c62e6668bda52986fb7196dfdaee8925\",\"size\":3574574,\"annotations\":{\"ostree.components\":\"coreutils-common\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:6bf91d81b52ea8f547a240a5a00882414f3e77e3a799dd75e65a113105959001\",\"size\":3325506,\"annotations\":{\"ostree.components\":\"NetworkManager-libnm\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:4496c270243ed4b121d789aabaebe5138023ac38e61327f0605cb9ffd47e6e78\",\"size\":2796289,\"annotations\":{\"ostree.components\":\"NetworkManager-team,WALinuxAgent-udev,afterburn-dracut,alternatives,audit-rules,authselect,bsdtar,bzip2,bzip2-libs,clevis,clevis-dracut,clevis-luks,clevis-systemd,cloud-utils-growpart,composefs-libs,console-login-helper-messages,console-login-helper-messages-issuegen,console-login-helper-messages-motdgen,console-login-helper-messages-profile,container-selinux,containers-common,criu-libs,crun-wasm,cyrus-sasl-gssapi,dbus-common,device-mapper-event,device-mapper-event-libs,dracut-squash,efibootmgr,elfutils-default-yama-scope,fedora-gpg-keys,fedora-release-common,fedora-release-identity-coreos,file,filesystem,flatpak-session-helper,fstrm,fuse-sshfs,fuse3,gettext-envsubst,google-compute-engine-guest-configs-udev,hostname,inih,ipcalc,iptables-legacy,iptables-legacy-libs,iptables-services,iptables-utils,irqbalance,jansson,jose,json-c,keyutils-libs,kpartx,libacl,libaio,libassuan,libattr,libbasicobjects,libbsd,libcap-ng,libcbor,libcollection,libcom_err,libdaemon,libdhash,libeconf,libffi,libgudev,libipa_hbac,libkcapi,libkcapi-hasher,libkcapi-hmaccalc,libluksmeta,libmaxminddb,libmd,libmnl,libndp,libnet,libnfnetlink,libnsl2,libpath_utils,libpkgconf,libpsl,libref_array,libss,libsss_certmap,libsss_idmap,libsss_nss_idmap,libsss_sudo,libtalloc,libtasn1,libtdb,libteam,libtevent,libtool-ltdl,libutempter,libuuid,libverto,libwbclient,lmdb-libs,logrotate,luksmeta,mokutil,nano-default-editor,npth,nss-altfiles,numactl-libs,os-prober,passim-libs,pciutils-libs,pcre2-syntax,pkgconf,pkgconf-m4,pkgconf-pkg-config,protobuf-c,publicsuffix-list-dafsa,rpcbind,rpm-ostree-libs,rpm-plugin-selinux,samba-common,selinux-policy,selinux-policy-targeted,setup,shadow-utils-subid,slirp4netns,snappy,sssd-krb5,sssd-ldap,sssd-nfs-idmap,stalld,vim-data,which,xxhash-libs,yajl,zchunk-libs\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:d6b552e692418caf41485e41cdf333bc0676d3a3bed58bf9f3c15d7d7d33dc71\",\"size\":6550060,\"annotations\":{\"ostree.components\":\"glibc,glibc-gconv-extra\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:d734b68140cba34cd506009126dee041f0bdf44398a6782de856107198643735\",\"size\":1226354,\"annotations\":{\"ostree.components\":\"glibc-common,systemd-pam,systemd-resolved\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:1c523dcd962fe2b2c6dac78e43a22825d05dea20b4b0b540ec3cba0bd4ec24af\",\"size\":1623599,\"annotations\":{\"ostree.components\":\"systemd-container,systemd-libs\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:bed763b09ba5e73e401828a30e274d67c7c358b4335cf59f67788f8518b421f8\",\"size\":48447238,\"annotations\":{\"ostree.components\":\"afterburn,btrfs-progs,coreutils,fwupd,gnupg2,grub2-tools,hwdata,intel-gpu-firmware,nmstate,openssl-libs,qed-firmware\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:37cee118d9f8df10bfbf429149bea7280c2489ef9cccf8e194a1d16120beb1fc\",\"size\":3008963,\"annotations\":{\"ostree.components\":\"crun,e2fsprogs-libs,gettext-runtime,iproute-tc,iputils,libibverbs,libmodulemd,libnghttp2,librepo,p11-kit-trust,policycoreutils,xz,xz-libs\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:c62ec9651a783a0123f15255600ad9007f6bef89194c48b7a87c728bb2eb6ce4\",\"size\":2120320,\"annotations\":{\"ostree.components\":\"audit,audit-libs,c-ares,dbus-broker,device-mapper-multipath,device-mapper-multipath-libs,fmt,libsolv,libtextstyle,libuv,pciutils,polkit,polkit-libs\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:0fec5334ec6ab7616697d3caadff66a96989f5e9bd7bbca3d2887417446091c2\",\"size\":2179665,\"annotations\":{\"ostree.components\":\"NetworkManager-cloud-setup,NetworkManager-tui,cryptsetup,dracut,iptables-nft,libcap,libnvme,libselinux,libselinux-utils,libxmlb,pam-libs,tzdata,zlib-ng-compat\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:8eb6269a05863b384d1f4f39f4dc95fb38462d75d812f68aacccacd336473604\",\"size\":2642930,\"annotations\":{\"ostree.components\":\"amd-ucode-firmware,bind-utils,composefs,curl,dracut-network,elfutils-libelf,elfutils-libs,libcurl-minimal,libfdisk,libnfsidmap,linux-firmware-whence,nfs-utils-coreos,util-linux-core\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:db2a3cf07fd0eb9470e28ae3e6efcc8a5a999969b7765f017fb761de5b81f63f\",\"size\":2581721,\"annotations\":{\"ostree.components\":\"kexec-tools,libblkid,libmount,libsmartcols,openssh,openssl,ostree,ostree-libs,sssd-ad,sssd-client,sssd-common-pac,sssd-ipa,sssd-krb5-common\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:49cf7f013f53e696f6fd01560110879e052c63e68a6ab7b15054fb948af99eea\",\"size\":1672026,\"annotations\":{\"ostree.components\":\"crypto-policies,libdnf5-cli,libgcc,libldb,libsmbclient,passt,passt-selinux,rpm-libs,samba-common-libs\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:c44c16968a9b683080de5aab3e912cdf803bc0b33c55bbf2dd4e48d2355ee002\",\"size\":14762631,\"annotations\":{\"ostree.components\":\"NetworkManager,bootupd,coreos-installer-bootinfra,criu,cryptsetup-libs,device-mapper-persistent-data,e2fsprogs,gettext-libs,iproute,nvme-cli,p11-kit,pam,xfsprogs\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:aad42bf3fa724fd6e756d6feab393e773c710596fa543b7d0abaaca5b593a1fe\",\"size\":14702317,\"annotations\":{\"ostree.components\":\"clevis-pin-tpm2,diffutils,findutils,kbd-misc,libunistring,lvm2,nano,rpm-sequoia,sg3_utils,shared-mime-info,sudo,tar,zstd\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:dcdfebf5c0b01d015726603859dff5b6e770b63e2d4a728608eab3bab08381ca\",\"size\":24267760,\"annotations\":{\"ostree.components\":\"aardvark-dns,bind-libs,cyrus-sasl-lib,dnf5,gnutls,grub2-common,grub2-pc-modules,grub2-tools-minimal,iptables-libs,libdnf5,libstdc++,libxml2,lld18-libs,openssh-clients,openssh-server,shadow-utils,sqlite-libs,sssd-common,util-linux,vim-minimal\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:3809afa1e969b6c0ce2a4e0d5658712bcfeb0ae448e165745be9f4093e0b6e2d\",\"size\":18971263,\"annotations\":{\"ostree.components\":\"bash,dbus-libs,duktape,file-libs,gdbm,isns-utils-libs,jemalloc,libzstd,microcode_ctl,oniguruma,procps-ng,slang,squashfs-tools,tini-static,userspace-rcu,wireguard-tools,zincati\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:60ee218fb32e3613f66344f072e1200e77e8764fc57f33600e0efd0c2e684325\",\"size\":5919847,\"annotations\":{\"ostree.components\":\"adcli,cracklib,fuse3-libs,gawk,gdbm-libs,gmp,gpgme,grep,kbd,kbd-legacy,libini_config,libnetfilter_conntrack,libpcap,libpwquality,libyaml,lsof,lua-libs,lzo,mpfr,net-tools,pigz,popt,sed,ssh-key-dir,tpm2-tools,zram-generator\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:cec50bb0a241b101efd7fcfabdf026acaba2d3d17694090782e335702b13ff75\",\"size\":4649926,\"annotations\":{\"ostree.components\":\"acl,attr,avahi-libs,catatonit,cpio,dosfstools,gdisk,gzip,json-glib,keyutils,libedit,libevent,libjcat,libseccomp,libslirp,lz4-libs,makedumpfile,nettle,newt,psmisc,readline,rsync,sdbus-cpp,sg3_utils-libs,socat,spdlog\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:0e580581ddf97c3ca4b7cc26a2c4666224c3bad9de24fab5b369a7bb568c065e\",\"size\":6126895,\"annotations\":{\"ostree.components\":\"bash-completion,bubblewrap,conmon,dnsmasq,fuse-overlayfs,iscsi-initiator-utils,iscsi-initiator-utils-iscsiuio,kdump-utils,less,libarchive,libfido2,libgpg-error,libgusb,libidn2,libksba,libnl3,libnl3-cli,libsepol,libusb1,libxcrypt,mdadm,ncurses,ncurses-base,ncurses-libs,nftables,tpm2-tss-fapi\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:06889c887b43ff5fcd87e6ce70b932cb38687e2707a2f02143c9802ba92124b8\",\"size\":2868241,\"annotations\":{\"ostree.components\":\"authselect-libs,chrony,cifs-utils,device-mapper,device-mapper-libs,efivar-libs,ethtool,expat,jq,kmod,kmod-libs,libbpf,libjose,libnftnl,libsemanage,libtirpc,openldap,pcre2,teamd\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:dcaee4b393a521eb0117303b0715094ea0939a91a085411e988b6c6e54bd3cc4\",\"size\":4989626,\"annotations\":{\"ostree.components\":\"ca-certificates,krb5-libs,libgcrypt,lvm2-libs,tpm2-tss,wasmedge-rt\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:f73710b792e41e128c98b8a1fd91241f604a0d0222d16aa0190c98d0a3c37d59\",\"size\":110810487,\"annotations\":{\"ostree.components\":\"initramfs,rpmostree-unpackaged-content\"}},{\"mediaType\":\"application/vnd.oci.image.layer.v1.tar+gzip\",\"digest\":\"sha256:9dad063a624b62064bf25dbbc2e802e472d636056f661f2a0be73efd8a4da98b\",\"size\":2341,\"annotations\":{\"ostree.components\":\"\"}}],\"annotations\":{\"org.opencontainers.image.version\":\"41.20241109.3.0\",\"ostree.commit\":\"870e2c8fd02e81652b30bc9a33b5da9d47de66c8bc2bae0a3739ecf38f652660\",\"fedora-coreos.stream\":\"stable\",\"coreos-assembler.image-input-checksum\":\"8998268e3edaeecb6577c1b5bac3c19fed1ca15d0dce8814086a0f977855fc19\",\"org.opencontainers.image.revision\":\"d42ca4a92bd9c2f027f8b4b7184c8d2ead038d0d\",\"ostree.bootable\":\"true\",\"containers.bootc\":\"1\",\"ostree.final-diffid\":\"sha256:12787d84fa137cd5649a9005efe98ec9d05ea46245fdc50aecb7dd007f2035b1\",\"org.opencontainers.image.source\":\"https://github.com/coreos/fedora-coreos-config\",\"coreos-assembler.image-config-checksum\":\"bf38187e263858c6462f93c6c59272949619607fcb078e883830b3aa2b2cd660\",\"ostree.linux\":\"6.11.6-300.fc41.x86_64\",\"rpmostree.inputhash\":\"7db3602882ae07c7cef136bd96a1c474635da7bd7e711ba51fac03d485983f31\"}}", + "ostree.container.image-config" : "{\"created\":\"2024-11-25T02:09:37Z\",\"architecture\":\"amd64\",\"os\":\"linux\",\"config\":{\"Cmd\":[\"/usr/bin/bash\"],\"Labels\":{\"ostree.linux\":\"6.11.6-300.fc41.x86_64\",\"containers.bootc\":\"1\",\"org.opencontainers.image.version\":\"41.20241109.3.0\",\"ostree.bootable\":\"true\",\"ostree.commit\":\"870e2c8fd02e81652b30bc9a33b5da9d47de66c8bc2bae0a3739ecf38f652660\",\"coreos-assembler.image-config-checksum\":\"bf38187e263858c6462f93c6c59272949619607fcb078e883830b3aa2b2cd660\",\"fedora-coreos.stream\":\"stable\",\"org.opencontainers.image.source\":\"https://github.com/coreos/fedora-coreos-config\",\"ostree.final-diffid\":\"sha256:12787d84fa137cd5649a9005efe98ec9d05ea46245fdc50aecb7dd007f2035b1\",\"rpmostree.inputhash\":\"7db3602882ae07c7cef136bd96a1c474635da7bd7e711ba51fac03d485983f31\",\"org.opencontainers.image.revision\":\"d42ca4a92bd9c2f027f8b4b7184c8d2ead038d0d\",\"coreos-assembler.image-input-checksum\":\"8998268e3edaeecb6577c1b5bac3c19fed1ca15d0dce8814086a0f977855fc19\"}},\"rootfs\":{\"type\":\"layers\",\"diff_ids\":[\"sha256:154d57c12456e91d1f2ec7651a0bd36dfc6e48f60a6daf65a43d7d42df31bc24\",\"sha256:2864673db916c6938e4c0f9bf41661108b7d2d90ea94106e44c2a18b6c4d2620\",\"sha256:89082379ef521d2221c394c676241826f7057da258a3d37a22634bdeb7bb91ff\",\"sha256:11b17813bc4e2409edff9098aba0b2b3e0326ea65cba2921e145de2e03262f47\",\"sha256:c3724d39dc3aadfe7a4e9b278542922608e2f99cea3a5be803624a0aab0632e3\",\"sha256:55cef511ec921bf3a96df8608c7d35562d6fa9f36671eb11a76a0779920de763\",\"sha256:422fcaaf2c5a57b51325847674ce92a549ea70ab466f237095b03423b003fe93\",\"sha256:221a17e21dd9925fa3199df00a1bbf065f7f71e6f25a556a9a6ad5cca6fec50b\",\"sha256:a42db48d7ab83b7525f975940ccc98a500b6cf7466857051e6da7f41d25d08de\",\"sha256:4acad7694e32ac27526ca49fff3a1f15eb8d890fadfec17090fd777a3b23e3d7\",\"sha256:1c1edf9168e1bd9d1a7ba53b45cc1097c9dc775e254b06f1ac6d3a27f18a3fae\",\"sha256:71a79a13d341a4b9b39ee1421207a51a8bb19f0a0292292bd4bb87e2cdaf8585\",\"sha256:d756b2dd286af080fd4c46e47c02f31c23b1d6c9080452b3742a28fd6034cdfc\",\"sha256:06de3d4bf6ae520fe7e392a1c6fdccd1423b75f05f31f68ece4f5e0a85eff27a\",\"sha256:93987ee453e4a78288052205c47a4a9e7fe28bdca856346ce7b635b708689a13\",\"sha256:cdea24c6772ef2d832c593b7f5cee5c28a147d5d97231767470337c3baa8e88c\",\"sha256:b4c2d4b855fa7b3b45f73527a9cd53be17acd40150664ea68fcf7a1e20118ff0\",\"sha256:ef2014b768ac67299fa9e11897782699b2a735d5f3f28ce0aa68c39ee29016f5\",\"sha256:20d5fc528b24b25c97cd5ef7fc5bf0f0023a18a96bb8d1d2ea5a0eb07f667332\",\"sha256:5dcaa89e4b307dc67a576be80a9d0f5d5b5702b3529a32185f6bb894f0041683\",\"sha256:90af93b52cc2e2f32e1e156c2e8407da6e68be70c76e97b2559bd3e23ff79223\",\"sha256:4af78e5998add29f0e94555144560fb6d596edb9041dc665a9c0ce524169982e\",\"sha256:c6c76862db978efe4159407822c043aafeb4f26c92a85e24f800052422fa5b33\",\"sha256:f44f8230aa812c8886fcbc8463bb9fef3164f2d09ad32be88ebff222b139de11\",\"sha256:5fd7ae4563f293c54d16ca257c1f87aae75451612c892eb34490c2923c9ffa50\",\"sha256:75eed37c25aaea72f1c63d563da2b7e9e601a6b54045a6c3000e846e5f18a037\",\"sha256:1297788cca0f595d201a98f292fa75e5141aec06b61bd10eaecf5382a2c06a8e\",\"sha256:5744bd1355ae2855b0eb92013d259943d5f42c8c0113dbc8b75d0bbf0f98b71c\",\"sha256:8b929e68e8e28eedd61d73345564328f39020ee3f6a59c0b2ac3e5c0cef16651\",\"sha256:3b11bc7b5e23e24e934a76fbace55c84380b80048805e68f6d3a60b489a2695e\",\"sha256:7725f0188995bc1879a95b94d499cd62587c3b6133893c00c6bac99d3fb196c7\",\"sha256:5b2eeb114931b5873613aaa96cdac89fe6a987b53913aaa9e47110842dff9789\",\"sha256:f3836272a04e5efb5ef05cd34e683f737e3aa814c76fd3ae155706650b18ec19\",\"sha256:ae4eb84ee6a44be377d78909c87f94e6be7a8ed6606ffd7347d1850f654c087d\",\"sha256:62a74f65ce0476c2a51873cfacc9f19b26b38f4e3ddcad6e881826bc6b223ab6\",\"sha256:d2a4fc2b7234adf89531eca08db1ea4cf7a79261242cb4768e474f3a77f09da1\",\"sha256:9a758889f58f54df1680eafefc77c3278817b2699d1d85ef02a86de4888d0ae2\",\"sha256:3f71d4babb71c6d4816b99fb3f855a470f5cb85385f0f0f14d924a1d0fc5491c\",\"sha256:fa00626d0c480c38f61e07f4ad88eb0b2795f2b3e00304c2711d51b47475ea6b\",\"sha256:a83f459ebcd885f633260d88603ab65a4c2bc82743188abb274119b3905694cf\",\"sha256:d589c454b7972de4b4a015dca9036c25be99c77d674ade1187e1acfcb040139a\",\"sha256:45bd0ad491b0ffaf6f38e8eea3750ef9576f0add359c0f9a676b9b471a3566dc\",\"sha256:c0834b393523638f15c310d3ea648329d0ae6c8ceb092fd7cdab1052a76a9051\",\"sha256:492a1a422a5b76bf18b90c8c7260932684a8f4a54f16769ba089b75c04ec553d\",\"sha256:5c8cb314e41eaf2bd4ea6d2e250e279194def67a9eaa1c847cef1a6e5918f15e\",\"sha256:fb781bcdd236cef97c47b43d57050b3233687b3edee6ef162f9d7196c9d38062\",\"sha256:ee6e7f57191b1ddc9099892be00ab099b5d0288bfacc4cb4cfcd3bb3e3981ac5\",\"sha256:739cc3385ce6ee69902bf98cb5c3b092626c00ae9a02b57da189cea15be43bdc\",\"sha256:3725f0ad9760827b4a3b14875ba93f1bb825554bf52c40b4662378b5d342434f\",\"sha256:0be9729ccecd87771b46265cd4831e2388e7e07a24cb0cc04759b626d410d8b4\",\"sha256:12787d84fa137cd5649a9005efe98ec9d05ea46245fdc50aecb7dd007f2035b1\"]},\"history\":[{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"ostree export of commit 870e2c8fd02e81652b30bc9a33b5da9d47de66c8bc2bae0a3739ecf38f652660\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"containerd-1.7.23-2.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"llvm18-libs-18.1.8-4.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"moby-engine-27.3.1-2.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"kernel-modules-6.11.6-300.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"podman-5:5.2.5-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"kernel-modules-core-6.11.6-300.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"nvidia-gpu-firmware-20241017-2.fc41.noarch\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"linux-firmware-20241017-2.fc41.noarch\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"libicu-74.2-2.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"rpm-4.20.0-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"skopeo-1:1.16.1-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"docker-cli-27.3.1-2.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"kernel-core-6.11.6-300.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"ignition-2.20.0-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"git-core-2.47.0-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"amd-gpu-firmware-20241017-2.fc41.noarch\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"samba-client-libs-2:4.21.1-7.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"systemd-256.7-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"rpm-ostree-2024.8-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"bootc-1.1.0-2.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"glib2-2.82.2-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"systemd-udev-256.7-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"netavark-2:1.13.0-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"coreos-installer-0.22.1-3.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"runc-2:1.1.12-4.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"toolbox-0.1.0-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"coreutils-common-9.5-10.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"NetworkManager-libnm-1:1.50.0-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"136 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"glibc-gconv-extra-2.40-9.fc41.x86_64 and glibc-2.40-9.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"glibc-common-2.40-9.fc41.x86_64 and systemd-pam-256.7-1.fc41.x86_64 and systemd-resolved-256.7-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"systemd-libs-256.7-1.fc41.x86_64 and systemd-container-256.7-1.fc41.x86_64\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"11 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"13 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"13 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"13 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"13 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"13 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"9 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"13 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"13 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"20 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"17 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"26 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"26 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"26 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"19 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"6 components\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"initramfs (kernel 6.11.6-300.fc41.x86_64) and rpmostree-unpackaged-content\"},{\"created\":\"2024-11-25T02:11:03Z\",\"created_by\":\"Reserved for new packages\"}]}", + "ostree.manifest-digest" : "sha256:d12dd2fcb57ecfde0941be604f4dcd43ce0409b86e5ee4e362184c802b80fb84" + }, + "base-removals" : [], + "pinned" : false, + "osname" : "fedora-coreos", + "base-remote-replacements" : { }, + "regenerate-initramfs" : false, + "checksum" : "41e8b64a8995e7412047dc0436934df69cb7886c73c2476f5743ba752dbb3e98", + "container-image-reference-digest" : "sha256:d12dd2fcb57ecfde0941be604f4dcd43ce0409b86e5ee4e362184c802b80fb84", + "requested-base-local-replacements" : [], + "id" : "fedora-coreos-41e8b64a8995e7412047dc0436934df69cb7886c73c2476f5743ba752dbb3e98.0", + "version" : "41.20241109.3.0", + "requested-local-fileoverride-packages" : [], + "requested-base-removals" : [], + "requested-packages" : [], + "serial" : 0, + "timestamp" : 1732500577, + "staged" : false, + "booted" : true, + "container-image-reference" : "ostree-unverified-registry:quay.io/fedora/fedora-coreos@sha256:d12dd2fcb57ecfde0941be604f4dcd43ce0409b86e5ee4e362184c802b80fb84", + "packages" : [], + "base-local-replacements" : [] + } + ], + "transaction" : null, + "cached-update" : null, + "update-driver" : null +} \ No newline at end of file