221 lines
6.4 KiB
C++
221 lines
6.4 KiB
C++
/**
|
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
* SPDX-License-Identifier: Apache-2.0.
|
|
*/
|
|
|
|
#include <aws/compute-optimizer/model/InstanceRecommendation.h>
|
|
#include <aws/core/utils/json/JsonSerializer.h>
|
|
|
|
#include <utility>
|
|
|
|
using namespace Aws::Utils::Json;
|
|
using namespace Aws::Utils;
|
|
|
|
namespace Aws
|
|
{
|
|
namespace ComputeOptimizer
|
|
{
|
|
namespace Model
|
|
{
|
|
|
|
InstanceRecommendation::InstanceRecommendation() :
|
|
m_instanceArnHasBeenSet(false),
|
|
m_accountIdHasBeenSet(false),
|
|
m_instanceNameHasBeenSet(false),
|
|
m_currentInstanceTypeHasBeenSet(false),
|
|
m_finding(Finding::NOT_SET),
|
|
m_findingHasBeenSet(false),
|
|
m_utilizationMetricsHasBeenSet(false),
|
|
m_lookBackPeriodInDays(0.0),
|
|
m_lookBackPeriodInDaysHasBeenSet(false),
|
|
m_recommendationOptionsHasBeenSet(false),
|
|
m_recommendationSourcesHasBeenSet(false),
|
|
m_lastRefreshTimestampHasBeenSet(false)
|
|
{
|
|
}
|
|
|
|
InstanceRecommendation::InstanceRecommendation(JsonView jsonValue) :
|
|
m_instanceArnHasBeenSet(false),
|
|
m_accountIdHasBeenSet(false),
|
|
m_instanceNameHasBeenSet(false),
|
|
m_currentInstanceTypeHasBeenSet(false),
|
|
m_finding(Finding::NOT_SET),
|
|
m_findingHasBeenSet(false),
|
|
m_utilizationMetricsHasBeenSet(false),
|
|
m_lookBackPeriodInDays(0.0),
|
|
m_lookBackPeriodInDaysHasBeenSet(false),
|
|
m_recommendationOptionsHasBeenSet(false),
|
|
m_recommendationSourcesHasBeenSet(false),
|
|
m_lastRefreshTimestampHasBeenSet(false)
|
|
{
|
|
*this = jsonValue;
|
|
}
|
|
|
|
InstanceRecommendation& InstanceRecommendation::operator =(JsonView jsonValue)
|
|
{
|
|
if(jsonValue.ValueExists("instanceArn"))
|
|
{
|
|
m_instanceArn = jsonValue.GetString("instanceArn");
|
|
|
|
m_instanceArnHasBeenSet = true;
|
|
}
|
|
|
|
if(jsonValue.ValueExists("accountId"))
|
|
{
|
|
m_accountId = jsonValue.GetString("accountId");
|
|
|
|
m_accountIdHasBeenSet = true;
|
|
}
|
|
|
|
if(jsonValue.ValueExists("instanceName"))
|
|
{
|
|
m_instanceName = jsonValue.GetString("instanceName");
|
|
|
|
m_instanceNameHasBeenSet = true;
|
|
}
|
|
|
|
if(jsonValue.ValueExists("currentInstanceType"))
|
|
{
|
|
m_currentInstanceType = jsonValue.GetString("currentInstanceType");
|
|
|
|
m_currentInstanceTypeHasBeenSet = true;
|
|
}
|
|
|
|
if(jsonValue.ValueExists("finding"))
|
|
{
|
|
m_finding = FindingMapper::GetFindingForName(jsonValue.GetString("finding"));
|
|
|
|
m_findingHasBeenSet = true;
|
|
}
|
|
|
|
if(jsonValue.ValueExists("utilizationMetrics"))
|
|
{
|
|
Array<JsonView> utilizationMetricsJsonList = jsonValue.GetArray("utilizationMetrics");
|
|
for(unsigned utilizationMetricsIndex = 0; utilizationMetricsIndex < utilizationMetricsJsonList.GetLength(); ++utilizationMetricsIndex)
|
|
{
|
|
m_utilizationMetrics.push_back(utilizationMetricsJsonList[utilizationMetricsIndex].AsObject());
|
|
}
|
|
m_utilizationMetricsHasBeenSet = true;
|
|
}
|
|
|
|
if(jsonValue.ValueExists("lookBackPeriodInDays"))
|
|
{
|
|
m_lookBackPeriodInDays = jsonValue.GetDouble("lookBackPeriodInDays");
|
|
|
|
m_lookBackPeriodInDaysHasBeenSet = true;
|
|
}
|
|
|
|
if(jsonValue.ValueExists("recommendationOptions"))
|
|
{
|
|
Array<JsonView> recommendationOptionsJsonList = jsonValue.GetArray("recommendationOptions");
|
|
for(unsigned recommendationOptionsIndex = 0; recommendationOptionsIndex < recommendationOptionsJsonList.GetLength(); ++recommendationOptionsIndex)
|
|
{
|
|
m_recommendationOptions.push_back(recommendationOptionsJsonList[recommendationOptionsIndex].AsObject());
|
|
}
|
|
m_recommendationOptionsHasBeenSet = true;
|
|
}
|
|
|
|
if(jsonValue.ValueExists("recommendationSources"))
|
|
{
|
|
Array<JsonView> recommendationSourcesJsonList = jsonValue.GetArray("recommendationSources");
|
|
for(unsigned recommendationSourcesIndex = 0; recommendationSourcesIndex < recommendationSourcesJsonList.GetLength(); ++recommendationSourcesIndex)
|
|
{
|
|
m_recommendationSources.push_back(recommendationSourcesJsonList[recommendationSourcesIndex].AsObject());
|
|
}
|
|
m_recommendationSourcesHasBeenSet = true;
|
|
}
|
|
|
|
if(jsonValue.ValueExists("lastRefreshTimestamp"))
|
|
{
|
|
m_lastRefreshTimestamp = jsonValue.GetDouble("lastRefreshTimestamp");
|
|
|
|
m_lastRefreshTimestampHasBeenSet = true;
|
|
}
|
|
|
|
return *this;
|
|
}
|
|
|
|
JsonValue InstanceRecommendation::Jsonize() const
|
|
{
|
|
JsonValue payload;
|
|
|
|
if(m_instanceArnHasBeenSet)
|
|
{
|
|
payload.WithString("instanceArn", m_instanceArn);
|
|
|
|
}
|
|
|
|
if(m_accountIdHasBeenSet)
|
|
{
|
|
payload.WithString("accountId", m_accountId);
|
|
|
|
}
|
|
|
|
if(m_instanceNameHasBeenSet)
|
|
{
|
|
payload.WithString("instanceName", m_instanceName);
|
|
|
|
}
|
|
|
|
if(m_currentInstanceTypeHasBeenSet)
|
|
{
|
|
payload.WithString("currentInstanceType", m_currentInstanceType);
|
|
|
|
}
|
|
|
|
if(m_findingHasBeenSet)
|
|
{
|
|
payload.WithString("finding", FindingMapper::GetNameForFinding(m_finding));
|
|
}
|
|
|
|
if(m_utilizationMetricsHasBeenSet)
|
|
{
|
|
Array<JsonValue> utilizationMetricsJsonList(m_utilizationMetrics.size());
|
|
for(unsigned utilizationMetricsIndex = 0; utilizationMetricsIndex < utilizationMetricsJsonList.GetLength(); ++utilizationMetricsIndex)
|
|
{
|
|
utilizationMetricsJsonList[utilizationMetricsIndex].AsObject(m_utilizationMetrics[utilizationMetricsIndex].Jsonize());
|
|
}
|
|
payload.WithArray("utilizationMetrics", std::move(utilizationMetricsJsonList));
|
|
|
|
}
|
|
|
|
if(m_lookBackPeriodInDaysHasBeenSet)
|
|
{
|
|
payload.WithDouble("lookBackPeriodInDays", m_lookBackPeriodInDays);
|
|
|
|
}
|
|
|
|
if(m_recommendationOptionsHasBeenSet)
|
|
{
|
|
Array<JsonValue> recommendationOptionsJsonList(m_recommendationOptions.size());
|
|
for(unsigned recommendationOptionsIndex = 0; recommendationOptionsIndex < recommendationOptionsJsonList.GetLength(); ++recommendationOptionsIndex)
|
|
{
|
|
recommendationOptionsJsonList[recommendationOptionsIndex].AsObject(m_recommendationOptions[recommendationOptionsIndex].Jsonize());
|
|
}
|
|
payload.WithArray("recommendationOptions", std::move(recommendationOptionsJsonList));
|
|
|
|
}
|
|
|
|
if(m_recommendationSourcesHasBeenSet)
|
|
{
|
|
Array<JsonValue> recommendationSourcesJsonList(m_recommendationSources.size());
|
|
for(unsigned recommendationSourcesIndex = 0; recommendationSourcesIndex < recommendationSourcesJsonList.GetLength(); ++recommendationSourcesIndex)
|
|
{
|
|
recommendationSourcesJsonList[recommendationSourcesIndex].AsObject(m_recommendationSources[recommendationSourcesIndex].Jsonize());
|
|
}
|
|
payload.WithArray("recommendationSources", std::move(recommendationSourcesJsonList));
|
|
|
|
}
|
|
|
|
if(m_lastRefreshTimestampHasBeenSet)
|
|
{
|
|
payload.WithDouble("lastRefreshTimestamp", m_lastRefreshTimestamp.SecondsWithMSPrecision());
|
|
}
|
|
|
|
return payload;
|
|
}
|
|
|
|
} // namespace Model
|
|
} // namespace ComputeOptimizer
|
|
} // namespace Aws
|