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/fsx/FSx_EXPORTS.h>
8 #include <aws/fsx/model/DiskIopsConfigurationMode.h>
9 #include <utility>
10 
11 namespace Aws
12 {
13 namespace Utils
14 {
15 namespace Json
16 {
17   class JsonValue;
18   class JsonView;
19 } // namespace Json
20 } // namespace Utils
21 namespace FSx
22 {
23 namespace Model
24 {
25 
26   /**
27    * <p>The SSD IOPS (input/output operations per second) configuration for an Amazon
28    * FSx for NetApp ONTAP file system. The default is 3 IOPS per GB of storage
29    * capacity, but you can provision additional IOPS per GB of storage. The
30    * configuration consists of the total number of provisioned SSD IOPS and how the
31    * amount was provisioned (by the customer or by the system).</p><p><h3>See
32    * Also:</h3>   <a
33    * href="http://docs.aws.amazon.com/goto/WebAPI/fsx-2018-03-01/DiskIopsConfiguration">AWS
34    * API Reference</a></p>
35    */
36   class AWS_FSX_API DiskIopsConfiguration
37   {
38   public:
39     DiskIopsConfiguration();
40     DiskIopsConfiguration(Aws::Utils::Json::JsonView jsonValue);
41     DiskIopsConfiguration& operator=(Aws::Utils::Json::JsonView jsonValue);
42     Aws::Utils::Json::JsonValue Jsonize() const;
43 
44 
45     /**
46      * <p>Specifies whether the number of IOPS for the file system is using the system
47      * default (<code>AUTOMATIC</code>) or was provisioned by the customer
48      * (<code>USER_PROVISIONED</code>).</p>
49      */
GetMode()50     inline const DiskIopsConfigurationMode& GetMode() const{ return m_mode; }
51 
52     /**
53      * <p>Specifies whether the number of IOPS for the file system is using the system
54      * default (<code>AUTOMATIC</code>) or was provisioned by the customer
55      * (<code>USER_PROVISIONED</code>).</p>
56      */
ModeHasBeenSet()57     inline bool ModeHasBeenSet() const { return m_modeHasBeenSet; }
58 
59     /**
60      * <p>Specifies whether the number of IOPS for the file system is using the system
61      * default (<code>AUTOMATIC</code>) or was provisioned by the customer
62      * (<code>USER_PROVISIONED</code>).</p>
63      */
SetMode(const DiskIopsConfigurationMode & value)64     inline void SetMode(const DiskIopsConfigurationMode& value) { m_modeHasBeenSet = true; m_mode = value; }
65 
66     /**
67      * <p>Specifies whether the number of IOPS for the file system is using the system
68      * default (<code>AUTOMATIC</code>) or was provisioned by the customer
69      * (<code>USER_PROVISIONED</code>).</p>
70      */
SetMode(DiskIopsConfigurationMode && value)71     inline void SetMode(DiskIopsConfigurationMode&& value) { m_modeHasBeenSet = true; m_mode = std::move(value); }
72 
73     /**
74      * <p>Specifies whether the number of IOPS for the file system is using the system
75      * default (<code>AUTOMATIC</code>) or was provisioned by the customer
76      * (<code>USER_PROVISIONED</code>).</p>
77      */
WithMode(const DiskIopsConfigurationMode & value)78     inline DiskIopsConfiguration& WithMode(const DiskIopsConfigurationMode& value) { SetMode(value); return *this;}
79 
80     /**
81      * <p>Specifies whether the number of IOPS for the file system is using the system
82      * default (<code>AUTOMATIC</code>) or was provisioned by the customer
83      * (<code>USER_PROVISIONED</code>).</p>
84      */
WithMode(DiskIopsConfigurationMode && value)85     inline DiskIopsConfiguration& WithMode(DiskIopsConfigurationMode&& value) { SetMode(std::move(value)); return *this;}
86 
87 
88     /**
89      * <p>The total number of SSD IOPS provisioned for the file system.</p>
90      */
GetIops()91     inline long long GetIops() const{ return m_iops; }
92 
93     /**
94      * <p>The total number of SSD IOPS provisioned for the file system.</p>
95      */
IopsHasBeenSet()96     inline bool IopsHasBeenSet() const { return m_iopsHasBeenSet; }
97 
98     /**
99      * <p>The total number of SSD IOPS provisioned for the file system.</p>
100      */
SetIops(long long value)101     inline void SetIops(long long value) { m_iopsHasBeenSet = true; m_iops = value; }
102 
103     /**
104      * <p>The total number of SSD IOPS provisioned for the file system.</p>
105      */
WithIops(long long value)106     inline DiskIopsConfiguration& WithIops(long long value) { SetIops(value); return *this;}
107 
108   private:
109 
110     DiskIopsConfigurationMode m_mode;
111     bool m_modeHasBeenSet;
112 
113     long long m_iops;
114     bool m_iopsHasBeenSet;
115   };
116 
117 } // namespace Model
118 } // namespace FSx
119 } // namespace Aws
120