Skip to content

Commit

Permalink
fix(rust): add missing elements to the OpenAPI spec
Browse files Browse the repository at this point in the history
  • Loading branch information
imobachgs committed Jul 5, 2024
1 parent fde719c commit 4db0996
Show file tree
Hide file tree
Showing 7 changed files with 48 additions and 25 deletions.
9 changes: 5 additions & 4 deletions rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions rust/agama-lib/src/network/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ use std::default::Default;
use std::net::IpAddr;

/// Network settings for installation
#[derive(Debug, Default, Serialize, Deserialize)]
#[derive(Debug, Default, Serialize, Deserialize, utoipa::ToSchema)]
#[serde(rename_all = "camelCase")]
pub struct NetworkSettings {
/// Connections to use in the installation
pub connections: Vec<NetworkConnection>,
}

#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[derive(Clone, Debug, Default, Serialize, Deserialize, utoipa::ToSchema)]
pub struct MatchSettings {
#[serde(skip_serializing_if = "Vec::is_empty", default)]
pub driver: Vec<String>,
Expand All @@ -35,7 +35,7 @@ impl MatchSettings {
}
}

#[derive(Clone, Debug, Default, Serialize, Deserialize)]
#[derive(Clone, Debug, Default, Serialize, Deserialize, utoipa::ToSchema)]
pub struct WirelessSettings {
#[serde(skip_serializing_if = "Option::is_none")]
pub password: Option<String>,
Expand Down
6 changes: 3 additions & 3 deletions rust/agama-lib/src/network/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ pub struct Device {
pub state: DeviceState,
}

#[derive(Debug, Default, PartialEq, Clone, Serialize, Deserialize)]
#[derive(Debug, Default, PartialEq, Clone, Serialize, Deserialize, utoipa::ToSchema)]
pub struct SSID(pub Vec<u8>);

impl SSID {
Expand Down Expand Up @@ -60,7 +60,7 @@ pub enum DeviceType {

// For now this mirrors NetworkManager, because it was less mental work than coming up with
// what exactly Agama needs. Expected to be adapted.
#[derive(Debug, Default, Clone, Copy, PartialEq, Serialize, Deserialize)]
#[derive(Debug, Default, Clone, Copy, PartialEq, Serialize, Deserialize, utoipa::ToSchema)]
#[serde(rename_all = "camelCase")]
pub enum DeviceState {
#[default]
Expand Down Expand Up @@ -125,7 +125,7 @@ impl fmt::Display for DeviceState {
}
}

#[derive(Debug, Default, Clone, Copy, PartialEq, Serialize, Deserialize)]
#[derive(Debug, Default, Clone, Copy, PartialEq, Serialize, Deserialize, utoipa::ToSchema)]
#[serde(rename_all = "camelCase")]
pub enum Status {
#[default]
Expand Down
1 change: 1 addition & 0 deletions rust/agama-locale-data/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ flate2 = "1.0.25"
chrono-tz = "0.8.2"
regex = "1"
thiserror = "1.0.50"
utoipa = "4.2.3"
6 changes: 4 additions & 2 deletions rust/agama-locale-data/src/locale.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use std::sync::OnceLock;
use std::{fmt::Display, str::FromStr};
use thiserror::Error;

#[derive(Clone, Debug, PartialEq, Serialize)]
#[derive(Clone, Debug, PartialEq, Serialize, utoipa::ToSchema)]
pub struct LocaleId {
// ISO-639
pub language: String,
Expand Down Expand Up @@ -80,9 +80,11 @@ static KEYMAP_ID_REGEX: OnceLock<Regex> = OnceLock::new();
/// let id_with_dashes: KeymapId = "es-ast".parse().unwrap();
/// assert_eq!(id, id_with_dashes);
/// ```
#[derive(Clone, Debug, PartialEq, Serialize)]
#[derive(Clone, Debug, PartialEq, Serialize, utoipa::ToSchema)]
pub struct KeymapId {
/// Keyboard layout (e.g., "es" in "es(ast)")
pub layout: String,
/// Keyboard variante (e.g., "ast" in "es(ast)")
pub variant: Option<String>,
}

Expand Down
26 changes: 13 additions & 13 deletions rust/agama-server/src/network/model.rs
Original file line number Diff line number Diff line change
Expand Up @@ -652,7 +652,7 @@ impl TryFrom<Connection> for NetworkConnection {
}
}

#[derive(Default, Debug, PartialEq, Clone, Serialize)]
#[derive(Default, Debug, PartialEq, Clone, Serialize, utoipa::ToSchema)]
pub enum ConnectionConfig {
#[default]
Ethernet,
Expand All @@ -666,7 +666,7 @@ pub enum ConnectionConfig {
Tun(TunConfig),
}

#[derive(Default, Debug, PartialEq, Clone, Serialize)]
#[derive(Default, Debug, PartialEq, Clone, Serialize, utoipa::ToSchema)]
pub enum PortConfig {
#[default]
None,
Expand All @@ -689,7 +689,7 @@ impl From<WirelessConfig> for ConnectionConfig {
#[error("Invalid MAC address: {0}")]
pub struct InvalidMacAddress(String);

#[derive(Debug, Default, Clone, PartialEq, Serialize)]
#[derive(Debug, Default, Clone, PartialEq, Serialize, utoipa::ToSchema)]
pub enum MacAddress {
MacAddress(macaddr::MacAddr6),
Preserve,
Expand Down Expand Up @@ -750,7 +750,7 @@ impl From<InvalidMacAddress> for zbus::fdo::Error {
}

#[skip_serializing_none]
#[derive(Default, Debug, PartialEq, Clone, Serialize)]
#[derive(Default, Debug, PartialEq, Clone, Serialize, utoipa::ToSchema)]
#[serde(rename_all = "camelCase")]
pub struct IpConfig {
pub method4: Ipv4Method,
Expand All @@ -766,7 +766,7 @@ pub struct IpConfig {
}

#[skip_serializing_none]
#[derive(Debug, Default, PartialEq, Clone, Serialize)]
#[derive(Debug, Default, PartialEq, Clone, Serialize, utoipa::ToSchema)]
pub struct MatchConfig {
#[serde(skip_serializing_if = "Vec::is_empty")]
pub driver: Vec<String>,
Expand Down Expand Up @@ -895,7 +895,7 @@ impl From<&IpRoute> for HashMap<&str, Value<'_>> {
}
}

#[derive(Debug, Default, PartialEq, Clone, Serialize)]
#[derive(Debug, Default, PartialEq, Clone, Serialize, utoipa::ToSchema)]
pub enum VlanProtocol {
#[default]
IEEE802_1Q,
Expand Down Expand Up @@ -928,15 +928,15 @@ impl fmt::Display for VlanProtocol {
}
}

#[derive(Debug, Default, PartialEq, Clone, Serialize)]
#[derive(Debug, Default, PartialEq, Clone, Serialize, utoipa::ToSchema)]
pub struct VlanConfig {
pub parent: String,
pub id: u32,
pub protocol: VlanProtocol,
}

#[serde_as]
#[derive(Debug, Default, PartialEq, Clone, Serialize)]
#[derive(Debug, Default, PartialEq, Clone, Serialize, utoipa::ToSchema)]
#[serde(rename_all = "camelCase")]
pub struct WirelessConfig {
pub mode: WirelessMode,
Expand Down Expand Up @@ -1035,7 +1035,7 @@ impl fmt::Display for WirelessMode {
}
}

#[derive(Debug, Clone, Copy, Default, PartialEq, Serialize)]
#[derive(Debug, Clone, Copy, Default, PartialEq, Serialize, utoipa::ToSchema)]
pub enum SecurityProtocol {
#[default]
WEP, // No encryption or WEP ("none")
Expand Down Expand Up @@ -1207,7 +1207,7 @@ impl fmt::Display for BondOptions {
}
}

#[derive(Debug, Default, PartialEq, Clone, Serialize)]
#[derive(Debug, Default, PartialEq, Clone, Serialize, utoipa::ToSchema)]
pub struct BondConfig {
pub mode: BondMode,
pub options: BondOptions,
Expand Down Expand Up @@ -1251,7 +1251,7 @@ impl TryFrom<BondConfig> for BondSettings {
}
}

#[derive(Debug, Default, PartialEq, Clone, Serialize)]
#[derive(Debug, Default, PartialEq, Clone, Serialize, utoipa::ToSchema)]
pub struct BridgeConfig {
pub stp: bool,
#[serde(skip_serializing_if = "Option::is_none")]
Expand All @@ -1274,7 +1274,7 @@ pub struct BridgePortConfig {
pub path_cost: Option<u32>,
}

#[derive(Default, Debug, PartialEq, Clone, Serialize)]
#[derive(Default, Debug, PartialEq, Clone, Serialize, utoipa::ToSchema)]
pub struct InfinibandConfig {
pub p_key: Option<i32>,
pub parent: Option<String>,
Expand Down Expand Up @@ -1321,7 +1321,7 @@ pub enum TunMode {
Tap = 2,
}

#[derive(Default, Debug, PartialEq, Clone, Serialize)]
#[derive(Default, Debug, PartialEq, Clone, Serialize, utoipa::ToSchema)]
pub struct TunConfig {
pub mode: TunMode,
pub group: Option<String>,
Expand Down
19 changes: 19 additions & 0 deletions rust/agama-server/src/web/docs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,15 @@ use utoipa::OpenApi;
super::http::ping
),
components(
schemas(agama_locale_data::KeymapId),
schemas(agama_locale_data::LocaleId),
schemas(agama_lib::manager::InstallationPhase),
schemas(agama_lib::network::settings::NetworkConnection),
schemas(agama_lib::network::settings::NetworkSettings),
schemas(agama_lib::network::settings::WirelessSettings),
schemas(agama_lib::network::types::DeviceState),
schemas(agama_lib::network::types::DeviceType),
schemas(agama_lib::network::types::Status),
schemas(agama_lib::product::Product),
schemas(agama_lib::software::Pattern),
schemas(agama_lib::storage::model::Action),
Expand Down Expand Up @@ -95,8 +101,21 @@ use utoipa::OpenApi;
schemas(crate::l10n::TimezoneEntry),
schemas(crate::l10n::web::LocaleConfig),
schemas(crate::manager::web::InstallerStatus),
schemas(crate::network::model::BondConfig),
schemas(crate::network::model::BridgeConfig),
schemas(crate::network::model::Connection),
schemas(crate::network::model::ConnectionConfig),
schemas(crate::network::model::Device),
schemas(crate::network::model::InfinibandConfig),
schemas(crate::network::model::IpConfig),
schemas(crate::network::model::MacAddress),
schemas(crate::network::model::MatchConfig),
schemas(crate::network::model::PortConfig),
schemas(crate::network::model::SecurityProtocol),
schemas(crate::network::model::TunConfig),
schemas(crate::network::model::VlanConfig),
schemas(crate::network::model::VlanProtocol),
schemas(crate::network::model::WirelessConfig),
schemas(crate::questions::web::Answer),
schemas(crate::questions::web::GenericAnswer),
schemas(crate::questions::web::GenericQuestion),
Expand Down

0 comments on commit 4db0996

Please sign in to comment.