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

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

/// ConsulGateway is used to configure one of the Consul Connect Gateway types.
///
/// This struct was generated based on the Go types of the official Nomad API.
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize, Builder)]
pub struct ConsulGateway {
    /// Proxy is used to configure the Envoy instance acting as the gateway.
    #[serde(rename = "Proxy", skip_serializing_if = "Option::is_none")]
    pub proxy: Option<super::ConsulGatewayProxy>,

    /// Ingress represents the Consul Configuration Entry for an Ingress Gateway.
    #[serde(rename = "Ingress", skip_serializing_if = "Option::is_none")]
    pub ingress: Option<super::ConsulIngressConfigEntry>,

    /// Terminating represents the Consul Configuration Entry for a Terminating Gateway.
    #[serde(rename = "Terminating", skip_serializing_if = "Option::is_none")]
    pub terminating: Option<super::ConsulTerminatingConfigEntry>,

    /// Mesh indicates the Consul service should be a Mesh Gateway.
    #[serde(rename = "Mesh", skip_serializing_if = "Option::is_none")]
    pub mesh: Option<super::ConsulMeshConfigEntry>,
}
