coreos-stream-metadata 0.1.0

Fetch and parse stream metadata for Fedora CoreOS and derivatives
Documentation
use coreos_stream_metadata::Stream;
use coreos_stream_metadata::{fcos, ContainerImage, SingleImage};

const STREAM_DATA: &[u8] = include_bytes!("fixtures/fcos-stream.json");

#[test]
fn test_basic() {
    assert_eq!(
        fcos::StreamID::Stable.url(),
        "https://builds.coreos.fedoraproject.org/streams/stable.json"
    );

    let myarch = coreos_stream_metadata::this_architecture();

    let st: Stream = serde_json::from_slice(STREAM_DATA).unwrap();
    assert_eq!(st.stream, "stable");
    let a = st.architectures.get("x86_64").unwrap();
    if myarch == "x86_64" {
        assert!(st.this_architecture().is_some());
        assert_eq!(
            st.query_thisarch_single("qemu").unwrap().sha256,
            "a7e93e32665086d4a07a14dbe6c125177402f04603fc5bb575035028701afa5b"
        );
    }

    assert_eq!(
        a.artifacts
            .get("metal")
            .unwrap()
            .formats
            .get("raw.xz")
            .unwrap()
            .get("disk")
            .unwrap()
            .sha256,
        "2848b111a6917455686f38a3ce64d2321c33809b9cf796c5f6804b1c02d79d9d"
    );

    assert_eq!(
        st.query_disk("x86_64", "metal", "raw.xz").unwrap().sha256,
        "2848b111a6917455686f38a3ce64d2321c33809b9cf796c5f6804b1c02d79d9d"
    );

    assert_eq!(
        a.images
            .as_ref()
            .unwrap()
            .aws
            .as_ref()
            .unwrap()
            .regions
            .get("us-east-1")
            .unwrap(),
        &SingleImage {
            image: "ami-037a0ba6d14ca2e05".to_string(),
            release: "33.20201201.3.0".to_string(),
        }
    );

    assert_eq!(
        a.images
            .as_ref()
            .unwrap()
            .kubevirt
            .as_ref()
            .unwrap(),
        &ContainerImage {
            image: "quay.io/openshift-release-dev/rhcos:stable".to_string(),
            digest_ref: "quay.io/openshift-release-dev/rhcos@sha256:67a81539946ec0397196c145394553b8e0241acf27b14ae9de43bc56e167f773".to_string(),
            release: "33.20201201.3.0".to_string(),
        }
    );

    assert_eq!(
        a.images
            .as_ref()
            .unwrap()
            .aliyun
            .as_ref()
            .unwrap()
            .regions
            .get("us-east-1")
            .unwrap(),
        &SingleImage {
            image: "m-0xi29kf08acv9dps47zs".to_string(),
            release: "33.20201201.3.0".to_string(),
        }
    );
}