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