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/ec2/EC2_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSStreamFwd.h>
9 #include <aws/ec2/model/CapacityReservationPreference.h>
10 #include <aws/ec2/model/CapacityReservationTarget.h>
11 #include <utility>
12 
13 namespace Aws
14 {
15 namespace Utils
16 {
17 namespace Xml
18 {
19   class XmlNode;
20 } // namespace Xml
21 } // namespace Utils
22 namespace EC2
23 {
24 namespace Model
25 {
26 
27   /**
28    * <p>Describes an instance's Capacity Reservation targeting option. You can
29    * specify only one parameter at a time. If you specify
30    * <code>CapacityReservationPreference</code> and
31    * <code>CapacityReservationTarget</code>, the request fails.</p> <p>Use the
32    * <code>CapacityReservationPreference</code> parameter to configure the instance
33    * to run as an On-Demand Instance or to run in any <code>open</code> Capacity
34    * Reservation that has matching attributes (instance type, platform, Availability
35    * Zone). Use the <code>CapacityReservationTarget</code> parameter to explicitly
36    * target a specific Capacity Reservation or a Capacity Reservation
37    * group.</p><p><h3>See Also:</h3>   <a
38    * href="http://docs.aws.amazon.com/goto/WebAPI/ec2-2016-11-15/CapacityReservationSpecification">AWS
39    * API Reference</a></p>
40    */
41   class AWS_EC2_API CapacityReservationSpecification
42   {
43   public:
44     CapacityReservationSpecification();
45     CapacityReservationSpecification(const Aws::Utils::Xml::XmlNode& xmlNode);
46     CapacityReservationSpecification& operator=(const Aws::Utils::Xml::XmlNode& xmlNode);
47 
48     void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const;
49     void OutputToStream(Aws::OStream& oStream, const char* location) const;
50 
51 
52     /**
53      * <p>Indicates the instance's Capacity Reservation preferences. Possible
54      * preferences include:</p> <ul> <li> <p> <code>open</code> - The instance can run
55      * in any <code>open</code> Capacity Reservation that has matching attributes
56      * (instance type, platform, Availability Zone).</p> </li> <li> <p>
57      * <code>none</code> - The instance avoids running in a Capacity Reservation even
58      * if one is available. The instance runs as an On-Demand Instance.</p> </li> </ul>
59      */
GetCapacityReservationPreference()60     inline const CapacityReservationPreference& GetCapacityReservationPreference() const{ return m_capacityReservationPreference; }
61 
62     /**
63      * <p>Indicates the instance's Capacity Reservation preferences. Possible
64      * preferences include:</p> <ul> <li> <p> <code>open</code> - The instance can run
65      * in any <code>open</code> Capacity Reservation that has matching attributes
66      * (instance type, platform, Availability Zone).</p> </li> <li> <p>
67      * <code>none</code> - The instance avoids running in a Capacity Reservation even
68      * if one is available. The instance runs as an On-Demand Instance.</p> </li> </ul>
69      */
CapacityReservationPreferenceHasBeenSet()70     inline bool CapacityReservationPreferenceHasBeenSet() const { return m_capacityReservationPreferenceHasBeenSet; }
71 
72     /**
73      * <p>Indicates the instance's Capacity Reservation preferences. Possible
74      * preferences include:</p> <ul> <li> <p> <code>open</code> - The instance can run
75      * in any <code>open</code> Capacity Reservation that has matching attributes
76      * (instance type, platform, Availability Zone).</p> </li> <li> <p>
77      * <code>none</code> - The instance avoids running in a Capacity Reservation even
78      * if one is available. The instance runs as an On-Demand Instance.</p> </li> </ul>
79      */
SetCapacityReservationPreference(const CapacityReservationPreference & value)80     inline void SetCapacityReservationPreference(const CapacityReservationPreference& value) { m_capacityReservationPreferenceHasBeenSet = true; m_capacityReservationPreference = value; }
81 
82     /**
83      * <p>Indicates the instance's Capacity Reservation preferences. Possible
84      * preferences include:</p> <ul> <li> <p> <code>open</code> - The instance can run
85      * in any <code>open</code> Capacity Reservation that has matching attributes
86      * (instance type, platform, Availability Zone).</p> </li> <li> <p>
87      * <code>none</code> - The instance avoids running in a Capacity Reservation even
88      * if one is available. The instance runs as an On-Demand Instance.</p> </li> </ul>
89      */
SetCapacityReservationPreference(CapacityReservationPreference && value)90     inline void SetCapacityReservationPreference(CapacityReservationPreference&& value) { m_capacityReservationPreferenceHasBeenSet = true; m_capacityReservationPreference = std::move(value); }
91 
92     /**
93      * <p>Indicates the instance's Capacity Reservation preferences. Possible
94      * preferences include:</p> <ul> <li> <p> <code>open</code> - The instance can run
95      * in any <code>open</code> Capacity Reservation that has matching attributes
96      * (instance type, platform, Availability Zone).</p> </li> <li> <p>
97      * <code>none</code> - The instance avoids running in a Capacity Reservation even
98      * if one is available. The instance runs as an On-Demand Instance.</p> </li> </ul>
99      */
WithCapacityReservationPreference(const CapacityReservationPreference & value)100     inline CapacityReservationSpecification& WithCapacityReservationPreference(const CapacityReservationPreference& value) { SetCapacityReservationPreference(value); return *this;}
101 
102     /**
103      * <p>Indicates the instance's Capacity Reservation preferences. Possible
104      * preferences include:</p> <ul> <li> <p> <code>open</code> - The instance can run
105      * in any <code>open</code> Capacity Reservation that has matching attributes
106      * (instance type, platform, Availability Zone).</p> </li> <li> <p>
107      * <code>none</code> - The instance avoids running in a Capacity Reservation even
108      * if one is available. The instance runs as an On-Demand Instance.</p> </li> </ul>
109      */
WithCapacityReservationPreference(CapacityReservationPreference && value)110     inline CapacityReservationSpecification& WithCapacityReservationPreference(CapacityReservationPreference&& value) { SetCapacityReservationPreference(std::move(value)); return *this;}
111 
112 
113     /**
114      * <p>Information about the target Capacity Reservation or Capacity Reservation
115      * group.</p>
116      */
GetCapacityReservationTarget()117     inline const CapacityReservationTarget& GetCapacityReservationTarget() const{ return m_capacityReservationTarget; }
118 
119     /**
120      * <p>Information about the target Capacity Reservation or Capacity Reservation
121      * group.</p>
122      */
CapacityReservationTargetHasBeenSet()123     inline bool CapacityReservationTargetHasBeenSet() const { return m_capacityReservationTargetHasBeenSet; }
124 
125     /**
126      * <p>Information about the target Capacity Reservation or Capacity Reservation
127      * group.</p>
128      */
SetCapacityReservationTarget(const CapacityReservationTarget & value)129     inline void SetCapacityReservationTarget(const CapacityReservationTarget& value) { m_capacityReservationTargetHasBeenSet = true; m_capacityReservationTarget = value; }
130 
131     /**
132      * <p>Information about the target Capacity Reservation or Capacity Reservation
133      * group.</p>
134      */
SetCapacityReservationTarget(CapacityReservationTarget && value)135     inline void SetCapacityReservationTarget(CapacityReservationTarget&& value) { m_capacityReservationTargetHasBeenSet = true; m_capacityReservationTarget = std::move(value); }
136 
137     /**
138      * <p>Information about the target Capacity Reservation or Capacity Reservation
139      * group.</p>
140      */
WithCapacityReservationTarget(const CapacityReservationTarget & value)141     inline CapacityReservationSpecification& WithCapacityReservationTarget(const CapacityReservationTarget& value) { SetCapacityReservationTarget(value); return *this;}
142 
143     /**
144      * <p>Information about the target Capacity Reservation or Capacity Reservation
145      * group.</p>
146      */
WithCapacityReservationTarget(CapacityReservationTarget && value)147     inline CapacityReservationSpecification& WithCapacityReservationTarget(CapacityReservationTarget&& value) { SetCapacityReservationTarget(std::move(value)); return *this;}
148 
149   private:
150 
151     CapacityReservationPreference m_capacityReservationPreference;
152     bool m_capacityReservationPreferenceHasBeenSet;
153 
154     CapacityReservationTarget m_capacityReservationTarget;
155     bool m_capacityReservationTargetHasBeenSet;
156   };
157 
158 } // namespace Model
159 } // namespace EC2
160 } // namespace Aws
161