use serde::{Deserialize, Serialize}; /*
                                      * Compute Engine API
                                      *
                                      * Creates and runs virtual machines on Google Cloud Platform.
                                      *
                                      * The version of the OpenAPI document: v1
                                      *
                                      * Generated by: https://openapi-generator.tech
                                      */

use crate::google_rest_apis::compute_v1::models;

/// Condition : This is deprecated and has no effect. Do not use.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Condition {
    /// This is deprecated and has no effect. Do not use.
    #[serde(rename = "iam", skip_serializing_if = "Option::is_none")]
    pub iam: Option<Iam>,
    /// This is deprecated and has no effect. Do not use.
    #[serde(rename = "op", skip_serializing_if = "Option::is_none")]
    pub op: Option<Op>,
    /// This is deprecated and has no effect. Do not use.
    #[serde(rename = "svc", skip_serializing_if = "Option::is_none")]
    pub svc: Option<String>,
    /// This is deprecated and has no effect. Do not use.
    #[serde(rename = "sys", skip_serializing_if = "Option::is_none")]
    pub sys: Option<Sys>,
    /// This is deprecated and has no effect. Do not use.
    #[serde(rename = "values", skip_serializing_if = "Option::is_none")]
    pub values: Option<Vec<String>>,
}

impl Condition {
    /// This is deprecated and has no effect. Do not use.
    pub fn new() -> Condition {
        Condition {
            iam: None,
            op: None,
            svc: None,
            sys: None,
            values: None,
        }
    }
}
/// This is deprecated and has no effect. Do not use.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Iam {
    #[serde(rename = "APPROVER")]
    Approver,
    #[serde(rename = "ATTRIBUTION")]
    Attribution,
    #[serde(rename = "AUTHORITY")]
    Authority,
    #[serde(rename = "CREDENTIALS_TYPE")]
    CredentialsType,
    #[serde(rename = "CREDS_ASSERTION")]
    CredsAssertion,
    #[serde(rename = "JUSTIFICATION_TYPE")]
    JustificationType,
    #[serde(rename = "NO_ATTR")]
    NoAttr,
    #[serde(rename = "SECURITY_REALM")]
    SecurityRealm,
}

impl Default for Iam {
    fn default() -> Iam {
        Self::Approver
    }
}
/// This is deprecated and has no effect. Do not use.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Op {
    #[serde(rename = "DISCHARGED")]
    Discharged,
    #[serde(rename = "EQUALS")]
    Equals,
    #[serde(rename = "IN")]
    In,
    #[serde(rename = "NOT_EQUALS")]
    NotEquals,
    #[serde(rename = "NOT_IN")]
    NotIn,
    #[serde(rename = "NO_OP")]
    NoOp,
}

impl Default for Op {
    fn default() -> Op {
        Self::Discharged
    }
}
/// This is deprecated and has no effect. Do not use.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Sys {
    #[serde(rename = "IP")]
    Ip,
    #[serde(rename = "NAME")]
    Name,
    #[serde(rename = "NO_ATTR")]
    NoAttr,
    #[serde(rename = "REGION")]
    Region,
    #[serde(rename = "SERVICE")]
    Service,
}

impl Default for Sys {
    fn default() -> Sys {
        Self::Ip
    }
}
