1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>Information about the endpoint details.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct EndpointDetails {
    /// <p>Endpoint security details including a list of subnets, a list of security groups and a role to connect streams to instances.</p>
    pub security_details: ::std::option::Option<crate::types::SecurityDetails>,
    /// <p>A dataflow endpoint.</p>
    pub endpoint: ::std::option::Option<crate::types::DataflowEndpoint>,
    /// <p>An agent endpoint.</p>
    pub aws_ground_station_agent_endpoint: ::std::option::Option<crate::types::AwsGroundStationAgentEndpoint>,
    /// <p>A dataflow endpoint health status. This field is ignored when calling <code>CreateDataflowEndpointGroup</code>.</p>
    pub health_status: ::std::option::Option<crate::types::CapabilityHealth>,
    /// <p>Health reasons for a dataflow endpoint. This field is ignored when calling <code>CreateDataflowEndpointGroup</code>.</p>
    pub health_reasons: ::std::option::Option<::std::vec::Vec<crate::types::CapabilityHealthReason>>,
}
impl EndpointDetails {
    /// <p>Endpoint security details including a list of subnets, a list of security groups and a role to connect streams to instances.</p>
    pub fn security_details(&self) -> ::std::option::Option<&crate::types::SecurityDetails> {
        self.security_details.as_ref()
    }
    /// <p>A dataflow endpoint.</p>
    pub fn endpoint(&self) -> ::std::option::Option<&crate::types::DataflowEndpoint> {
        self.endpoint.as_ref()
    }
    /// <p>An agent endpoint.</p>
    pub fn aws_ground_station_agent_endpoint(&self) -> ::std::option::Option<&crate::types::AwsGroundStationAgentEndpoint> {
        self.aws_ground_station_agent_endpoint.as_ref()
    }
    /// <p>A dataflow endpoint health status. This field is ignored when calling <code>CreateDataflowEndpointGroup</code>.</p>
    pub fn health_status(&self) -> ::std::option::Option<&crate::types::CapabilityHealth> {
        self.health_status.as_ref()
    }
    /// <p>Health reasons for a dataflow endpoint. This field is ignored when calling <code>CreateDataflowEndpointGroup</code>.</p>
    ///
    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.health_reasons.is_none()`.
    pub fn health_reasons(&self) -> &[crate::types::CapabilityHealthReason] {
        self.health_reasons.as_deref().unwrap_or_default()
    }
}
impl EndpointDetails {
    /// Creates a new builder-style object to manufacture [`EndpointDetails`](crate::types::EndpointDetails).
    pub fn builder() -> crate::types::builders::EndpointDetailsBuilder {
        crate::types::builders::EndpointDetailsBuilder::default()
    }
}

/// A builder for [`EndpointDetails`](crate::types::EndpointDetails).
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
#[non_exhaustive]
pub struct EndpointDetailsBuilder {
    pub(crate) security_details: ::std::option::Option<crate::types::SecurityDetails>,
    pub(crate) endpoint: ::std::option::Option<crate::types::DataflowEndpoint>,
    pub(crate) aws_ground_station_agent_endpoint: ::std::option::Option<crate::types::AwsGroundStationAgentEndpoint>,
    pub(crate) health_status: ::std::option::Option<crate::types::CapabilityHealth>,
    pub(crate) health_reasons: ::std::option::Option<::std::vec::Vec<crate::types::CapabilityHealthReason>>,
}
impl EndpointDetailsBuilder {
    /// <p>Endpoint security details including a list of subnets, a list of security groups and a role to connect streams to instances.</p>
    pub fn security_details(mut self, input: crate::types::SecurityDetails) -> Self {
        self.security_details = ::std::option::Option::Some(input);
        self
    }
    /// <p>Endpoint security details including a list of subnets, a list of security groups and a role to connect streams to instances.</p>
    pub fn set_security_details(mut self, input: ::std::option::Option<crate::types::SecurityDetails>) -> Self {
        self.security_details = input;
        self
    }
    /// <p>Endpoint security details including a list of subnets, a list of security groups and a role to connect streams to instances.</p>
    pub fn get_security_details(&self) -> &::std::option::Option<crate::types::SecurityDetails> {
        &self.security_details
    }
    /// <p>A dataflow endpoint.</p>
    pub fn endpoint(mut self, input: crate::types::DataflowEndpoint) -> Self {
        self.endpoint = ::std::option::Option::Some(input);
        self
    }
    /// <p>A dataflow endpoint.</p>
    pub fn set_endpoint(mut self, input: ::std::option::Option<crate::types::DataflowEndpoint>) -> Self {
        self.endpoint = input;
        self
    }
    /// <p>A dataflow endpoint.</p>
    pub fn get_endpoint(&self) -> &::std::option::Option<crate::types::DataflowEndpoint> {
        &self.endpoint
    }
    /// <p>An agent endpoint.</p>
    pub fn aws_ground_station_agent_endpoint(mut self, input: crate::types::AwsGroundStationAgentEndpoint) -> Self {
        self.aws_ground_station_agent_endpoint = ::std::option::Option::Some(input);
        self
    }
    /// <p>An agent endpoint.</p>
    pub fn set_aws_ground_station_agent_endpoint(mut self, input: ::std::option::Option<crate::types::AwsGroundStationAgentEndpoint>) -> Self {
        self.aws_ground_station_agent_endpoint = input;
        self
    }
    /// <p>An agent endpoint.</p>
    pub fn get_aws_ground_station_agent_endpoint(&self) -> &::std::option::Option<crate::types::AwsGroundStationAgentEndpoint> {
        &self.aws_ground_station_agent_endpoint
    }
    /// <p>A dataflow endpoint health status. This field is ignored when calling <code>CreateDataflowEndpointGroup</code>.</p>
    pub fn health_status(mut self, input: crate::types::CapabilityHealth) -> Self {
        self.health_status = ::std::option::Option::Some(input);
        self
    }
    /// <p>A dataflow endpoint health status. This field is ignored when calling <code>CreateDataflowEndpointGroup</code>.</p>
    pub fn set_health_status(mut self, input: ::std::option::Option<crate::types::CapabilityHealth>) -> Self {
        self.health_status = input;
        self
    }
    /// <p>A dataflow endpoint health status. This field is ignored when calling <code>CreateDataflowEndpointGroup</code>.</p>
    pub fn get_health_status(&self) -> &::std::option::Option<crate::types::CapabilityHealth> {
        &self.health_status
    }
    /// Appends an item to `health_reasons`.
    ///
    /// To override the contents of this collection use [`set_health_reasons`](Self::set_health_reasons).
    ///
    /// <p>Health reasons for a dataflow endpoint. This field is ignored when calling <code>CreateDataflowEndpointGroup</code>.</p>
    pub fn health_reasons(mut self, input: crate::types::CapabilityHealthReason) -> Self {
        let mut v = self.health_reasons.unwrap_or_default();
        v.push(input);
        self.health_reasons = ::std::option::Option::Some(v);
        self
    }
    /// <p>Health reasons for a dataflow endpoint. This field is ignored when calling <code>CreateDataflowEndpointGroup</code>.</p>
    pub fn set_health_reasons(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::CapabilityHealthReason>>) -> Self {
        self.health_reasons = input;
        self
    }
    /// <p>Health reasons for a dataflow endpoint. This field is ignored when calling <code>CreateDataflowEndpointGroup</code>.</p>
    pub fn get_health_reasons(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::CapabilityHealthReason>> {
        &self.health_reasons
    }
    /// Consumes the builder and constructs a [`EndpointDetails`](crate::types::EndpointDetails).
    pub fn build(self) -> crate::types::EndpointDetails {
        crate::types::EndpointDetails {
            security_details: self.security_details,
            endpoint: self.endpoint,
            aws_ground_station_agent_endpoint: self.aws_ground_station_agent_endpoint,
            health_status: self.health_status,
            health_reasons: self.health_reasons,
        }
    }
}