1 /**
2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3 * SPDX-License-Identifier: Apache-2.0.
4 */
5
6 #include <aws/ecs/model/CapacityProvider.h>
7 #include <aws/core/utils/json/JsonSerializer.h>
8
9 #include <utility>
10
11 using namespace Aws::Utils::Json;
12 using namespace Aws::Utils;
13
14 namespace Aws
15 {
16 namespace ECS
17 {
18 namespace Model
19 {
20
CapacityProvider()21 CapacityProvider::CapacityProvider() :
22 m_capacityProviderArnHasBeenSet(false),
23 m_nameHasBeenSet(false),
24 m_status(CapacityProviderStatus::NOT_SET),
25 m_statusHasBeenSet(false),
26 m_autoScalingGroupProviderHasBeenSet(false),
27 m_updateStatus(CapacityProviderUpdateStatus::NOT_SET),
28 m_updateStatusHasBeenSet(false),
29 m_updateStatusReasonHasBeenSet(false),
30 m_tagsHasBeenSet(false)
31 {
32 }
33
CapacityProvider(JsonView jsonValue)34 CapacityProvider::CapacityProvider(JsonView jsonValue) :
35 m_capacityProviderArnHasBeenSet(false),
36 m_nameHasBeenSet(false),
37 m_status(CapacityProviderStatus::NOT_SET),
38 m_statusHasBeenSet(false),
39 m_autoScalingGroupProviderHasBeenSet(false),
40 m_updateStatus(CapacityProviderUpdateStatus::NOT_SET),
41 m_updateStatusHasBeenSet(false),
42 m_updateStatusReasonHasBeenSet(false),
43 m_tagsHasBeenSet(false)
44 {
45 *this = jsonValue;
46 }
47
operator =(JsonView jsonValue)48 CapacityProvider& CapacityProvider::operator =(JsonView jsonValue)
49 {
50 if(jsonValue.ValueExists("capacityProviderArn"))
51 {
52 m_capacityProviderArn = jsonValue.GetString("capacityProviderArn");
53
54 m_capacityProviderArnHasBeenSet = true;
55 }
56
57 if(jsonValue.ValueExists("name"))
58 {
59 m_name = jsonValue.GetString("name");
60
61 m_nameHasBeenSet = true;
62 }
63
64 if(jsonValue.ValueExists("status"))
65 {
66 m_status = CapacityProviderStatusMapper::GetCapacityProviderStatusForName(jsonValue.GetString("status"));
67
68 m_statusHasBeenSet = true;
69 }
70
71 if(jsonValue.ValueExists("autoScalingGroupProvider"))
72 {
73 m_autoScalingGroupProvider = jsonValue.GetObject("autoScalingGroupProvider");
74
75 m_autoScalingGroupProviderHasBeenSet = true;
76 }
77
78 if(jsonValue.ValueExists("updateStatus"))
79 {
80 m_updateStatus = CapacityProviderUpdateStatusMapper::GetCapacityProviderUpdateStatusForName(jsonValue.GetString("updateStatus"));
81
82 m_updateStatusHasBeenSet = true;
83 }
84
85 if(jsonValue.ValueExists("updateStatusReason"))
86 {
87 m_updateStatusReason = jsonValue.GetString("updateStatusReason");
88
89 m_updateStatusReasonHasBeenSet = true;
90 }
91
92 if(jsonValue.ValueExists("tags"))
93 {
94 Array<JsonView> tagsJsonList = jsonValue.GetArray("tags");
95 for(unsigned tagsIndex = 0; tagsIndex < tagsJsonList.GetLength(); ++tagsIndex)
96 {
97 m_tags.push_back(tagsJsonList[tagsIndex].AsObject());
98 }
99 m_tagsHasBeenSet = true;
100 }
101
102 return *this;
103 }
104
Jsonize() const105 JsonValue CapacityProvider::Jsonize() const
106 {
107 JsonValue payload;
108
109 if(m_capacityProviderArnHasBeenSet)
110 {
111 payload.WithString("capacityProviderArn", m_capacityProviderArn);
112
113 }
114
115 if(m_nameHasBeenSet)
116 {
117 payload.WithString("name", m_name);
118
119 }
120
121 if(m_statusHasBeenSet)
122 {
123 payload.WithString("status", CapacityProviderStatusMapper::GetNameForCapacityProviderStatus(m_status));
124 }
125
126 if(m_autoScalingGroupProviderHasBeenSet)
127 {
128 payload.WithObject("autoScalingGroupProvider", m_autoScalingGroupProvider.Jsonize());
129
130 }
131
132 if(m_updateStatusHasBeenSet)
133 {
134 payload.WithString("updateStatus", CapacityProviderUpdateStatusMapper::GetNameForCapacityProviderUpdateStatus(m_updateStatus));
135 }
136
137 if(m_updateStatusReasonHasBeenSet)
138 {
139 payload.WithString("updateStatusReason", m_updateStatusReason);
140
141 }
142
143 if(m_tagsHasBeenSet)
144 {
145 Array<JsonValue> tagsJsonList(m_tags.size());
146 for(unsigned tagsIndex = 0; tagsIndex < tagsJsonList.GetLength(); ++tagsIndex)
147 {
148 tagsJsonList[tagsIndex].AsObject(m_tags[tagsIndex].Jsonize());
149 }
150 payload.WithArray("tags", std::move(tagsJsonList));
151
152 }
153
154 return payload;
155 }
156
157 } // namespace Model
158 } // namespace ECS
159 } // namespace Aws
160