scaleway-rs 0.2.1

A pure Rust scaleway API binding.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum SecurityGroupPolicy {
    Accept,
    Drop,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub enum SecurityGroupRuleProtocol {
    #[serde(rename = "TCP")]
    Tcp,
    #[serde(rename = "UDP")]
    Udp,
    #[serde(rename = "ICMP")]
    Icmp,
    #[serde(rename = "ANY")]
    Any,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum SecurityGroupRuleDirection {
    Inbound,
    Outbound,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum SecurityGroupRuleAction {
    Accept,
    Drop,
}

#[derive(Deserialize, Debug)]
pub struct ScalewaySecurityGroupDetailsListRoot {
    pub security_groups: Vec<ScalewaySecurityGroupDetails>,
}

#[derive(Deserialize, Debug)]
pub struct ScalewaySecurityGroupDetailsRoot {
    pub security_group: ScalewaySecurityGroupDetails,
}

#[derive(Deserialize, Debug)]
pub struct ScalewaySecurityGroupDetails {
    pub id: String,
    pub name: String,
    pub description: String,
    pub organization: String,
    pub project: String,
    pub tags: Vec<String>,
    pub enable_default_security: bool,
    pub inbound_default_policy: SecurityGroupPolicy,
    pub outbound_default_policy: SecurityGroupPolicy,
    pub organization_default: bool,
    pub project_default: bool,
    #[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 servers: Vec<ScalewaySecurityGroupServerRef>,
    pub stateful: bool,
    pub zone: String,
}

#[derive(Deserialize, Debug)]
pub struct ScalewaySecurityGroupServerRef {
    pub id: String,
    pub name: String,
}

#[derive(Deserialize, Debug)]
pub struct ScalewaySecurityGroupRulesRoot {
    pub rules: Vec<ScalewaySecurityGroupRule>,
}

#[derive(Deserialize, Debug)]
pub struct ScalewaySecurityGroupRuleRoot {
    pub rule: ScalewaySecurityGroupRule,
}

#[derive(Deserialize, Debug)]
pub struct ScalewaySecurityGroupRule {
    pub id: String,
    pub protocol: SecurityGroupRuleProtocol,
    pub direction: SecurityGroupRuleDirection,
    pub action: SecurityGroupRuleAction,
    pub ip_range: String,
    pub dest_port_from: Option<u32>,
    pub dest_port_to: Option<u32>,
    pub position: u32,
    pub editable: bool,
    pub zone: Option<String>,
}