#stream #metadata #derivative #fedora #fetch #parse #information

coreos-stream-metadata

为 Fedora CoreOS 及其衍生版本抓取并解析流元数据

1 个不稳定版本

0.1.0 2022年11月2日

#15#fedora

每月 31 次下载
zincati 中使用

Apache-2.0

12KB
169

Rust 库,用于与 CoreOS Stream 元数据交互

有关流的基本信息,请参阅 Fedora CoreOS 文档

这是一个 Rust 库,它定义了与 serde 一起使用的标准结构体,这些结构体使用 #[derive(Deserialize)]

示例用法

use anyhow::Result;
use coreos_stream_metadata::Stream;

#[tokio::main]
fn main() -> Result<()> {
  let streamid = coreos_stream_metadata::fcos::StreamId::Stable;
  let arch = "x86_64";
  let region = "us-east-1";
  let buf = reqwest::get(streamid.url())
    .await?
    .bytes()
    .await?;
  let stream: Stream = serde_json::from_slice(&buf)?;
  let ami = stream.architectures.get(arch).unwrap().images.get("aws").unwrap().regions(region).unwrap();
  println!("The AMI for FCOS {} {} is {} (version {})", streamid, region, ami.image, ami.release);
  Ok(())
}

lib.rs:

用于与 CoreOS 流元数据交互的库,由 Fedora CoreOS 和 RHEL CoreOS 使用。

获取 FCOS 稳定流的 URL

use coreos_stream_metadata::fcos;
let url = fcos::StreamID::Stable.url();

反序列化流数据并打印 OpenStack 图像的 URL

use coreos_stream_metadata::Stream;

let stream: Stream = serde_json::from_reader(std::io::stdin())?;
let openstack = stream.query_thisarch_single("openstack").ok_or_else(|| anyhow::anyhow!("Missing openstack image"))?;
println!("OpenStack image URL: {}", openstack.location);

依赖关系

~1.3–1.8MB
~41K SLoC