Skip to content

Commit db0a07a

Browse files
committed
fixup! Add "rhsm" feature for integration with Red Hat Subscription Manager
1 parent 1bf188b commit db0a07a

File tree

1 file changed

+34
-5
lines changed

1 file changed

+34
-5
lines changed

lib/src/rhsm.rs

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use serde::Serialize;
88

99
const FACTS_PATH: &str = "etc/rhsm/facts/bootc.json";
1010

11-
#[derive(Serialize)]
11+
#[derive(Serialize, PartialEq, Debug, Default)]
1212
struct RhsmFacts {
1313
#[serde(rename = "bootc.booted.image")]
1414
booted_image: String,
@@ -47,7 +47,7 @@ impl From<crate::spec::HostStatus> for RhsmFacts {
4747
let version = imagestatus.version.as_ref().cloned().unwrap_or_default();
4848
let digest = imagestatus.image_digest.clone();
4949

50-
(image, digest, version)
50+
(image, version, digest)
5151
})
5252
})
5353
.unwrap_or_default();
@@ -61,7 +61,7 @@ impl From<crate::spec::HostStatus> for RhsmFacts {
6161
let version = imagestatus.version.as_ref().cloned().unwrap_or_default();
6262
let digest = imagestatus.image_digest.clone();
6363

64-
(image, digest, version)
64+
(image, version, digest)
6565
})
6666
})
6767
.unwrap_or_default();
@@ -75,7 +75,7 @@ impl From<crate::spec::HostStatus> for RhsmFacts {
7575
let version = imagestatus.version.as_ref().cloned().unwrap_or_default();
7676
let digest = imagestatus.image_digest.clone();
7777

78-
(image, digest, version)
78+
(image, version, digest)
7979
})
8080
})
8181
.unwrap_or_default();
@@ -89,7 +89,7 @@ impl From<crate::spec::HostStatus> for RhsmFacts {
8989
let version = imagestatus.version.as_ref().cloned().unwrap_or_default();
9090
let digest = imagestatus.image_digest.clone();
9191

92-
(image, digest, version)
92+
(image, version, digest)
9393
})
9494
})
9595
.unwrap_or_default();
@@ -126,3 +126,32 @@ pub(crate) async fn publish_facts(root: &Dir) -> Result<()> {
126126
serde_json::to_writer_pretty(&mut bootc_facts_file, &facts)?;
127127
Ok(())
128128
}
129+
130+
#[cfg(test)]
131+
mod tests {
132+
use super::*;
133+
134+
use crate::spec::Host;
135+
136+
#[test]
137+
fn test_rhsm_facts_from_host() {
138+
let host: Host = serde_yaml::from_str(include_str!("fixtures/spec-staged-booted.yaml"))
139+
.expect("No spec found");
140+
let facts = RhsmFacts::from(host.status);
141+
142+
assert_eq!(
143+
facts,
144+
RhsmFacts {
145+
booted_image: "quay.io/example/someimage:latest".into(),
146+
booted_version: "nightly".into(),
147+
booted_digest:
148+
"sha256:736b359467c9437c1ac915acaae952aad854e07eb4a16a94999a48af08c83c34".into(),
149+
staged_image: "quay.io/example/someimage:latest".into(),
150+
staged_version: "nightly".into(),
151+
staged_digest:
152+
"sha256:16dc2b6256b4ff0d2ec18d2dbfb06d117904010c8cf9732cdb022818cf7a7566".into(),
153+
..Default::default()
154+
}
155+
);
156+
}
157+
}

0 commit comments

Comments
 (0)