/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */

#pragma once
#include <aws/compute-optimizer/ComputeOptimizer_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSString.h>

namespace Aws
{
namespace ComputeOptimizer
{
namespace Model
{
  enum class ExportableAutoScalingGroupField
  {
    NOT_SET,
    AccountId,
    AutoScalingGroupArn,
    AutoScalingGroupName,
    Finding,
    UtilizationMetricsCpuMaximum,
    UtilizationMetricsMemoryMaximum,
    UtilizationMetricsEbsReadOpsPerSecondMaximum,
    UtilizationMetricsEbsWriteOpsPerSecondMaximum,
    UtilizationMetricsEbsReadBytesPerSecondMaximum,
    UtilizationMetricsEbsWriteBytesPerSecondMaximum,
    UtilizationMetricsDiskReadOpsPerSecondMaximum,
    UtilizationMetricsDiskWriteOpsPerSecondMaximum,
    UtilizationMetricsDiskReadBytesPerSecondMaximum,
    UtilizationMetricsDiskWriteBytesPerSecondMaximum,
    UtilizationMetricsNetworkInBytesPerSecondMaximum,
    UtilizationMetricsNetworkOutBytesPerSecondMaximum,
    UtilizationMetricsNetworkPacketsInPerSecondMaximum,
    UtilizationMetricsNetworkPacketsOutPerSecondMaximum,
    LookbackPeriodInDays,
    CurrentConfigurationInstanceType,
    CurrentConfigurationDesiredCapacity,
    CurrentConfigurationMinSize,
    CurrentConfigurationMaxSize,
    CurrentConfigurationAllocationStrategy,
    CurrentConfigurationMixedInstanceTypes,
    CurrentConfigurationType,
    CurrentOnDemandPrice,
    CurrentStandardOneYearNoUpfrontReservedPrice,
    CurrentStandardThreeYearNoUpfrontReservedPrice,
    CurrentVCpus,
    CurrentMemory,
    CurrentStorage,
    CurrentNetwork,
    RecommendationOptionsConfigurationInstanceType,
    RecommendationOptionsConfigurationDesiredCapacity,
    RecommendationOptionsConfigurationMinSize,
    RecommendationOptionsConfigurationMaxSize,
    RecommendationOptionsConfigurationEstimatedInstanceHourReductionPercentage,
    RecommendationOptionsConfigurationAllocationStrategy,
    RecommendationOptionsConfigurationMixedInstanceTypes,
    RecommendationOptionsConfigurationType,
    RecommendationOptionsProjectedUtilizationMetricsCpuMaximum,
    RecommendationOptionsProjectedUtilizationMetricsMemoryMaximum,
    RecommendationOptionsPerformanceRisk,
    RecommendationOptionsOnDemandPrice,
    RecommendationOptionsStandardOneYearNoUpfrontReservedPrice,
    RecommendationOptionsStandardThreeYearNoUpfrontReservedPrice,
    RecommendationOptionsVcpus,
    RecommendationOptionsMemory,
    RecommendationOptionsStorage,
    RecommendationOptionsNetwork,
    LastRefreshTimestamp,
    CurrentPerformanceRisk,
    RecommendationOptionsSavingsOpportunityPercentage,
    RecommendationOptionsEstimatedMonthlySavingsCurrency,
    RecommendationOptionsEstimatedMonthlySavingsValue,
    EffectiveRecommendationPreferencesCpuVendorArchitectures,
    EffectiveRecommendationPreferencesEnhancedInfrastructureMetrics,
    EffectiveRecommendationPreferencesInferredWorkloadTypes,
    EffectiveRecommendationPreferencesPreferredResources,
    EffectiveRecommendationPreferencesLookBackPeriod,
    InferredWorkloadTypes,
    RecommendationOptionsMigrationEffort,
    CurrentInstanceGpuInfo,
    RecommendationOptionsInstanceGpuInfo,
    UtilizationMetricsGpuPercentageMaximum,
    UtilizationMetricsGpuMemoryPercentageMaximum,
    RecommendationOptionsProjectedUtilizationMetricsGpuPercentageMaximum,
    RecommendationOptionsProjectedUtilizationMetricsGpuMemoryPercentageMaximum,
    EffectiveRecommendationPreferencesSavingsEstimationMode,
    RecommendationOptionsSavingsOpportunityAfterDiscountsPercentage,
    RecommendationOptionsEstimatedMonthlySavingsCurrencyAfterDiscounts,
    RecommendationOptionsEstimatedMonthlySavingsValueAfterDiscounts
  };

namespace ExportableAutoScalingGroupFieldMapper
{
AWS_COMPUTEOPTIMIZER_API ExportableAutoScalingGroupField GetExportableAutoScalingGroupFieldForName(const Aws::String& name);

AWS_COMPUTEOPTIMIZER_API Aws::String GetNameForExportableAutoScalingGroupField(ExportableAutoScalingGroupField value);
} // namespace ExportableAutoScalingGroupFieldMapper
} // namespace Model
} // namespace ComputeOptimizer
} // namespace Aws
