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/opensearch/OpenSearchService_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSVector.h>
9 #include <aws/opensearch/model/InstanceLimits.h>
10 #include <aws/opensearch/model/StorageType.h>
11 #include <aws/opensearch/model/AdditionalLimit.h>
12 #include <utility>
13 
14 namespace Aws
15 {
16 namespace Utils
17 {
18 namespace Json
19 {
20   class JsonValue;
21   class JsonView;
22 } // namespace Json
23 } // namespace Utils
24 namespace OpenSearchService
25 {
26 namespace Model
27 {
28 
29   /**
30    * <p> Limits for a given InstanceType and for each of its roles. <br/> Limits
31    * contains the following: <code> <a>StorageTypes</a> </code>, <code>
32    * <a>InstanceLimits</a> </code>, and <code> <a>AdditionalLimits</a> </code>
33    * </p><p><h3>See Also:</h3>   <a
34    * href="http://docs.aws.amazon.com/goto/WebAPI/opensearch-2021-01-01/Limits">AWS
35    * API Reference</a></p>
36    */
37   class AWS_OPENSEARCHSERVICE_API Limits
38   {
39   public:
40     Limits();
41     Limits(Aws::Utils::Json::JsonView jsonValue);
42     Limits& operator=(Aws::Utils::Json::JsonView jsonValue);
43     Aws::Utils::Json::JsonValue Jsonize() const;
44 
45 
46     /**
47      * <p>Storage-related types and attributes that are available for a given
48      * InstanceType. </p>
49      */
GetStorageTypes()50     inline const Aws::Vector<StorageType>& GetStorageTypes() const{ return m_storageTypes; }
51 
52     /**
53      * <p>Storage-related types and attributes that are available for a given
54      * InstanceType. </p>
55      */
StorageTypesHasBeenSet()56     inline bool StorageTypesHasBeenSet() const { return m_storageTypesHasBeenSet; }
57 
58     /**
59      * <p>Storage-related types and attributes that are available for a given
60      * InstanceType. </p>
61      */
SetStorageTypes(const Aws::Vector<StorageType> & value)62     inline void SetStorageTypes(const Aws::Vector<StorageType>& value) { m_storageTypesHasBeenSet = true; m_storageTypes = value; }
63 
64     /**
65      * <p>Storage-related types and attributes that are available for a given
66      * InstanceType. </p>
67      */
SetStorageTypes(Aws::Vector<StorageType> && value)68     inline void SetStorageTypes(Aws::Vector<StorageType>&& value) { m_storageTypesHasBeenSet = true; m_storageTypes = std::move(value); }
69 
70     /**
71      * <p>Storage-related types and attributes that are available for a given
72      * InstanceType. </p>
73      */
WithStorageTypes(const Aws::Vector<StorageType> & value)74     inline Limits& WithStorageTypes(const Aws::Vector<StorageType>& value) { SetStorageTypes(value); return *this;}
75 
76     /**
77      * <p>Storage-related types and attributes that are available for a given
78      * InstanceType. </p>
79      */
WithStorageTypes(Aws::Vector<StorageType> && value)80     inline Limits& WithStorageTypes(Aws::Vector<StorageType>&& value) { SetStorageTypes(std::move(value)); return *this;}
81 
82     /**
83      * <p>Storage-related types and attributes that are available for a given
84      * InstanceType. </p>
85      */
AddStorageTypes(const StorageType & value)86     inline Limits& AddStorageTypes(const StorageType& value) { m_storageTypesHasBeenSet = true; m_storageTypes.push_back(value); return *this; }
87 
88     /**
89      * <p>Storage-related types and attributes that are available for a given
90      * InstanceType. </p>
91      */
AddStorageTypes(StorageType && value)92     inline Limits& AddStorageTypes(StorageType&& value) { m_storageTypesHasBeenSet = true; m_storageTypes.push_back(std::move(value)); return *this; }
93 
94 
95 
GetInstanceLimits()96     inline const InstanceLimits& GetInstanceLimits() const{ return m_instanceLimits; }
97 
98 
InstanceLimitsHasBeenSet()99     inline bool InstanceLimitsHasBeenSet() const { return m_instanceLimitsHasBeenSet; }
100 
101 
SetInstanceLimits(const InstanceLimits & value)102     inline void SetInstanceLimits(const InstanceLimits& value) { m_instanceLimitsHasBeenSet = true; m_instanceLimits = value; }
103 
104 
SetInstanceLimits(InstanceLimits && value)105     inline void SetInstanceLimits(InstanceLimits&& value) { m_instanceLimitsHasBeenSet = true; m_instanceLimits = std::move(value); }
106 
107 
WithInstanceLimits(const InstanceLimits & value)108     inline Limits& WithInstanceLimits(const InstanceLimits& value) { SetInstanceLimits(value); return *this;}
109 
110 
WithInstanceLimits(InstanceLimits && value)111     inline Limits& WithInstanceLimits(InstanceLimits&& value) { SetInstanceLimits(std::move(value)); return *this;}
112 
113 
114     /**
115      * <p> List of additional limits that are specific to a given InstanceType and for
116      * each of its <code> <a>InstanceRole</a> </code> . </p>
117      */
GetAdditionalLimits()118     inline const Aws::Vector<AdditionalLimit>& GetAdditionalLimits() const{ return m_additionalLimits; }
119 
120     /**
121      * <p> List of additional limits that are specific to a given InstanceType and for
122      * each of its <code> <a>InstanceRole</a> </code> . </p>
123      */
AdditionalLimitsHasBeenSet()124     inline bool AdditionalLimitsHasBeenSet() const { return m_additionalLimitsHasBeenSet; }
125 
126     /**
127      * <p> List of additional limits that are specific to a given InstanceType and for
128      * each of its <code> <a>InstanceRole</a> </code> . </p>
129      */
SetAdditionalLimits(const Aws::Vector<AdditionalLimit> & value)130     inline void SetAdditionalLimits(const Aws::Vector<AdditionalLimit>& value) { m_additionalLimitsHasBeenSet = true; m_additionalLimits = value; }
131 
132     /**
133      * <p> List of additional limits that are specific to a given InstanceType and for
134      * each of its <code> <a>InstanceRole</a> </code> . </p>
135      */
SetAdditionalLimits(Aws::Vector<AdditionalLimit> && value)136     inline void SetAdditionalLimits(Aws::Vector<AdditionalLimit>&& value) { m_additionalLimitsHasBeenSet = true; m_additionalLimits = std::move(value); }
137 
138     /**
139      * <p> List of additional limits that are specific to a given InstanceType and for
140      * each of its <code> <a>InstanceRole</a> </code> . </p>
141      */
WithAdditionalLimits(const Aws::Vector<AdditionalLimit> & value)142     inline Limits& WithAdditionalLimits(const Aws::Vector<AdditionalLimit>& value) { SetAdditionalLimits(value); return *this;}
143 
144     /**
145      * <p> List of additional limits that are specific to a given InstanceType and for
146      * each of its <code> <a>InstanceRole</a> </code> . </p>
147      */
WithAdditionalLimits(Aws::Vector<AdditionalLimit> && value)148     inline Limits& WithAdditionalLimits(Aws::Vector<AdditionalLimit>&& value) { SetAdditionalLimits(std::move(value)); return *this;}
149 
150     /**
151      * <p> List of additional limits that are specific to a given InstanceType and for
152      * each of its <code> <a>InstanceRole</a> </code> . </p>
153      */
AddAdditionalLimits(const AdditionalLimit & value)154     inline Limits& AddAdditionalLimits(const AdditionalLimit& value) { m_additionalLimitsHasBeenSet = true; m_additionalLimits.push_back(value); return *this; }
155 
156     /**
157      * <p> List of additional limits that are specific to a given InstanceType and for
158      * each of its <code> <a>InstanceRole</a> </code> . </p>
159      */
AddAdditionalLimits(AdditionalLimit && value)160     inline Limits& AddAdditionalLimits(AdditionalLimit&& value) { m_additionalLimitsHasBeenSet = true; m_additionalLimits.push_back(std::move(value)); return *this; }
161 
162   private:
163 
164     Aws::Vector<StorageType> m_storageTypes;
165     bool m_storageTypesHasBeenSet;
166 
167     InstanceLimits m_instanceLimits;
168     bool m_instanceLimitsHasBeenSet;
169 
170     Aws::Vector<AdditionalLimit> m_additionalLimits;
171     bool m_additionalLimitsHasBeenSet;
172   };
173 
174 } // namespace Model
175 } // namespace OpenSearchService
176 } // namespace Aws
177