use std::collections::HashMap;
use serde::Deserialize;
#[derive(Deserialize, Debug)]
pub struct ScalewayImageRoot {
pub images: Vec<ScalewayImage>,
}
#[derive(Deserialize, Debug)]
pub struct ScalewayImage {
pub id: String,
pub name: String,
pub arch: String,
#[serde(with = "time::serde::rfc3339")]
pub creation_date: time::OffsetDateTime,
#[serde(with = "time::serde::rfc3339")]
pub modification_date: time::OffsetDateTime,
pub from_server: Option<String>,
pub organization: String,
pub public: bool,
pub state: String,
pub project: String,
#[serde(default)]
pub tags: Vec<String>,
pub zone: String,
pub root_volume: ScalewayImageRootVolume,
pub default_bootscript: Option<ScalewayImageBootscript>,
pub extra_volumes: ScalewayImageExtraVolumes,
}
#[derive(Deserialize, Debug)]
pub struct ScalewayImageRootVolume {
pub id: String,
pub name: String,
pub size: u64,
pub volume_type: String,
}
#[derive(Deserialize, Debug)]
pub struct ScalewayImageBootscript {
pub bootcmdargs: String,
pub default: bool,
pub dtb: String,
pub id: String,
pub initrd: String,
pub kernel: String,
pub organization: String,
pub project: String,
pub public: bool,
pub title: String,
pub arch: Option<String>,
pub zone: String,
}
#[derive(Deserialize, Debug)]
pub struct ScalewayImageExtraVolumes {
#[serde(flatten)]
pub volumes: HashMap<String, ScalewayImageExtraVolume>,
}
#[derive(Deserialize, Debug)]
pub struct ScalewayImageExtraVolume {
pub id: String,
pub name: Option<String>,
pub export_uri: Option<String>,
pub size: Option<u64>,
pub volume_type: String,
#[serde(with = "time::serde::rfc3339::option")]
pub creation_date: Option<time::OffsetDateTime>,
#[serde(with = "time::serde::rfc3339::option")]
pub modification_date: Option<time::OffsetDateTime>,
pub organization: Option<String>,
pub project: Option<String>,
#[serde(default)]
pub tags: Vec<String>,
pub server: Option<ScalewayImageExtraVolumeServer>,
pub state: String,
pub zone: String,
}
#[derive(Deserialize, Debug)]
pub struct ScalewayImageExtraVolumeServer {
pub id: String,
pub name: String,
}