/*
 * This is an auto-generated file.
 * Any manual changes may be overwritten without notice!
 */

use derive_builder::Builder;
use serde::{Deserialize, Serialize};

/// NamespaceVaultConfiguration stores configuration about permissions to Vault
/// clusters for a namespace, for use with Nomad Enterprise.
///
/// This struct was generated based on the Go types of the official Nomad API.
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize, Builder)]
pub struct NamespaceVaultConfiguration {
    /// Default is the Vault cluster used by jobs in this namespace that don't
    /// specify a cluster of their own.
    #[serde(rename = "Default")]
    pub default: String,

    /// Allowed specifies the Vault clusters that are allowed to be used by jobs
    /// in this namespace. By default, all clusters are allowed. If an empty list
    /// is provided only the namespace's default cluster is allowed. This field
    /// supports wildcard globbing through the use of `*` for multi-character
    /// matching. This field cannot be used with Denied.
    #[serde(
        rename = "Allowed",
        deserialize_with = "crate::deserialize_null_as_default"
    )]
    pub allowed: Vec<String>,

    /// Denied specifies the Vault clusters that are not allowed to be used by
    /// jobs in this namespace. This field supports wildcard globbing through the
    /// use of `*` for multi-character matching. If specified, any cluster is
    /// allowed to be used, except for those that match any of these patterns.
    /// This field cannot be used with Allowed.
    #[serde(
        rename = "Denied",
        deserialize_with = "crate::deserialize_null_as_default"
    )]
    pub denied: Vec<String>,
}
