1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/elasticloadbalancing/ElasticLoadBalancing_EXPORTS.h>
8 #include <aws/elasticloadbalancing/ElasticLoadBalancingRequest.h>
9 #include <aws/core/utils/memory/stl/AWSString.h>
10 #include <aws/core/utils/memory/stl/AWSVector.h>
11 #include <aws/elasticloadbalancing/model/Listener.h>
12 #include <aws/elasticloadbalancing/model/Tag.h>
13 #include <utility>
14 
15 namespace Aws
16 {
17 namespace ElasticLoadBalancing
18 {
19 namespace Model
20 {
21 
22   /**
23    * <p>Contains the parameters for CreateLoadBalancer.</p><p><h3>See Also:</h3>   <a
24    * href="http://docs.aws.amazon.com/goto/WebAPI/elasticloadbalancing-2012-06-01/CreateAccessPointInput">AWS
25    * API Reference</a></p>
26    */
27   class AWS_ELASTICLOADBALANCING_API CreateLoadBalancerRequest : public ElasticLoadBalancingRequest
28   {
29   public:
30     CreateLoadBalancerRequest();
31 
32     // Service request name is the Operation name which will send this request out,
33     // each operation should has unique request name, so that we can get operation's name from this request.
34     // Note: this is not true for response, multiple operations may have the same response name,
35     // so we can not get operation's name from response.
GetServiceRequestName()36     inline virtual const char* GetServiceRequestName() const override { return "CreateLoadBalancer"; }
37 
38     Aws::String SerializePayload() const override;
39 
40   protected:
41     void DumpBodyToUrl(Aws::Http::URI& uri ) const override;
42 
43   public:
44 
45     /**
46      * <p>The name of the load balancer.</p> <p>This name must be unique within your
47      * set of load balancers for the region, must have a maximum of 32 characters, must
48      * contain only alphanumeric characters or hyphens, and cannot begin or end with a
49      * hyphen.</p>
50      */
GetLoadBalancerName()51     inline const Aws::String& GetLoadBalancerName() const{ return m_loadBalancerName; }
52 
53     /**
54      * <p>The name of the load balancer.</p> <p>This name must be unique within your
55      * set of load balancers for the region, must have a maximum of 32 characters, must
56      * contain only alphanumeric characters or hyphens, and cannot begin or end with a
57      * hyphen.</p>
58      */
LoadBalancerNameHasBeenSet()59     inline bool LoadBalancerNameHasBeenSet() const { return m_loadBalancerNameHasBeenSet; }
60 
61     /**
62      * <p>The name of the load balancer.</p> <p>This name must be unique within your
63      * set of load balancers for the region, must have a maximum of 32 characters, must
64      * contain only alphanumeric characters or hyphens, and cannot begin or end with a
65      * hyphen.</p>
66      */
SetLoadBalancerName(const Aws::String & value)67     inline void SetLoadBalancerName(const Aws::String& value) { m_loadBalancerNameHasBeenSet = true; m_loadBalancerName = value; }
68 
69     /**
70      * <p>The name of the load balancer.</p> <p>This name must be unique within your
71      * set of load balancers for the region, must have a maximum of 32 characters, must
72      * contain only alphanumeric characters or hyphens, and cannot begin or end with a
73      * hyphen.</p>
74      */
SetLoadBalancerName(Aws::String && value)75     inline void SetLoadBalancerName(Aws::String&& value) { m_loadBalancerNameHasBeenSet = true; m_loadBalancerName = std::move(value); }
76 
77     /**
78      * <p>The name of the load balancer.</p> <p>This name must be unique within your
79      * set of load balancers for the region, must have a maximum of 32 characters, must
80      * contain only alphanumeric characters or hyphens, and cannot begin or end with a
81      * hyphen.</p>
82      */
SetLoadBalancerName(const char * value)83     inline void SetLoadBalancerName(const char* value) { m_loadBalancerNameHasBeenSet = true; m_loadBalancerName.assign(value); }
84 
85     /**
86      * <p>The name of the load balancer.</p> <p>This name must be unique within your
87      * set of load balancers for the region, must have a maximum of 32 characters, must
88      * contain only alphanumeric characters or hyphens, and cannot begin or end with a
89      * hyphen.</p>
90      */
WithLoadBalancerName(const Aws::String & value)91     inline CreateLoadBalancerRequest& WithLoadBalancerName(const Aws::String& value) { SetLoadBalancerName(value); return *this;}
92 
93     /**
94      * <p>The name of the load balancer.</p> <p>This name must be unique within your
95      * set of load balancers for the region, must have a maximum of 32 characters, must
96      * contain only alphanumeric characters or hyphens, and cannot begin or end with a
97      * hyphen.</p>
98      */
WithLoadBalancerName(Aws::String && value)99     inline CreateLoadBalancerRequest& WithLoadBalancerName(Aws::String&& value) { SetLoadBalancerName(std::move(value)); return *this;}
100 
101     /**
102      * <p>The name of the load balancer.</p> <p>This name must be unique within your
103      * set of load balancers for the region, must have a maximum of 32 characters, must
104      * contain only alphanumeric characters or hyphens, and cannot begin or end with a
105      * hyphen.</p>
106      */
WithLoadBalancerName(const char * value)107     inline CreateLoadBalancerRequest& WithLoadBalancerName(const char* value) { SetLoadBalancerName(value); return *this;}
108 
109 
110     /**
111      * <p>The listeners.</p> <p>For more information, see <a
112      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html">Listeners
113      * for Your Classic Load Balancer</a> in the <i>Classic Load Balancers
114      * Guide</i>.</p>
115      */
GetListeners()116     inline const Aws::Vector<Listener>& GetListeners() const{ return m_listeners; }
117 
118     /**
119      * <p>The listeners.</p> <p>For more information, see <a
120      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html">Listeners
121      * for Your Classic Load Balancer</a> in the <i>Classic Load Balancers
122      * Guide</i>.</p>
123      */
ListenersHasBeenSet()124     inline bool ListenersHasBeenSet() const { return m_listenersHasBeenSet; }
125 
126     /**
127      * <p>The listeners.</p> <p>For more information, see <a
128      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html">Listeners
129      * for Your Classic Load Balancer</a> in the <i>Classic Load Balancers
130      * Guide</i>.</p>
131      */
SetListeners(const Aws::Vector<Listener> & value)132     inline void SetListeners(const Aws::Vector<Listener>& value) { m_listenersHasBeenSet = true; m_listeners = value; }
133 
134     /**
135      * <p>The listeners.</p> <p>For more information, see <a
136      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html">Listeners
137      * for Your Classic Load Balancer</a> in the <i>Classic Load Balancers
138      * Guide</i>.</p>
139      */
SetListeners(Aws::Vector<Listener> && value)140     inline void SetListeners(Aws::Vector<Listener>&& value) { m_listenersHasBeenSet = true; m_listeners = std::move(value); }
141 
142     /**
143      * <p>The listeners.</p> <p>For more information, see <a
144      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html">Listeners
145      * for Your Classic Load Balancer</a> in the <i>Classic Load Balancers
146      * Guide</i>.</p>
147      */
WithListeners(const Aws::Vector<Listener> & value)148     inline CreateLoadBalancerRequest& WithListeners(const Aws::Vector<Listener>& value) { SetListeners(value); return *this;}
149 
150     /**
151      * <p>The listeners.</p> <p>For more information, see <a
152      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html">Listeners
153      * for Your Classic Load Balancer</a> in the <i>Classic Load Balancers
154      * Guide</i>.</p>
155      */
WithListeners(Aws::Vector<Listener> && value)156     inline CreateLoadBalancerRequest& WithListeners(Aws::Vector<Listener>&& value) { SetListeners(std::move(value)); return *this;}
157 
158     /**
159      * <p>The listeners.</p> <p>For more information, see <a
160      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html">Listeners
161      * for Your Classic Load Balancer</a> in the <i>Classic Load Balancers
162      * Guide</i>.</p>
163      */
AddListeners(const Listener & value)164     inline CreateLoadBalancerRequest& AddListeners(const Listener& value) { m_listenersHasBeenSet = true; m_listeners.push_back(value); return *this; }
165 
166     /**
167      * <p>The listeners.</p> <p>For more information, see <a
168      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-listener-config.html">Listeners
169      * for Your Classic Load Balancer</a> in the <i>Classic Load Balancers
170      * Guide</i>.</p>
171      */
AddListeners(Listener && value)172     inline CreateLoadBalancerRequest& AddListeners(Listener&& value) { m_listenersHasBeenSet = true; m_listeners.push_back(std::move(value)); return *this; }
173 
174 
175     /**
176      * <p>One or more Availability Zones from the same region as the load balancer.</p>
177      * <p>You must specify at least one Availability Zone.</p> <p>You can add more
178      * Availability Zones after you create the load balancer using
179      * <a>EnableAvailabilityZonesForLoadBalancer</a>.</p>
180      */
GetAvailabilityZones()181     inline const Aws::Vector<Aws::String>& GetAvailabilityZones() const{ return m_availabilityZones; }
182 
183     /**
184      * <p>One or more Availability Zones from the same region as the load balancer.</p>
185      * <p>You must specify at least one Availability Zone.</p> <p>You can add more
186      * Availability Zones after you create the load balancer using
187      * <a>EnableAvailabilityZonesForLoadBalancer</a>.</p>
188      */
AvailabilityZonesHasBeenSet()189     inline bool AvailabilityZonesHasBeenSet() const { return m_availabilityZonesHasBeenSet; }
190 
191     /**
192      * <p>One or more Availability Zones from the same region as the load balancer.</p>
193      * <p>You must specify at least one Availability Zone.</p> <p>You can add more
194      * Availability Zones after you create the load balancer using
195      * <a>EnableAvailabilityZonesForLoadBalancer</a>.</p>
196      */
SetAvailabilityZones(const Aws::Vector<Aws::String> & value)197     inline void SetAvailabilityZones(const Aws::Vector<Aws::String>& value) { m_availabilityZonesHasBeenSet = true; m_availabilityZones = value; }
198 
199     /**
200      * <p>One or more Availability Zones from the same region as the load balancer.</p>
201      * <p>You must specify at least one Availability Zone.</p> <p>You can add more
202      * Availability Zones after you create the load balancer using
203      * <a>EnableAvailabilityZonesForLoadBalancer</a>.</p>
204      */
SetAvailabilityZones(Aws::Vector<Aws::String> && value)205     inline void SetAvailabilityZones(Aws::Vector<Aws::String>&& value) { m_availabilityZonesHasBeenSet = true; m_availabilityZones = std::move(value); }
206 
207     /**
208      * <p>One or more Availability Zones from the same region as the load balancer.</p>
209      * <p>You must specify at least one Availability Zone.</p> <p>You can add more
210      * Availability Zones after you create the load balancer using
211      * <a>EnableAvailabilityZonesForLoadBalancer</a>.</p>
212      */
WithAvailabilityZones(const Aws::Vector<Aws::String> & value)213     inline CreateLoadBalancerRequest& WithAvailabilityZones(const Aws::Vector<Aws::String>& value) { SetAvailabilityZones(value); return *this;}
214 
215     /**
216      * <p>One or more Availability Zones from the same region as the load balancer.</p>
217      * <p>You must specify at least one Availability Zone.</p> <p>You can add more
218      * Availability Zones after you create the load balancer using
219      * <a>EnableAvailabilityZonesForLoadBalancer</a>.</p>
220      */
WithAvailabilityZones(Aws::Vector<Aws::String> && value)221     inline CreateLoadBalancerRequest& WithAvailabilityZones(Aws::Vector<Aws::String>&& value) { SetAvailabilityZones(std::move(value)); return *this;}
222 
223     /**
224      * <p>One or more Availability Zones from the same region as the load balancer.</p>
225      * <p>You must specify at least one Availability Zone.</p> <p>You can add more
226      * Availability Zones after you create the load balancer using
227      * <a>EnableAvailabilityZonesForLoadBalancer</a>.</p>
228      */
AddAvailabilityZones(const Aws::String & value)229     inline CreateLoadBalancerRequest& AddAvailabilityZones(const Aws::String& value) { m_availabilityZonesHasBeenSet = true; m_availabilityZones.push_back(value); return *this; }
230 
231     /**
232      * <p>One or more Availability Zones from the same region as the load balancer.</p>
233      * <p>You must specify at least one Availability Zone.</p> <p>You can add more
234      * Availability Zones after you create the load balancer using
235      * <a>EnableAvailabilityZonesForLoadBalancer</a>.</p>
236      */
AddAvailabilityZones(Aws::String && value)237     inline CreateLoadBalancerRequest& AddAvailabilityZones(Aws::String&& value) { m_availabilityZonesHasBeenSet = true; m_availabilityZones.push_back(std::move(value)); return *this; }
238 
239     /**
240      * <p>One or more Availability Zones from the same region as the load balancer.</p>
241      * <p>You must specify at least one Availability Zone.</p> <p>You can add more
242      * Availability Zones after you create the load balancer using
243      * <a>EnableAvailabilityZonesForLoadBalancer</a>.</p>
244      */
AddAvailabilityZones(const char * value)245     inline CreateLoadBalancerRequest& AddAvailabilityZones(const char* value) { m_availabilityZonesHasBeenSet = true; m_availabilityZones.push_back(value); return *this; }
246 
247 
248     /**
249      * <p>The IDs of the subnets in your VPC to attach to the load balancer. Specify
250      * one subnet per Availability Zone specified in
251      * <code>AvailabilityZones</code>.</p>
252      */
GetSubnets()253     inline const Aws::Vector<Aws::String>& GetSubnets() const{ return m_subnets; }
254 
255     /**
256      * <p>The IDs of the subnets in your VPC to attach to the load balancer. Specify
257      * one subnet per Availability Zone specified in
258      * <code>AvailabilityZones</code>.</p>
259      */
SubnetsHasBeenSet()260     inline bool SubnetsHasBeenSet() const { return m_subnetsHasBeenSet; }
261 
262     /**
263      * <p>The IDs of the subnets in your VPC to attach to the load balancer. Specify
264      * one subnet per Availability Zone specified in
265      * <code>AvailabilityZones</code>.</p>
266      */
SetSubnets(const Aws::Vector<Aws::String> & value)267     inline void SetSubnets(const Aws::Vector<Aws::String>& value) { m_subnetsHasBeenSet = true; m_subnets = value; }
268 
269     /**
270      * <p>The IDs of the subnets in your VPC to attach to the load balancer. Specify
271      * one subnet per Availability Zone specified in
272      * <code>AvailabilityZones</code>.</p>
273      */
SetSubnets(Aws::Vector<Aws::String> && value)274     inline void SetSubnets(Aws::Vector<Aws::String>&& value) { m_subnetsHasBeenSet = true; m_subnets = std::move(value); }
275 
276     /**
277      * <p>The IDs of the subnets in your VPC to attach to the load balancer. Specify
278      * one subnet per Availability Zone specified in
279      * <code>AvailabilityZones</code>.</p>
280      */
WithSubnets(const Aws::Vector<Aws::String> & value)281     inline CreateLoadBalancerRequest& WithSubnets(const Aws::Vector<Aws::String>& value) { SetSubnets(value); return *this;}
282 
283     /**
284      * <p>The IDs of the subnets in your VPC to attach to the load balancer. Specify
285      * one subnet per Availability Zone specified in
286      * <code>AvailabilityZones</code>.</p>
287      */
WithSubnets(Aws::Vector<Aws::String> && value)288     inline CreateLoadBalancerRequest& WithSubnets(Aws::Vector<Aws::String>&& value) { SetSubnets(std::move(value)); return *this;}
289 
290     /**
291      * <p>The IDs of the subnets in your VPC to attach to the load balancer. Specify
292      * one subnet per Availability Zone specified in
293      * <code>AvailabilityZones</code>.</p>
294      */
AddSubnets(const Aws::String & value)295     inline CreateLoadBalancerRequest& AddSubnets(const Aws::String& value) { m_subnetsHasBeenSet = true; m_subnets.push_back(value); return *this; }
296 
297     /**
298      * <p>The IDs of the subnets in your VPC to attach to the load balancer. Specify
299      * one subnet per Availability Zone specified in
300      * <code>AvailabilityZones</code>.</p>
301      */
AddSubnets(Aws::String && value)302     inline CreateLoadBalancerRequest& AddSubnets(Aws::String&& value) { m_subnetsHasBeenSet = true; m_subnets.push_back(std::move(value)); return *this; }
303 
304     /**
305      * <p>The IDs of the subnets in your VPC to attach to the load balancer. Specify
306      * one subnet per Availability Zone specified in
307      * <code>AvailabilityZones</code>.</p>
308      */
AddSubnets(const char * value)309     inline CreateLoadBalancerRequest& AddSubnets(const char* value) { m_subnetsHasBeenSet = true; m_subnets.push_back(value); return *this; }
310 
311 
312     /**
313      * <p>The IDs of the security groups to assign to the load balancer.</p>
314      */
GetSecurityGroups()315     inline const Aws::Vector<Aws::String>& GetSecurityGroups() const{ return m_securityGroups; }
316 
317     /**
318      * <p>The IDs of the security groups to assign to the load balancer.</p>
319      */
SecurityGroupsHasBeenSet()320     inline bool SecurityGroupsHasBeenSet() const { return m_securityGroupsHasBeenSet; }
321 
322     /**
323      * <p>The IDs of the security groups to assign to the load balancer.</p>
324      */
SetSecurityGroups(const Aws::Vector<Aws::String> & value)325     inline void SetSecurityGroups(const Aws::Vector<Aws::String>& value) { m_securityGroupsHasBeenSet = true; m_securityGroups = value; }
326 
327     /**
328      * <p>The IDs of the security groups to assign to the load balancer.</p>
329      */
SetSecurityGroups(Aws::Vector<Aws::String> && value)330     inline void SetSecurityGroups(Aws::Vector<Aws::String>&& value) { m_securityGroupsHasBeenSet = true; m_securityGroups = std::move(value); }
331 
332     /**
333      * <p>The IDs of the security groups to assign to the load balancer.</p>
334      */
WithSecurityGroups(const Aws::Vector<Aws::String> & value)335     inline CreateLoadBalancerRequest& WithSecurityGroups(const Aws::Vector<Aws::String>& value) { SetSecurityGroups(value); return *this;}
336 
337     /**
338      * <p>The IDs of the security groups to assign to the load balancer.</p>
339      */
WithSecurityGroups(Aws::Vector<Aws::String> && value)340     inline CreateLoadBalancerRequest& WithSecurityGroups(Aws::Vector<Aws::String>&& value) { SetSecurityGroups(std::move(value)); return *this;}
341 
342     /**
343      * <p>The IDs of the security groups to assign to the load balancer.</p>
344      */
AddSecurityGroups(const Aws::String & value)345     inline CreateLoadBalancerRequest& AddSecurityGroups(const Aws::String& value) { m_securityGroupsHasBeenSet = true; m_securityGroups.push_back(value); return *this; }
346 
347     /**
348      * <p>The IDs of the security groups to assign to the load balancer.</p>
349      */
AddSecurityGroups(Aws::String && value)350     inline CreateLoadBalancerRequest& AddSecurityGroups(Aws::String&& value) { m_securityGroupsHasBeenSet = true; m_securityGroups.push_back(std::move(value)); return *this; }
351 
352     /**
353      * <p>The IDs of the security groups to assign to the load balancer.</p>
354      */
AddSecurityGroups(const char * value)355     inline CreateLoadBalancerRequest& AddSecurityGroups(const char* value) { m_securityGroupsHasBeenSet = true; m_securityGroups.push_back(value); return *this; }
356 
357 
358     /**
359      * <p>The type of a load balancer. Valid only for load balancers in a VPC.</p>
360      * <p>By default, Elastic Load Balancing creates an Internet-facing load balancer
361      * with a DNS name that resolves to public IP addresses. For more information about
362      * Internet-facing and Internal load balancers, see <a
363      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#load-balancer-scheme">Load
364      * Balancer Scheme</a> in the <i>Elastic Load Balancing User Guide</i>.</p>
365      * <p>Specify <code>internal</code> to create a load balancer with a DNS name that
366      * resolves to private IP addresses.</p>
367      */
GetScheme()368     inline const Aws::String& GetScheme() const{ return m_scheme; }
369 
370     /**
371      * <p>The type of a load balancer. Valid only for load balancers in a VPC.</p>
372      * <p>By default, Elastic Load Balancing creates an Internet-facing load balancer
373      * with a DNS name that resolves to public IP addresses. For more information about
374      * Internet-facing and Internal load balancers, see <a
375      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#load-balancer-scheme">Load
376      * Balancer Scheme</a> in the <i>Elastic Load Balancing User Guide</i>.</p>
377      * <p>Specify <code>internal</code> to create a load balancer with a DNS name that
378      * resolves to private IP addresses.</p>
379      */
SchemeHasBeenSet()380     inline bool SchemeHasBeenSet() const { return m_schemeHasBeenSet; }
381 
382     /**
383      * <p>The type of a load balancer. Valid only for load balancers in a VPC.</p>
384      * <p>By default, Elastic Load Balancing creates an Internet-facing load balancer
385      * with a DNS name that resolves to public IP addresses. For more information about
386      * Internet-facing and Internal load balancers, see <a
387      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#load-balancer-scheme">Load
388      * Balancer Scheme</a> in the <i>Elastic Load Balancing User Guide</i>.</p>
389      * <p>Specify <code>internal</code> to create a load balancer with a DNS name that
390      * resolves to private IP addresses.</p>
391      */
SetScheme(const Aws::String & value)392     inline void SetScheme(const Aws::String& value) { m_schemeHasBeenSet = true; m_scheme = value; }
393 
394     /**
395      * <p>The type of a load balancer. Valid only for load balancers in a VPC.</p>
396      * <p>By default, Elastic Load Balancing creates an Internet-facing load balancer
397      * with a DNS name that resolves to public IP addresses. For more information about
398      * Internet-facing and Internal load balancers, see <a
399      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#load-balancer-scheme">Load
400      * Balancer Scheme</a> in the <i>Elastic Load Balancing User Guide</i>.</p>
401      * <p>Specify <code>internal</code> to create a load balancer with a DNS name that
402      * resolves to private IP addresses.</p>
403      */
SetScheme(Aws::String && value)404     inline void SetScheme(Aws::String&& value) { m_schemeHasBeenSet = true; m_scheme = std::move(value); }
405 
406     /**
407      * <p>The type of a load balancer. Valid only for load balancers in a VPC.</p>
408      * <p>By default, Elastic Load Balancing creates an Internet-facing load balancer
409      * with a DNS name that resolves to public IP addresses. For more information about
410      * Internet-facing and Internal load balancers, see <a
411      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#load-balancer-scheme">Load
412      * Balancer Scheme</a> in the <i>Elastic Load Balancing User Guide</i>.</p>
413      * <p>Specify <code>internal</code> to create a load balancer with a DNS name that
414      * resolves to private IP addresses.</p>
415      */
SetScheme(const char * value)416     inline void SetScheme(const char* value) { m_schemeHasBeenSet = true; m_scheme.assign(value); }
417 
418     /**
419      * <p>The type of a load balancer. Valid only for load balancers in a VPC.</p>
420      * <p>By default, Elastic Load Balancing creates an Internet-facing load balancer
421      * with a DNS name that resolves to public IP addresses. For more information about
422      * Internet-facing and Internal load balancers, see <a
423      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#load-balancer-scheme">Load
424      * Balancer Scheme</a> in the <i>Elastic Load Balancing User Guide</i>.</p>
425      * <p>Specify <code>internal</code> to create a load balancer with a DNS name that
426      * resolves to private IP addresses.</p>
427      */
WithScheme(const Aws::String & value)428     inline CreateLoadBalancerRequest& WithScheme(const Aws::String& value) { SetScheme(value); return *this;}
429 
430     /**
431      * <p>The type of a load balancer. Valid only for load balancers in a VPC.</p>
432      * <p>By default, Elastic Load Balancing creates an Internet-facing load balancer
433      * with a DNS name that resolves to public IP addresses. For more information about
434      * Internet-facing and Internal load balancers, see <a
435      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#load-balancer-scheme">Load
436      * Balancer Scheme</a> in the <i>Elastic Load Balancing User Guide</i>.</p>
437      * <p>Specify <code>internal</code> to create a load balancer with a DNS name that
438      * resolves to private IP addresses.</p>
439      */
WithScheme(Aws::String && value)440     inline CreateLoadBalancerRequest& WithScheme(Aws::String&& value) { SetScheme(std::move(value)); return *this;}
441 
442     /**
443      * <p>The type of a load balancer. Valid only for load balancers in a VPC.</p>
444      * <p>By default, Elastic Load Balancing creates an Internet-facing load balancer
445      * with a DNS name that resolves to public IP addresses. For more information about
446      * Internet-facing and Internal load balancers, see <a
447      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#load-balancer-scheme">Load
448      * Balancer Scheme</a> in the <i>Elastic Load Balancing User Guide</i>.</p>
449      * <p>Specify <code>internal</code> to create a load balancer with a DNS name that
450      * resolves to private IP addresses.</p>
451      */
WithScheme(const char * value)452     inline CreateLoadBalancerRequest& WithScheme(const char* value) { SetScheme(value); return *this;}
453 
454 
455     /**
456      * <p>A list of tags to assign to the load balancer.</p> <p>For more information
457      * about tagging your load balancer, see <a
458      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/add-remove-tags.html">Tag
459      * Your Classic Load Balancer</a> in the <i>Classic Load Balancers Guide</i>.</p>
460      */
GetTags()461     inline const Aws::Vector<Tag>& GetTags() const{ return m_tags; }
462 
463     /**
464      * <p>A list of tags to assign to the load balancer.</p> <p>For more information
465      * about tagging your load balancer, see <a
466      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/add-remove-tags.html">Tag
467      * Your Classic Load Balancer</a> in the <i>Classic Load Balancers Guide</i>.</p>
468      */
TagsHasBeenSet()469     inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; }
470 
471     /**
472      * <p>A list of tags to assign to the load balancer.</p> <p>For more information
473      * about tagging your load balancer, see <a
474      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/add-remove-tags.html">Tag
475      * Your Classic Load Balancer</a> in the <i>Classic Load Balancers Guide</i>.</p>
476      */
SetTags(const Aws::Vector<Tag> & value)477     inline void SetTags(const Aws::Vector<Tag>& value) { m_tagsHasBeenSet = true; m_tags = value; }
478 
479     /**
480      * <p>A list of tags to assign to the load balancer.</p> <p>For more information
481      * about tagging your load balancer, see <a
482      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/add-remove-tags.html">Tag
483      * Your Classic Load Balancer</a> in the <i>Classic Load Balancers Guide</i>.</p>
484      */
SetTags(Aws::Vector<Tag> && value)485     inline void SetTags(Aws::Vector<Tag>&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); }
486 
487     /**
488      * <p>A list of tags to assign to the load balancer.</p> <p>For more information
489      * about tagging your load balancer, see <a
490      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/add-remove-tags.html">Tag
491      * Your Classic Load Balancer</a> in the <i>Classic Load Balancers Guide</i>.</p>
492      */
WithTags(const Aws::Vector<Tag> & value)493     inline CreateLoadBalancerRequest& WithTags(const Aws::Vector<Tag>& value) { SetTags(value); return *this;}
494 
495     /**
496      * <p>A list of tags to assign to the load balancer.</p> <p>For more information
497      * about tagging your load balancer, see <a
498      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/add-remove-tags.html">Tag
499      * Your Classic Load Balancer</a> in the <i>Classic Load Balancers Guide</i>.</p>
500      */
WithTags(Aws::Vector<Tag> && value)501     inline CreateLoadBalancerRequest& WithTags(Aws::Vector<Tag>&& value) { SetTags(std::move(value)); return *this;}
502 
503     /**
504      * <p>A list of tags to assign to the load balancer.</p> <p>For more information
505      * about tagging your load balancer, see <a
506      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/add-remove-tags.html">Tag
507      * Your Classic Load Balancer</a> in the <i>Classic Load Balancers Guide</i>.</p>
508      */
AddTags(const Tag & value)509     inline CreateLoadBalancerRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; }
510 
511     /**
512      * <p>A list of tags to assign to the load balancer.</p> <p>For more information
513      * about tagging your load balancer, see <a
514      * href="https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/add-remove-tags.html">Tag
515      * Your Classic Load Balancer</a> in the <i>Classic Load Balancers Guide</i>.</p>
516      */
AddTags(Tag && value)517     inline CreateLoadBalancerRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; }
518 
519   private:
520 
521     Aws::String m_loadBalancerName;
522     bool m_loadBalancerNameHasBeenSet;
523 
524     Aws::Vector<Listener> m_listeners;
525     bool m_listenersHasBeenSet;
526 
527     Aws::Vector<Aws::String> m_availabilityZones;
528     bool m_availabilityZonesHasBeenSet;
529 
530     Aws::Vector<Aws::String> m_subnets;
531     bool m_subnetsHasBeenSet;
532 
533     Aws::Vector<Aws::String> m_securityGroups;
534     bool m_securityGroupsHasBeenSet;
535 
536     Aws::String m_scheme;
537     bool m_schemeHasBeenSet;
538 
539     Aws::Vector<Tag> m_tags;
540     bool m_tagsHasBeenSet;
541   };
542 
543 } // namespace Model
544 } // namespace ElasticLoadBalancing
545 } // namespace Aws
546