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/securityhub/SecurityHub_EXPORTS.h>
8 #include <aws/core/utils/memory/stl/AWSString.h>
9 #include <aws/securityhub/model/AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails.h>
10 #include <utility>
11 
12 namespace Aws
13 {
14 namespace Utils
15 {
16 namespace Json
17 {
18   class JsonValue;
19   class JsonView;
20 } // namespace Json
21 } // namespace Utils
22 namespace SecurityHub
23 {
24 namespace Model
25 {
26 
27   /**
28    * <p>details about the configuration of an OpenSearch cluster.</p><p><h3>See
29    * Also:</h3>   <a
30    * href="http://docs.aws.amazon.com/goto/WebAPI/securityhub-2018-10-26/AwsElasticsearchDomainElasticsearchClusterConfigDetails">AWS
31    * API Reference</a></p>
32    */
33   class AWS_SECURITYHUB_API AwsElasticsearchDomainElasticsearchClusterConfigDetails
34   {
35   public:
36     AwsElasticsearchDomainElasticsearchClusterConfigDetails();
37     AwsElasticsearchDomainElasticsearchClusterConfigDetails(Aws::Utils::Json::JsonView jsonValue);
38     AwsElasticsearchDomainElasticsearchClusterConfigDetails& operator=(Aws::Utils::Json::JsonView jsonValue);
39     Aws::Utils::Json::JsonValue Jsonize() const;
40 
41 
42     /**
43      * <p>The number of instances to use for the master node. If this attribute is
44      * specified, then <code>DedicatedMasterEnabled</code> must be
45      * <code>true</code>.</p>
46      */
GetDedicatedMasterCount()47     inline int GetDedicatedMasterCount() const{ return m_dedicatedMasterCount; }
48 
49     /**
50      * <p>The number of instances to use for the master node. If this attribute is
51      * specified, then <code>DedicatedMasterEnabled</code> must be
52      * <code>true</code>.</p>
53      */
DedicatedMasterCountHasBeenSet()54     inline bool DedicatedMasterCountHasBeenSet() const { return m_dedicatedMasterCountHasBeenSet; }
55 
56     /**
57      * <p>The number of instances to use for the master node. If this attribute is
58      * specified, then <code>DedicatedMasterEnabled</code> must be
59      * <code>true</code>.</p>
60      */
SetDedicatedMasterCount(int value)61     inline void SetDedicatedMasterCount(int value) { m_dedicatedMasterCountHasBeenSet = true; m_dedicatedMasterCount = value; }
62 
63     /**
64      * <p>The number of instances to use for the master node. If this attribute is
65      * specified, then <code>DedicatedMasterEnabled</code> must be
66      * <code>true</code>.</p>
67      */
WithDedicatedMasterCount(int value)68     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithDedicatedMasterCount(int value) { SetDedicatedMasterCount(value); return *this;}
69 
70 
71     /**
72      * <p>Whether to use a dedicated master node for the Elasticsearch domain. A
73      * dedicated master node performs cluster management tasks, but doesn't hold data
74      * or respond to data upload requests.</p>
75      */
GetDedicatedMasterEnabled()76     inline bool GetDedicatedMasterEnabled() const{ return m_dedicatedMasterEnabled; }
77 
78     /**
79      * <p>Whether to use a dedicated master node for the Elasticsearch domain. A
80      * dedicated master node performs cluster management tasks, but doesn't hold data
81      * or respond to data upload requests.</p>
82      */
DedicatedMasterEnabledHasBeenSet()83     inline bool DedicatedMasterEnabledHasBeenSet() const { return m_dedicatedMasterEnabledHasBeenSet; }
84 
85     /**
86      * <p>Whether to use a dedicated master node for the Elasticsearch domain. A
87      * dedicated master node performs cluster management tasks, but doesn't hold data
88      * or respond to data upload requests.</p>
89      */
SetDedicatedMasterEnabled(bool value)90     inline void SetDedicatedMasterEnabled(bool value) { m_dedicatedMasterEnabledHasBeenSet = true; m_dedicatedMasterEnabled = value; }
91 
92     /**
93      * <p>Whether to use a dedicated master node for the Elasticsearch domain. A
94      * dedicated master node performs cluster management tasks, but doesn't hold data
95      * or respond to data upload requests.</p>
96      */
WithDedicatedMasterEnabled(bool value)97     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithDedicatedMasterEnabled(bool value) { SetDedicatedMasterEnabled(value); return *this;}
98 
99 
100     /**
101      * <p>The hardware configuration of the computer that hosts the dedicated master
102      * node. For example, <code>m3.medium.elasticsearch</code>. If this attribute is
103      * specified, then <code>DedicatedMasterEnabled</code> must be
104      * <code>true</code>.</p>
105      */
GetDedicatedMasterType()106     inline const Aws::String& GetDedicatedMasterType() const{ return m_dedicatedMasterType; }
107 
108     /**
109      * <p>The hardware configuration of the computer that hosts the dedicated master
110      * node. For example, <code>m3.medium.elasticsearch</code>. If this attribute is
111      * specified, then <code>DedicatedMasterEnabled</code> must be
112      * <code>true</code>.</p>
113      */
DedicatedMasterTypeHasBeenSet()114     inline bool DedicatedMasterTypeHasBeenSet() const { return m_dedicatedMasterTypeHasBeenSet; }
115 
116     /**
117      * <p>The hardware configuration of the computer that hosts the dedicated master
118      * node. For example, <code>m3.medium.elasticsearch</code>. If this attribute is
119      * specified, then <code>DedicatedMasterEnabled</code> must be
120      * <code>true</code>.</p>
121      */
SetDedicatedMasterType(const Aws::String & value)122     inline void SetDedicatedMasterType(const Aws::String& value) { m_dedicatedMasterTypeHasBeenSet = true; m_dedicatedMasterType = value; }
123 
124     /**
125      * <p>The hardware configuration of the computer that hosts the dedicated master
126      * node. For example, <code>m3.medium.elasticsearch</code>. If this attribute is
127      * specified, then <code>DedicatedMasterEnabled</code> must be
128      * <code>true</code>.</p>
129      */
SetDedicatedMasterType(Aws::String && value)130     inline void SetDedicatedMasterType(Aws::String&& value) { m_dedicatedMasterTypeHasBeenSet = true; m_dedicatedMasterType = std::move(value); }
131 
132     /**
133      * <p>The hardware configuration of the computer that hosts the dedicated master
134      * node. For example, <code>m3.medium.elasticsearch</code>. If this attribute is
135      * specified, then <code>DedicatedMasterEnabled</code> must be
136      * <code>true</code>.</p>
137      */
SetDedicatedMasterType(const char * value)138     inline void SetDedicatedMasterType(const char* value) { m_dedicatedMasterTypeHasBeenSet = true; m_dedicatedMasterType.assign(value); }
139 
140     /**
141      * <p>The hardware configuration of the computer that hosts the dedicated master
142      * node. For example, <code>m3.medium.elasticsearch</code>. If this attribute is
143      * specified, then <code>DedicatedMasterEnabled</code> must be
144      * <code>true</code>.</p>
145      */
WithDedicatedMasterType(const Aws::String & value)146     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithDedicatedMasterType(const Aws::String& value) { SetDedicatedMasterType(value); return *this;}
147 
148     /**
149      * <p>The hardware configuration of the computer that hosts the dedicated master
150      * node. For example, <code>m3.medium.elasticsearch</code>. If this attribute is
151      * specified, then <code>DedicatedMasterEnabled</code> must be
152      * <code>true</code>.</p>
153      */
WithDedicatedMasterType(Aws::String && value)154     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithDedicatedMasterType(Aws::String&& value) { SetDedicatedMasterType(std::move(value)); return *this;}
155 
156     /**
157      * <p>The hardware configuration of the computer that hosts the dedicated master
158      * node. For example, <code>m3.medium.elasticsearch</code>. If this attribute is
159      * specified, then <code>DedicatedMasterEnabled</code> must be
160      * <code>true</code>.</p>
161      */
WithDedicatedMasterType(const char * value)162     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithDedicatedMasterType(const char* value) { SetDedicatedMasterType(value); return *this;}
163 
164 
165     /**
166      * <p>The number of data nodes to use in the Elasticsearch domain.</p>
167      */
GetInstanceCount()168     inline int GetInstanceCount() const{ return m_instanceCount; }
169 
170     /**
171      * <p>The number of data nodes to use in the Elasticsearch domain.</p>
172      */
InstanceCountHasBeenSet()173     inline bool InstanceCountHasBeenSet() const { return m_instanceCountHasBeenSet; }
174 
175     /**
176      * <p>The number of data nodes to use in the Elasticsearch domain.</p>
177      */
SetInstanceCount(int value)178     inline void SetInstanceCount(int value) { m_instanceCountHasBeenSet = true; m_instanceCount = value; }
179 
180     /**
181      * <p>The number of data nodes to use in the Elasticsearch domain.</p>
182      */
WithInstanceCount(int value)183     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithInstanceCount(int value) { SetInstanceCount(value); return *this;}
184 
185 
186     /**
187      * <p>The instance type for your data nodes. For example,
188      * <code>m3.medium.elasticsearch</code>.</p>
189      */
GetInstanceType()190     inline const Aws::String& GetInstanceType() const{ return m_instanceType; }
191 
192     /**
193      * <p>The instance type for your data nodes. For example,
194      * <code>m3.medium.elasticsearch</code>.</p>
195      */
InstanceTypeHasBeenSet()196     inline bool InstanceTypeHasBeenSet() const { return m_instanceTypeHasBeenSet; }
197 
198     /**
199      * <p>The instance type for your data nodes. For example,
200      * <code>m3.medium.elasticsearch</code>.</p>
201      */
SetInstanceType(const Aws::String & value)202     inline void SetInstanceType(const Aws::String& value) { m_instanceTypeHasBeenSet = true; m_instanceType = value; }
203 
204     /**
205      * <p>The instance type for your data nodes. For example,
206      * <code>m3.medium.elasticsearch</code>.</p>
207      */
SetInstanceType(Aws::String && value)208     inline void SetInstanceType(Aws::String&& value) { m_instanceTypeHasBeenSet = true; m_instanceType = std::move(value); }
209 
210     /**
211      * <p>The instance type for your data nodes. For example,
212      * <code>m3.medium.elasticsearch</code>.</p>
213      */
SetInstanceType(const char * value)214     inline void SetInstanceType(const char* value) { m_instanceTypeHasBeenSet = true; m_instanceType.assign(value); }
215 
216     /**
217      * <p>The instance type for your data nodes. For example,
218      * <code>m3.medium.elasticsearch</code>.</p>
219      */
WithInstanceType(const Aws::String & value)220     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithInstanceType(const Aws::String& value) { SetInstanceType(value); return *this;}
221 
222     /**
223      * <p>The instance type for your data nodes. For example,
224      * <code>m3.medium.elasticsearch</code>.</p>
225      */
WithInstanceType(Aws::String && value)226     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithInstanceType(Aws::String&& value) { SetInstanceType(std::move(value)); return *this;}
227 
228     /**
229      * <p>The instance type for your data nodes. For example,
230      * <code>m3.medium.elasticsearch</code>.</p>
231      */
WithInstanceType(const char * value)232     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithInstanceType(const char* value) { SetInstanceType(value); return *this;}
233 
234 
235     /**
236      * <p>Configuration options for zone awareness. Provided if
237      * <code>ZoneAwarenessEnabled</code> is <code>true</code>.</p>
238      */
GetZoneAwarenessConfig()239     inline const AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails& GetZoneAwarenessConfig() const{ return m_zoneAwarenessConfig; }
240 
241     /**
242      * <p>Configuration options for zone awareness. Provided if
243      * <code>ZoneAwarenessEnabled</code> is <code>true</code>.</p>
244      */
ZoneAwarenessConfigHasBeenSet()245     inline bool ZoneAwarenessConfigHasBeenSet() const { return m_zoneAwarenessConfigHasBeenSet; }
246 
247     /**
248      * <p>Configuration options for zone awareness. Provided if
249      * <code>ZoneAwarenessEnabled</code> is <code>true</code>.</p>
250      */
SetZoneAwarenessConfig(const AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails & value)251     inline void SetZoneAwarenessConfig(const AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails& value) { m_zoneAwarenessConfigHasBeenSet = true; m_zoneAwarenessConfig = value; }
252 
253     /**
254      * <p>Configuration options for zone awareness. Provided if
255      * <code>ZoneAwarenessEnabled</code> is <code>true</code>.</p>
256      */
SetZoneAwarenessConfig(AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails && value)257     inline void SetZoneAwarenessConfig(AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails&& value) { m_zoneAwarenessConfigHasBeenSet = true; m_zoneAwarenessConfig = std::move(value); }
258 
259     /**
260      * <p>Configuration options for zone awareness. Provided if
261      * <code>ZoneAwarenessEnabled</code> is <code>true</code>.</p>
262      */
WithZoneAwarenessConfig(const AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails & value)263     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithZoneAwarenessConfig(const AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails& value) { SetZoneAwarenessConfig(value); return *this;}
264 
265     /**
266      * <p>Configuration options for zone awareness. Provided if
267      * <code>ZoneAwarenessEnabled</code> is <code>true</code>.</p>
268      */
WithZoneAwarenessConfig(AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails && value)269     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithZoneAwarenessConfig(AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails&& value) { SetZoneAwarenessConfig(std::move(value)); return *this;}
270 
271 
272     /**
273      * <p>Whether to enable zone awareness for the Elasticsearch domain. When zone
274      * awareness is enabled, OpenSearch allocates the cluster's nodes and replica index
275      * shards across Availability Zones in the same Region. This prevents data loss and
276      * minimizes downtime if a node or data center fails.</p>
277      */
GetZoneAwarenessEnabled()278     inline bool GetZoneAwarenessEnabled() const{ return m_zoneAwarenessEnabled; }
279 
280     /**
281      * <p>Whether to enable zone awareness for the Elasticsearch domain. When zone
282      * awareness is enabled, OpenSearch allocates the cluster's nodes and replica index
283      * shards across Availability Zones in the same Region. This prevents data loss and
284      * minimizes downtime if a node or data center fails.</p>
285      */
ZoneAwarenessEnabledHasBeenSet()286     inline bool ZoneAwarenessEnabledHasBeenSet() const { return m_zoneAwarenessEnabledHasBeenSet; }
287 
288     /**
289      * <p>Whether to enable zone awareness for the Elasticsearch domain. When zone
290      * awareness is enabled, OpenSearch allocates the cluster's nodes and replica index
291      * shards across Availability Zones in the same Region. This prevents data loss and
292      * minimizes downtime if a node or data center fails.</p>
293      */
SetZoneAwarenessEnabled(bool value)294     inline void SetZoneAwarenessEnabled(bool value) { m_zoneAwarenessEnabledHasBeenSet = true; m_zoneAwarenessEnabled = value; }
295 
296     /**
297      * <p>Whether to enable zone awareness for the Elasticsearch domain. When zone
298      * awareness is enabled, OpenSearch allocates the cluster's nodes and replica index
299      * shards across Availability Zones in the same Region. This prevents data loss and
300      * minimizes downtime if a node or data center fails.</p>
301      */
WithZoneAwarenessEnabled(bool value)302     inline AwsElasticsearchDomainElasticsearchClusterConfigDetails& WithZoneAwarenessEnabled(bool value) { SetZoneAwarenessEnabled(value); return *this;}
303 
304   private:
305 
306     int m_dedicatedMasterCount;
307     bool m_dedicatedMasterCountHasBeenSet;
308 
309     bool m_dedicatedMasterEnabled;
310     bool m_dedicatedMasterEnabledHasBeenSet;
311 
312     Aws::String m_dedicatedMasterType;
313     bool m_dedicatedMasterTypeHasBeenSet;
314 
315     int m_instanceCount;
316     bool m_instanceCountHasBeenSet;
317 
318     Aws::String m_instanceType;
319     bool m_instanceTypeHasBeenSet;
320 
321     AwsElasticsearchDomainElasticsearchClusterConfigZoneAwarenessConfigDetails m_zoneAwarenessConfig;
322     bool m_zoneAwarenessConfigHasBeenSet;
323 
324     bool m_zoneAwarenessEnabled;
325     bool m_zoneAwarenessEnabledHasBeenSet;
326   };
327 
328 } // namespace Model
329 } // namespace SecurityHub
330 } // namespace Aws
331