1#[derive(Debug, Default)]
5pub struct LoadBalancer {
6    properties: LoadBalancerProperties
7}
8
9#[derive(Debug, Default)]
11pub struct LoadBalancerProperties {
12    pub access_logging_policy: Option<::Value<self::load_balancer::AccessLoggingPolicy>>,
17    pub app_cookie_stickiness_policy: Option<::ValueList<self::load_balancer::AppCookieStickinessPolicy>>,
22    pub availability_zones: Option<::ValueList<String>>,
28    pub connection_draining_policy: Option<::Value<self::load_balancer::ConnectionDrainingPolicy>>,
33    pub connection_settings: Option<::Value<self::load_balancer::ConnectionSettings>>,
38    pub cross_zone: Option<::Value<bool>>,
43    pub health_check: Option<::Value<self::load_balancer::HealthCheck>>,
49    pub instances: Option<::ValueList<String>>,
54    pub lb_cookie_stickiness_policy: Option<::ValueList<self::load_balancer::LBCookieStickinessPolicy>>,
59    pub listeners: ::ValueList<self::load_balancer::Listeners>,
64    pub load_balancer_name: Option<::Value<String>>,
69    pub policies: Option<::ValueList<self::load_balancer::Policies>>,
74    pub scheme: Option<::Value<String>>,
79    pub security_groups: Option<::ValueList<String>>,
84    pub subnets: Option<::ValueList<String>>,
90    pub tags: Option<::ValueList<::Tag>>,
95}
96
97impl ::serde::Serialize for LoadBalancerProperties {
98    fn serialize<S: ::serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
99        let mut map = ::serde::Serializer::serialize_map(s, None)?;
100        if let Some(ref access_logging_policy) = self.access_logging_policy {
101            ::serde::ser::SerializeMap::serialize_entry(&mut map, "AccessLoggingPolicy", access_logging_policy)?;
102        }
103        if let Some(ref app_cookie_stickiness_policy) = self.app_cookie_stickiness_policy {
104            ::serde::ser::SerializeMap::serialize_entry(&mut map, "AppCookieStickinessPolicy", app_cookie_stickiness_policy)?;
105        }
106        if let Some(ref availability_zones) = self.availability_zones {
107            ::serde::ser::SerializeMap::serialize_entry(&mut map, "AvailabilityZones", availability_zones)?;
108        }
109        if let Some(ref connection_draining_policy) = self.connection_draining_policy {
110            ::serde::ser::SerializeMap::serialize_entry(&mut map, "ConnectionDrainingPolicy", connection_draining_policy)?;
111        }
112        if let Some(ref connection_settings) = self.connection_settings {
113            ::serde::ser::SerializeMap::serialize_entry(&mut map, "ConnectionSettings", connection_settings)?;
114        }
115        if let Some(ref cross_zone) = self.cross_zone {
116            ::serde::ser::SerializeMap::serialize_entry(&mut map, "CrossZone", cross_zone)?;
117        }
118        if let Some(ref health_check) = self.health_check {
119            ::serde::ser::SerializeMap::serialize_entry(&mut map, "HealthCheck", health_check)?;
120        }
121        if let Some(ref instances) = self.instances {
122            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Instances", instances)?;
123        }
124        if let Some(ref lb_cookie_stickiness_policy) = self.lb_cookie_stickiness_policy {
125            ::serde::ser::SerializeMap::serialize_entry(&mut map, "LBCookieStickinessPolicy", lb_cookie_stickiness_policy)?;
126        }
127        ::serde::ser::SerializeMap::serialize_entry(&mut map, "Listeners", &self.listeners)?;
128        if let Some(ref load_balancer_name) = self.load_balancer_name {
129            ::serde::ser::SerializeMap::serialize_entry(&mut map, "LoadBalancerName", load_balancer_name)?;
130        }
131        if let Some(ref policies) = self.policies {
132            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Policies", policies)?;
133        }
134        if let Some(ref scheme) = self.scheme {
135            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Scheme", scheme)?;
136        }
137        if let Some(ref security_groups) = self.security_groups {
138            ::serde::ser::SerializeMap::serialize_entry(&mut map, "SecurityGroups", security_groups)?;
139        }
140        if let Some(ref subnets) = self.subnets {
141            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Subnets", subnets)?;
142        }
143        if let Some(ref tags) = self.tags {
144            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Tags", tags)?;
145        }
146        ::serde::ser::SerializeMap::end(map)
147    }
148}
149
150impl<'de> ::serde::Deserialize<'de> for LoadBalancerProperties {
151    fn deserialize<D: ::serde::Deserializer<'de>>(d: D) -> Result<LoadBalancerProperties, D::Error> {
152        struct Visitor;
153
154        impl<'de> ::serde::de::Visitor<'de> for Visitor {
155            type Value = LoadBalancerProperties;
156
157            fn expecting(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
158                write!(f, "a struct of type LoadBalancerProperties")
159            }
160
161            fn visit_map<A: ::serde::de::MapAccess<'de>>(self, mut map: A) -> Result<Self::Value, A::Error> {
162                let mut access_logging_policy: Option<::Value<self::load_balancer::AccessLoggingPolicy>> = None;
163                let mut app_cookie_stickiness_policy: Option<::ValueList<self::load_balancer::AppCookieStickinessPolicy>> = None;
164                let mut availability_zones: Option<::ValueList<String>> = None;
165                let mut connection_draining_policy: Option<::Value<self::load_balancer::ConnectionDrainingPolicy>> = None;
166                let mut connection_settings: Option<::Value<self::load_balancer::ConnectionSettings>> = None;
167                let mut cross_zone: Option<::Value<bool>> = None;
168                let mut health_check: Option<::Value<self::load_balancer::HealthCheck>> = None;
169                let mut instances: Option<::ValueList<String>> = None;
170                let mut lb_cookie_stickiness_policy: Option<::ValueList<self::load_balancer::LBCookieStickinessPolicy>> = None;
171                let mut listeners: Option<::ValueList<self::load_balancer::Listeners>> = None;
172                let mut load_balancer_name: Option<::Value<String>> = None;
173                let mut policies: Option<::ValueList<self::load_balancer::Policies>> = None;
174                let mut scheme: Option<::Value<String>> = None;
175                let mut security_groups: Option<::ValueList<String>> = None;
176                let mut subnets: Option<::ValueList<String>> = None;
177                let mut tags: Option<::ValueList<::Tag>> = None;
178
179                while let Some(__cfn_key) = ::serde::de::MapAccess::next_key::<String>(&mut map)? {
180                    match __cfn_key.as_ref() {
181                        "AccessLoggingPolicy" => {
182                            access_logging_policy = ::serde::de::MapAccess::next_value(&mut map)?;
183                        }
184                        "AppCookieStickinessPolicy" => {
185                            app_cookie_stickiness_policy = ::serde::de::MapAccess::next_value(&mut map)?;
186                        }
187                        "AvailabilityZones" => {
188                            availability_zones = ::serde::de::MapAccess::next_value(&mut map)?;
189                        }
190                        "ConnectionDrainingPolicy" => {
191                            connection_draining_policy = ::serde::de::MapAccess::next_value(&mut map)?;
192                        }
193                        "ConnectionSettings" => {
194                            connection_settings = ::serde::de::MapAccess::next_value(&mut map)?;
195                        }
196                        "CrossZone" => {
197                            cross_zone = ::serde::de::MapAccess::next_value(&mut map)?;
198                        }
199                        "HealthCheck" => {
200                            health_check = ::serde::de::MapAccess::next_value(&mut map)?;
201                        }
202                        "Instances" => {
203                            instances = ::serde::de::MapAccess::next_value(&mut map)?;
204                        }
205                        "LBCookieStickinessPolicy" => {
206                            lb_cookie_stickiness_policy = ::serde::de::MapAccess::next_value(&mut map)?;
207                        }
208                        "Listeners" => {
209                            listeners = ::serde::de::MapAccess::next_value(&mut map)?;
210                        }
211                        "LoadBalancerName" => {
212                            load_balancer_name = ::serde::de::MapAccess::next_value(&mut map)?;
213                        }
214                        "Policies" => {
215                            policies = ::serde::de::MapAccess::next_value(&mut map)?;
216                        }
217                        "Scheme" => {
218                            scheme = ::serde::de::MapAccess::next_value(&mut map)?;
219                        }
220                        "SecurityGroups" => {
221                            security_groups = ::serde::de::MapAccess::next_value(&mut map)?;
222                        }
223                        "Subnets" => {
224                            subnets = ::serde::de::MapAccess::next_value(&mut map)?;
225                        }
226                        "Tags" => {
227                            tags = ::serde::de::MapAccess::next_value(&mut map)?;
228                        }
229                        _ => {}
230                    }
231                }
232
233                Ok(LoadBalancerProperties {
234                    access_logging_policy: access_logging_policy,
235                    app_cookie_stickiness_policy: app_cookie_stickiness_policy,
236                    availability_zones: availability_zones,
237                    connection_draining_policy: connection_draining_policy,
238                    connection_settings: connection_settings,
239                    cross_zone: cross_zone,
240                    health_check: health_check,
241                    instances: instances,
242                    lb_cookie_stickiness_policy: lb_cookie_stickiness_policy,
243                    listeners: listeners.ok_or(::serde::de::Error::missing_field("Listeners"))?,
244                    load_balancer_name: load_balancer_name,
245                    policies: policies,
246                    scheme: scheme,
247                    security_groups: security_groups,
248                    subnets: subnets,
249                    tags: tags,
250                })
251            }
252        }
253
254        d.deserialize_map(Visitor)
255    }
256}
257
258impl ::Resource for LoadBalancer {
259    type Properties = LoadBalancerProperties;
260    const TYPE: &'static str = "AWS::ElasticLoadBalancing::LoadBalancer";
261    fn properties(&self) -> &LoadBalancerProperties {
262        &self.properties
263    }
264    fn properties_mut(&mut self) -> &mut LoadBalancerProperties {
265        &mut self.properties
266    }
267}
268
269impl ::private::Sealed for LoadBalancer {}
270
271impl From<LoadBalancerProperties> for LoadBalancer {
272    fn from(properties: LoadBalancerProperties) -> LoadBalancer {
273        LoadBalancer { properties }
274    }
275}
276
277pub mod load_balancer {
278    #[derive(Debug, Default)]
282    pub struct AccessLoggingPolicy {
283        pub emit_interval: Option<::Value<u32>>,
288        pub enabled: ::Value<bool>,
293        pub s3_bucket_name: ::Value<String>,
298        pub s3_bucket_prefix: Option<::Value<String>>,
303    }
304
305    impl ::codec::SerializeValue for AccessLoggingPolicy {
306        fn serialize<S: ::serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
307            let mut map = ::serde::Serializer::serialize_map(s, None)?;
308            if let Some(ref emit_interval) = self.emit_interval {
309                ::serde::ser::SerializeMap::serialize_entry(&mut map, "EmitInterval", emit_interval)?;
310            }
311            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Enabled", &self.enabled)?;
312            ::serde::ser::SerializeMap::serialize_entry(&mut map, "S3BucketName", &self.s3_bucket_name)?;
313            if let Some(ref s3_bucket_prefix) = self.s3_bucket_prefix {
314                ::serde::ser::SerializeMap::serialize_entry(&mut map, "S3BucketPrefix", s3_bucket_prefix)?;
315            }
316            ::serde::ser::SerializeMap::end(map)
317        }
318    }
319
320    impl ::codec::DeserializeValue for AccessLoggingPolicy {
321        fn deserialize<'de, D: ::serde::Deserializer<'de>>(d: D) -> Result<AccessLoggingPolicy, D::Error> {
322            struct Visitor;
323
324            impl<'de> ::serde::de::Visitor<'de> for Visitor {
325                type Value = AccessLoggingPolicy;
326
327                fn expecting(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
328                    write!(f, "a struct of type AccessLoggingPolicy")
329                }
330
331                fn visit_map<A: ::serde::de::MapAccess<'de>>(self, mut map: A) -> Result<Self::Value, A::Error> {
332                    let mut emit_interval: Option<::Value<u32>> = None;
333                    let mut enabled: Option<::Value<bool>> = None;
334                    let mut s3_bucket_name: Option<::Value<String>> = None;
335                    let mut s3_bucket_prefix: Option<::Value<String>> = None;
336
337                    while let Some(__cfn_key) = ::serde::de::MapAccess::next_key::<String>(&mut map)? {
338                        match __cfn_key.as_ref() {
339                            "EmitInterval" => {
340                                emit_interval = ::serde::de::MapAccess::next_value(&mut map)?;
341                            }
342                            "Enabled" => {
343                                enabled = ::serde::de::MapAccess::next_value(&mut map)?;
344                            }
345                            "S3BucketName" => {
346                                s3_bucket_name = ::serde::de::MapAccess::next_value(&mut map)?;
347                            }
348                            "S3BucketPrefix" => {
349                                s3_bucket_prefix = ::serde::de::MapAccess::next_value(&mut map)?;
350                            }
351                            _ => {}
352                        }
353                    }
354
355                    Ok(AccessLoggingPolicy {
356                        emit_interval: emit_interval,
357                        enabled: enabled.ok_or(::serde::de::Error::missing_field("Enabled"))?,
358                        s3_bucket_name: s3_bucket_name.ok_or(::serde::de::Error::missing_field("S3BucketName"))?,
359                        s3_bucket_prefix: s3_bucket_prefix,
360                    })
361                }
362            }
363
364            d.deserialize_map(Visitor)
365        }
366    }
367
368    #[derive(Debug, Default)]
370    pub struct AppCookieStickinessPolicy {
371        pub cookie_name: ::Value<String>,
376        pub policy_name: ::Value<String>,
381    }
382
383    impl ::codec::SerializeValue for AppCookieStickinessPolicy {
384        fn serialize<S: ::serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
385            let mut map = ::serde::Serializer::serialize_map(s, None)?;
386            ::serde::ser::SerializeMap::serialize_entry(&mut map, "CookieName", &self.cookie_name)?;
387            ::serde::ser::SerializeMap::serialize_entry(&mut map, "PolicyName", &self.policy_name)?;
388            ::serde::ser::SerializeMap::end(map)
389        }
390    }
391
392    impl ::codec::DeserializeValue for AppCookieStickinessPolicy {
393        fn deserialize<'de, D: ::serde::Deserializer<'de>>(d: D) -> Result<AppCookieStickinessPolicy, D::Error> {
394            struct Visitor;
395
396            impl<'de> ::serde::de::Visitor<'de> for Visitor {
397                type Value = AppCookieStickinessPolicy;
398
399                fn expecting(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
400                    write!(f, "a struct of type AppCookieStickinessPolicy")
401                }
402
403                fn visit_map<A: ::serde::de::MapAccess<'de>>(self, mut map: A) -> Result<Self::Value, A::Error> {
404                    let mut cookie_name: Option<::Value<String>> = None;
405                    let mut policy_name: Option<::Value<String>> = None;
406
407                    while let Some(__cfn_key) = ::serde::de::MapAccess::next_key::<String>(&mut map)? {
408                        match __cfn_key.as_ref() {
409                            "CookieName" => {
410                                cookie_name = ::serde::de::MapAccess::next_value(&mut map)?;
411                            }
412                            "PolicyName" => {
413                                policy_name = ::serde::de::MapAccess::next_value(&mut map)?;
414                            }
415                            _ => {}
416                        }
417                    }
418
419                    Ok(AppCookieStickinessPolicy {
420                        cookie_name: cookie_name.ok_or(::serde::de::Error::missing_field("CookieName"))?,
421                        policy_name: policy_name.ok_or(::serde::de::Error::missing_field("PolicyName"))?,
422                    })
423                }
424            }
425
426            d.deserialize_map(Visitor)
427        }
428    }
429
430    #[derive(Debug, Default)]
432    pub struct ConnectionDrainingPolicy {
433        pub enabled: ::Value<bool>,
438        pub timeout: Option<::Value<u32>>,
443    }
444
445    impl ::codec::SerializeValue for ConnectionDrainingPolicy {
446        fn serialize<S: ::serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
447            let mut map = ::serde::Serializer::serialize_map(s, None)?;
448            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Enabled", &self.enabled)?;
449            if let Some(ref timeout) = self.timeout {
450                ::serde::ser::SerializeMap::serialize_entry(&mut map, "Timeout", timeout)?;
451            }
452            ::serde::ser::SerializeMap::end(map)
453        }
454    }
455
456    impl ::codec::DeserializeValue for ConnectionDrainingPolicy {
457        fn deserialize<'de, D: ::serde::Deserializer<'de>>(d: D) -> Result<ConnectionDrainingPolicy, D::Error> {
458            struct Visitor;
459
460            impl<'de> ::serde::de::Visitor<'de> for Visitor {
461                type Value = ConnectionDrainingPolicy;
462
463                fn expecting(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
464                    write!(f, "a struct of type ConnectionDrainingPolicy")
465                }
466
467                fn visit_map<A: ::serde::de::MapAccess<'de>>(self, mut map: A) -> Result<Self::Value, A::Error> {
468                    let mut enabled: Option<::Value<bool>> = None;
469                    let mut timeout: Option<::Value<u32>> = None;
470
471                    while let Some(__cfn_key) = ::serde::de::MapAccess::next_key::<String>(&mut map)? {
472                        match __cfn_key.as_ref() {
473                            "Enabled" => {
474                                enabled = ::serde::de::MapAccess::next_value(&mut map)?;
475                            }
476                            "Timeout" => {
477                                timeout = ::serde::de::MapAccess::next_value(&mut map)?;
478                            }
479                            _ => {}
480                        }
481                    }
482
483                    Ok(ConnectionDrainingPolicy {
484                        enabled: enabled.ok_or(::serde::de::Error::missing_field("Enabled"))?,
485                        timeout: timeout,
486                    })
487                }
488            }
489
490            d.deserialize_map(Visitor)
491        }
492    }
493
494    #[derive(Debug, Default)]
496    pub struct ConnectionSettings {
497        pub idle_timeout: ::Value<u32>,
502    }
503
504    impl ::codec::SerializeValue for ConnectionSettings {
505        fn serialize<S: ::serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
506            let mut map = ::serde::Serializer::serialize_map(s, None)?;
507            ::serde::ser::SerializeMap::serialize_entry(&mut map, "IdleTimeout", &self.idle_timeout)?;
508            ::serde::ser::SerializeMap::end(map)
509        }
510    }
511
512    impl ::codec::DeserializeValue for ConnectionSettings {
513        fn deserialize<'de, D: ::serde::Deserializer<'de>>(d: D) -> Result<ConnectionSettings, D::Error> {
514            struct Visitor;
515
516            impl<'de> ::serde::de::Visitor<'de> for Visitor {
517                type Value = ConnectionSettings;
518
519                fn expecting(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
520                    write!(f, "a struct of type ConnectionSettings")
521                }
522
523                fn visit_map<A: ::serde::de::MapAccess<'de>>(self, mut map: A) -> Result<Self::Value, A::Error> {
524                    let mut idle_timeout: Option<::Value<u32>> = None;
525
526                    while let Some(__cfn_key) = ::serde::de::MapAccess::next_key::<String>(&mut map)? {
527                        match __cfn_key.as_ref() {
528                            "IdleTimeout" => {
529                                idle_timeout = ::serde::de::MapAccess::next_value(&mut map)?;
530                            }
531                            _ => {}
532                        }
533                    }
534
535                    Ok(ConnectionSettings {
536                        idle_timeout: idle_timeout.ok_or(::serde::de::Error::missing_field("IdleTimeout"))?,
537                    })
538                }
539            }
540
541            d.deserialize_map(Visitor)
542        }
543    }
544
545    #[derive(Debug, Default)]
547    pub struct HealthCheck {
548        pub healthy_threshold: ::Value<String>,
553        pub interval: ::Value<String>,
558        pub target: ::Value<String>,
563        pub timeout: ::Value<String>,
568        pub unhealthy_threshold: ::Value<String>,
573    }
574
575    impl ::codec::SerializeValue for HealthCheck {
576        fn serialize<S: ::serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
577            let mut map = ::serde::Serializer::serialize_map(s, None)?;
578            ::serde::ser::SerializeMap::serialize_entry(&mut map, "HealthyThreshold", &self.healthy_threshold)?;
579            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Interval", &self.interval)?;
580            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Target", &self.target)?;
581            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Timeout", &self.timeout)?;
582            ::serde::ser::SerializeMap::serialize_entry(&mut map, "UnhealthyThreshold", &self.unhealthy_threshold)?;
583            ::serde::ser::SerializeMap::end(map)
584        }
585    }
586
587    impl ::codec::DeserializeValue for HealthCheck {
588        fn deserialize<'de, D: ::serde::Deserializer<'de>>(d: D) -> Result<HealthCheck, D::Error> {
589            struct Visitor;
590
591            impl<'de> ::serde::de::Visitor<'de> for Visitor {
592                type Value = HealthCheck;
593
594                fn expecting(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
595                    write!(f, "a struct of type HealthCheck")
596                }
597
598                fn visit_map<A: ::serde::de::MapAccess<'de>>(self, mut map: A) -> Result<Self::Value, A::Error> {
599                    let mut healthy_threshold: Option<::Value<String>> = None;
600                    let mut interval: Option<::Value<String>> = None;
601                    let mut target: Option<::Value<String>> = None;
602                    let mut timeout: Option<::Value<String>> = None;
603                    let mut unhealthy_threshold: Option<::Value<String>> = None;
604
605                    while let Some(__cfn_key) = ::serde::de::MapAccess::next_key::<String>(&mut map)? {
606                        match __cfn_key.as_ref() {
607                            "HealthyThreshold" => {
608                                healthy_threshold = ::serde::de::MapAccess::next_value(&mut map)?;
609                            }
610                            "Interval" => {
611                                interval = ::serde::de::MapAccess::next_value(&mut map)?;
612                            }
613                            "Target" => {
614                                target = ::serde::de::MapAccess::next_value(&mut map)?;
615                            }
616                            "Timeout" => {
617                                timeout = ::serde::de::MapAccess::next_value(&mut map)?;
618                            }
619                            "UnhealthyThreshold" => {
620                                unhealthy_threshold = ::serde::de::MapAccess::next_value(&mut map)?;
621                            }
622                            _ => {}
623                        }
624                    }
625
626                    Ok(HealthCheck {
627                        healthy_threshold: healthy_threshold.ok_or(::serde::de::Error::missing_field("HealthyThreshold"))?,
628                        interval: interval.ok_or(::serde::de::Error::missing_field("Interval"))?,
629                        target: target.ok_or(::serde::de::Error::missing_field("Target"))?,
630                        timeout: timeout.ok_or(::serde::de::Error::missing_field("Timeout"))?,
631                        unhealthy_threshold: unhealthy_threshold.ok_or(::serde::de::Error::missing_field("UnhealthyThreshold"))?,
632                    })
633                }
634            }
635
636            d.deserialize_map(Visitor)
637        }
638    }
639
640    #[derive(Debug, Default)]
642    pub struct LBCookieStickinessPolicy {
643        pub cookie_expiration_period: Option<::Value<String>>,
648        pub policy_name: Option<::Value<String>>,
653    }
654
655    impl ::codec::SerializeValue for LBCookieStickinessPolicy {
656        fn serialize<S: ::serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
657            let mut map = ::serde::Serializer::serialize_map(s, None)?;
658            if let Some(ref cookie_expiration_period) = self.cookie_expiration_period {
659                ::serde::ser::SerializeMap::serialize_entry(&mut map, "CookieExpirationPeriod", cookie_expiration_period)?;
660            }
661            if let Some(ref policy_name) = self.policy_name {
662                ::serde::ser::SerializeMap::serialize_entry(&mut map, "PolicyName", policy_name)?;
663            }
664            ::serde::ser::SerializeMap::end(map)
665        }
666    }
667
668    impl ::codec::DeserializeValue for LBCookieStickinessPolicy {
669        fn deserialize<'de, D: ::serde::Deserializer<'de>>(d: D) -> Result<LBCookieStickinessPolicy, D::Error> {
670            struct Visitor;
671
672            impl<'de> ::serde::de::Visitor<'de> for Visitor {
673                type Value = LBCookieStickinessPolicy;
674
675                fn expecting(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
676                    write!(f, "a struct of type LBCookieStickinessPolicy")
677                }
678
679                fn visit_map<A: ::serde::de::MapAccess<'de>>(self, mut map: A) -> Result<Self::Value, A::Error> {
680                    let mut cookie_expiration_period: Option<::Value<String>> = None;
681                    let mut policy_name: Option<::Value<String>> = None;
682
683                    while let Some(__cfn_key) = ::serde::de::MapAccess::next_key::<String>(&mut map)? {
684                        match __cfn_key.as_ref() {
685                            "CookieExpirationPeriod" => {
686                                cookie_expiration_period = ::serde::de::MapAccess::next_value(&mut map)?;
687                            }
688                            "PolicyName" => {
689                                policy_name = ::serde::de::MapAccess::next_value(&mut map)?;
690                            }
691                            _ => {}
692                        }
693                    }
694
695                    Ok(LBCookieStickinessPolicy {
696                        cookie_expiration_period: cookie_expiration_period,
697                        policy_name: policy_name,
698                    })
699                }
700            }
701
702            d.deserialize_map(Visitor)
703        }
704    }
705
706    #[derive(Debug, Default)]
708    pub struct Listeners {
709        pub instance_port: ::Value<String>,
714        pub instance_protocol: Option<::Value<String>>,
719        pub load_balancer_port: ::Value<String>,
724        pub policy_names: Option<::ValueList<String>>,
729        pub protocol: ::Value<String>,
734        pub ssl_certificate_id: Option<::Value<String>>,
739    }
740
741    impl ::codec::SerializeValue for Listeners {
742        fn serialize<S: ::serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
743            let mut map = ::serde::Serializer::serialize_map(s, None)?;
744            ::serde::ser::SerializeMap::serialize_entry(&mut map, "InstancePort", &self.instance_port)?;
745            if let Some(ref instance_protocol) = self.instance_protocol {
746                ::serde::ser::SerializeMap::serialize_entry(&mut map, "InstanceProtocol", instance_protocol)?;
747            }
748            ::serde::ser::SerializeMap::serialize_entry(&mut map, "LoadBalancerPort", &self.load_balancer_port)?;
749            if let Some(ref policy_names) = self.policy_names {
750                ::serde::ser::SerializeMap::serialize_entry(&mut map, "PolicyNames", policy_names)?;
751            }
752            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Protocol", &self.protocol)?;
753            if let Some(ref ssl_certificate_id) = self.ssl_certificate_id {
754                ::serde::ser::SerializeMap::serialize_entry(&mut map, "SSLCertificateId", ssl_certificate_id)?;
755            }
756            ::serde::ser::SerializeMap::end(map)
757        }
758    }
759
760    impl ::codec::DeserializeValue for Listeners {
761        fn deserialize<'de, D: ::serde::Deserializer<'de>>(d: D) -> Result<Listeners, D::Error> {
762            struct Visitor;
763
764            impl<'de> ::serde::de::Visitor<'de> for Visitor {
765                type Value = Listeners;
766
767                fn expecting(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
768                    write!(f, "a struct of type Listeners")
769                }
770
771                fn visit_map<A: ::serde::de::MapAccess<'de>>(self, mut map: A) -> Result<Self::Value, A::Error> {
772                    let mut instance_port: Option<::Value<String>> = None;
773                    let mut instance_protocol: Option<::Value<String>> = None;
774                    let mut load_balancer_port: Option<::Value<String>> = None;
775                    let mut policy_names: Option<::ValueList<String>> = None;
776                    let mut protocol: Option<::Value<String>> = None;
777                    let mut ssl_certificate_id: Option<::Value<String>> = None;
778
779                    while let Some(__cfn_key) = ::serde::de::MapAccess::next_key::<String>(&mut map)? {
780                        match __cfn_key.as_ref() {
781                            "InstancePort" => {
782                                instance_port = ::serde::de::MapAccess::next_value(&mut map)?;
783                            }
784                            "InstanceProtocol" => {
785                                instance_protocol = ::serde::de::MapAccess::next_value(&mut map)?;
786                            }
787                            "LoadBalancerPort" => {
788                                load_balancer_port = ::serde::de::MapAccess::next_value(&mut map)?;
789                            }
790                            "PolicyNames" => {
791                                policy_names = ::serde::de::MapAccess::next_value(&mut map)?;
792                            }
793                            "Protocol" => {
794                                protocol = ::serde::de::MapAccess::next_value(&mut map)?;
795                            }
796                            "SSLCertificateId" => {
797                                ssl_certificate_id = ::serde::de::MapAccess::next_value(&mut map)?;
798                            }
799                            _ => {}
800                        }
801                    }
802
803                    Ok(Listeners {
804                        instance_port: instance_port.ok_or(::serde::de::Error::missing_field("InstancePort"))?,
805                        instance_protocol: instance_protocol,
806                        load_balancer_port: load_balancer_port.ok_or(::serde::de::Error::missing_field("LoadBalancerPort"))?,
807                        policy_names: policy_names,
808                        protocol: protocol.ok_or(::serde::de::Error::missing_field("Protocol"))?,
809                        ssl_certificate_id: ssl_certificate_id,
810                    })
811                }
812            }
813
814            d.deserialize_map(Visitor)
815        }
816    }
817
818    #[derive(Debug, Default)]
820    pub struct Policies {
821        pub attributes: ::ValueList<::json::Value>,
826        pub instance_ports: Option<::ValueList<String>>,
831        pub load_balancer_ports: Option<::ValueList<String>>,
836        pub policy_name: ::Value<String>,
841        pub policy_type: ::Value<String>,
846    }
847
848    impl ::codec::SerializeValue for Policies {
849        fn serialize<S: ::serde::Serializer>(&self, s: S) -> Result<S::Ok, S::Error> {
850            let mut map = ::serde::Serializer::serialize_map(s, None)?;
851            ::serde::ser::SerializeMap::serialize_entry(&mut map, "Attributes", &self.attributes)?;
852            if let Some(ref instance_ports) = self.instance_ports {
853                ::serde::ser::SerializeMap::serialize_entry(&mut map, "InstancePorts", instance_ports)?;
854            }
855            if let Some(ref load_balancer_ports) = self.load_balancer_ports {
856                ::serde::ser::SerializeMap::serialize_entry(&mut map, "LoadBalancerPorts", load_balancer_ports)?;
857            }
858            ::serde::ser::SerializeMap::serialize_entry(&mut map, "PolicyName", &self.policy_name)?;
859            ::serde::ser::SerializeMap::serialize_entry(&mut map, "PolicyType", &self.policy_type)?;
860            ::serde::ser::SerializeMap::end(map)
861        }
862    }
863
864    impl ::codec::DeserializeValue for Policies {
865        fn deserialize<'de, D: ::serde::Deserializer<'de>>(d: D) -> Result<Policies, D::Error> {
866            struct Visitor;
867
868            impl<'de> ::serde::de::Visitor<'de> for Visitor {
869                type Value = Policies;
870
871                fn expecting(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
872                    write!(f, "a struct of type Policies")
873                }
874
875                fn visit_map<A: ::serde::de::MapAccess<'de>>(self, mut map: A) -> Result<Self::Value, A::Error> {
876                    let mut attributes: Option<::ValueList<::json::Value>> = None;
877                    let mut instance_ports: Option<::ValueList<String>> = None;
878                    let mut load_balancer_ports: Option<::ValueList<String>> = None;
879                    let mut policy_name: Option<::Value<String>> = None;
880                    let mut policy_type: Option<::Value<String>> = None;
881
882                    while let Some(__cfn_key) = ::serde::de::MapAccess::next_key::<String>(&mut map)? {
883                        match __cfn_key.as_ref() {
884                            "Attributes" => {
885                                attributes = ::serde::de::MapAccess::next_value(&mut map)?;
886                            }
887                            "InstancePorts" => {
888                                instance_ports = ::serde::de::MapAccess::next_value(&mut map)?;
889                            }
890                            "LoadBalancerPorts" => {
891                                load_balancer_ports = ::serde::de::MapAccess::next_value(&mut map)?;
892                            }
893                            "PolicyName" => {
894                                policy_name = ::serde::de::MapAccess::next_value(&mut map)?;
895                            }
896                            "PolicyType" => {
897                                policy_type = ::serde::de::MapAccess::next_value(&mut map)?;
898                            }
899                            _ => {}
900                        }
901                    }
902
903                    Ok(Policies {
904                        attributes: attributes.ok_or(::serde::de::Error::missing_field("Attributes"))?,
905                        instance_ports: instance_ports,
906                        load_balancer_ports: load_balancer_ports,
907                        policy_name: policy_name.ok_or(::serde::de::Error::missing_field("PolicyName"))?,
908                        policy_type: policy_type.ok_or(::serde::de::Error::missing_field("PolicyType"))?,
909                    })
910                }
911            }
912
913            d.deserialize_map(Visitor)
914        }
915    }
916}