/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace imagebuilder { namespace Model { /** *

Defines the settings for a specific Region.

See Also:

AWS * API Reference

*/ class Distribution { public: AWS_IMAGEBUILDER_API Distribution(); AWS_IMAGEBUILDER_API Distribution(Aws::Utils::Json::JsonView jsonValue); AWS_IMAGEBUILDER_API Distribution& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_IMAGEBUILDER_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The target Region.

*/ inline const Aws::String& GetRegion() const{ return m_region; } /** *

The target Region.

*/ inline bool RegionHasBeenSet() const { return m_regionHasBeenSet; } /** *

The target Region.

*/ inline void SetRegion(const Aws::String& value) { m_regionHasBeenSet = true; m_region = value; } /** *

The target Region.

*/ inline void SetRegion(Aws::String&& value) { m_regionHasBeenSet = true; m_region = std::move(value); } /** *

The target Region.

*/ inline void SetRegion(const char* value) { m_regionHasBeenSet = true; m_region.assign(value); } /** *

The target Region.

*/ inline Distribution& WithRegion(const Aws::String& value) { SetRegion(value); return *this;} /** *

The target Region.

*/ inline Distribution& WithRegion(Aws::String&& value) { SetRegion(std::move(value)); return *this;} /** *

The target Region.

*/ inline Distribution& WithRegion(const char* value) { SetRegion(value); return *this;} /** *

The specific AMI settings; for example, launch permissions or AMI tags.

*/ inline const AmiDistributionConfiguration& GetAmiDistributionConfiguration() const{ return m_amiDistributionConfiguration; } /** *

The specific AMI settings; for example, launch permissions or AMI tags.

*/ inline bool AmiDistributionConfigurationHasBeenSet() const { return m_amiDistributionConfigurationHasBeenSet; } /** *

The specific AMI settings; for example, launch permissions or AMI tags.

*/ inline void SetAmiDistributionConfiguration(const AmiDistributionConfiguration& value) { m_amiDistributionConfigurationHasBeenSet = true; m_amiDistributionConfiguration = value; } /** *

The specific AMI settings; for example, launch permissions or AMI tags.

*/ inline void SetAmiDistributionConfiguration(AmiDistributionConfiguration&& value) { m_amiDistributionConfigurationHasBeenSet = true; m_amiDistributionConfiguration = std::move(value); } /** *

The specific AMI settings; for example, launch permissions or AMI tags.

*/ inline Distribution& WithAmiDistributionConfiguration(const AmiDistributionConfiguration& value) { SetAmiDistributionConfiguration(value); return *this;} /** *

The specific AMI settings; for example, launch permissions or AMI tags.

*/ inline Distribution& WithAmiDistributionConfiguration(AmiDistributionConfiguration&& value) { SetAmiDistributionConfiguration(std::move(value)); return *this;} /** *

Container distribution settings for encryption, licensing, and sharing in a * specific Region.

*/ inline const ContainerDistributionConfiguration& GetContainerDistributionConfiguration() const{ return m_containerDistributionConfiguration; } /** *

Container distribution settings for encryption, licensing, and sharing in a * specific Region.

*/ inline bool ContainerDistributionConfigurationHasBeenSet() const { return m_containerDistributionConfigurationHasBeenSet; } /** *

Container distribution settings for encryption, licensing, and sharing in a * specific Region.

*/ inline void SetContainerDistributionConfiguration(const ContainerDistributionConfiguration& value) { m_containerDistributionConfigurationHasBeenSet = true; m_containerDistributionConfiguration = value; } /** *

Container distribution settings for encryption, licensing, and sharing in a * specific Region.

*/ inline void SetContainerDistributionConfiguration(ContainerDistributionConfiguration&& value) { m_containerDistributionConfigurationHasBeenSet = true; m_containerDistributionConfiguration = std::move(value); } /** *

Container distribution settings for encryption, licensing, and sharing in a * specific Region.

*/ inline Distribution& WithContainerDistributionConfiguration(const ContainerDistributionConfiguration& value) { SetContainerDistributionConfiguration(value); return *this;} /** *

Container distribution settings for encryption, licensing, and sharing in a * specific Region.

*/ inline Distribution& WithContainerDistributionConfiguration(ContainerDistributionConfiguration&& value) { SetContainerDistributionConfiguration(std::move(value)); return *this;} /** *

The License Manager Configuration to associate with the AMI in the specified * Region.

*/ inline const Aws::Vector& GetLicenseConfigurationArns() const{ return m_licenseConfigurationArns; } /** *

The License Manager Configuration to associate with the AMI in the specified * Region.

*/ inline bool LicenseConfigurationArnsHasBeenSet() const { return m_licenseConfigurationArnsHasBeenSet; } /** *

The License Manager Configuration to associate with the AMI in the specified * Region.

*/ inline void SetLicenseConfigurationArns(const Aws::Vector& value) { m_licenseConfigurationArnsHasBeenSet = true; m_licenseConfigurationArns = value; } /** *

The License Manager Configuration to associate with the AMI in the specified * Region.

*/ inline void SetLicenseConfigurationArns(Aws::Vector&& value) { m_licenseConfigurationArnsHasBeenSet = true; m_licenseConfigurationArns = std::move(value); } /** *

The License Manager Configuration to associate with the AMI in the specified * Region.

*/ inline Distribution& WithLicenseConfigurationArns(const Aws::Vector& value) { SetLicenseConfigurationArns(value); return *this;} /** *

The License Manager Configuration to associate with the AMI in the specified * Region.

*/ inline Distribution& WithLicenseConfigurationArns(Aws::Vector&& value) { SetLicenseConfigurationArns(std::move(value)); return *this;} /** *

The License Manager Configuration to associate with the AMI in the specified * Region.

*/ inline Distribution& AddLicenseConfigurationArns(const Aws::String& value) { m_licenseConfigurationArnsHasBeenSet = true; m_licenseConfigurationArns.push_back(value); return *this; } /** *

The License Manager Configuration to associate with the AMI in the specified * Region.

*/ inline Distribution& AddLicenseConfigurationArns(Aws::String&& value) { m_licenseConfigurationArnsHasBeenSet = true; m_licenseConfigurationArns.push_back(std::move(value)); return *this; } /** *

The License Manager Configuration to associate with the AMI in the specified * Region.

*/ inline Distribution& AddLicenseConfigurationArns(const char* value) { m_licenseConfigurationArnsHasBeenSet = true; m_licenseConfigurationArns.push_back(value); return *this; } /** *

A group of launchTemplateConfiguration settings that apply to image * distribution for specified accounts.

*/ inline const Aws::Vector& GetLaunchTemplateConfigurations() const{ return m_launchTemplateConfigurations; } /** *

A group of launchTemplateConfiguration settings that apply to image * distribution for specified accounts.

*/ inline bool LaunchTemplateConfigurationsHasBeenSet() const { return m_launchTemplateConfigurationsHasBeenSet; } /** *

A group of launchTemplateConfiguration settings that apply to image * distribution for specified accounts.

*/ inline void SetLaunchTemplateConfigurations(const Aws::Vector& value) { m_launchTemplateConfigurationsHasBeenSet = true; m_launchTemplateConfigurations = value; } /** *

A group of launchTemplateConfiguration settings that apply to image * distribution for specified accounts.

*/ inline void SetLaunchTemplateConfigurations(Aws::Vector&& value) { m_launchTemplateConfigurationsHasBeenSet = true; m_launchTemplateConfigurations = std::move(value); } /** *

A group of launchTemplateConfiguration settings that apply to image * distribution for specified accounts.

*/ inline Distribution& WithLaunchTemplateConfigurations(const Aws::Vector& value) { SetLaunchTemplateConfigurations(value); return *this;} /** *

A group of launchTemplateConfiguration settings that apply to image * distribution for specified accounts.

*/ inline Distribution& WithLaunchTemplateConfigurations(Aws::Vector&& value) { SetLaunchTemplateConfigurations(std::move(value)); return *this;} /** *

A group of launchTemplateConfiguration settings that apply to image * distribution for specified accounts.

*/ inline Distribution& AddLaunchTemplateConfigurations(const LaunchTemplateConfiguration& value) { m_launchTemplateConfigurationsHasBeenSet = true; m_launchTemplateConfigurations.push_back(value); return *this; } /** *

A group of launchTemplateConfiguration settings that apply to image * distribution for specified accounts.

*/ inline Distribution& AddLaunchTemplateConfigurations(LaunchTemplateConfiguration&& value) { m_launchTemplateConfigurationsHasBeenSet = true; m_launchTemplateConfigurations.push_back(std::move(value)); return *this; } /** *

Configure export settings to deliver disk images created from your image * build, using a file format that is compatible with your VMs in that Region.

*/ inline const S3ExportConfiguration& GetS3ExportConfiguration() const{ return m_s3ExportConfiguration; } /** *

Configure export settings to deliver disk images created from your image * build, using a file format that is compatible with your VMs in that Region.

*/ inline bool S3ExportConfigurationHasBeenSet() const { return m_s3ExportConfigurationHasBeenSet; } /** *

Configure export settings to deliver disk images created from your image * build, using a file format that is compatible with your VMs in that Region.

*/ inline void SetS3ExportConfiguration(const S3ExportConfiguration& value) { m_s3ExportConfigurationHasBeenSet = true; m_s3ExportConfiguration = value; } /** *

Configure export settings to deliver disk images created from your image * build, using a file format that is compatible with your VMs in that Region.

*/ inline void SetS3ExportConfiguration(S3ExportConfiguration&& value) { m_s3ExportConfigurationHasBeenSet = true; m_s3ExportConfiguration = std::move(value); } /** *

Configure export settings to deliver disk images created from your image * build, using a file format that is compatible with your VMs in that Region.

*/ inline Distribution& WithS3ExportConfiguration(const S3ExportConfiguration& value) { SetS3ExportConfiguration(value); return *this;} /** *

Configure export settings to deliver disk images created from your image * build, using a file format that is compatible with your VMs in that Region.

*/ inline Distribution& WithS3ExportConfiguration(S3ExportConfiguration&& value) { SetS3ExportConfiguration(std::move(value)); return *this;} /** *

The Windows faster-launching configurations to use for AMI distribution.

*/ inline const Aws::Vector& GetFastLaunchConfigurations() const{ return m_fastLaunchConfigurations; } /** *

The Windows faster-launching configurations to use for AMI distribution.

*/ inline bool FastLaunchConfigurationsHasBeenSet() const { return m_fastLaunchConfigurationsHasBeenSet; } /** *

The Windows faster-launching configurations to use for AMI distribution.

*/ inline void SetFastLaunchConfigurations(const Aws::Vector& value) { m_fastLaunchConfigurationsHasBeenSet = true; m_fastLaunchConfigurations = value; } /** *

The Windows faster-launching configurations to use for AMI distribution.

*/ inline void SetFastLaunchConfigurations(Aws::Vector&& value) { m_fastLaunchConfigurationsHasBeenSet = true; m_fastLaunchConfigurations = std::move(value); } /** *

The Windows faster-launching configurations to use for AMI distribution.

*/ inline Distribution& WithFastLaunchConfigurations(const Aws::Vector& value) { SetFastLaunchConfigurations(value); return *this;} /** *

The Windows faster-launching configurations to use for AMI distribution.

*/ inline Distribution& WithFastLaunchConfigurations(Aws::Vector&& value) { SetFastLaunchConfigurations(std::move(value)); return *this;} /** *

The Windows faster-launching configurations to use for AMI distribution.

*/ inline Distribution& AddFastLaunchConfigurations(const FastLaunchConfiguration& value) { m_fastLaunchConfigurationsHasBeenSet = true; m_fastLaunchConfigurations.push_back(value); return *this; } /** *

The Windows faster-launching configurations to use for AMI distribution.

*/ inline Distribution& AddFastLaunchConfigurations(FastLaunchConfiguration&& value) { m_fastLaunchConfigurationsHasBeenSet = true; m_fastLaunchConfigurations.push_back(std::move(value)); return *this; } private: Aws::String m_region; bool m_regionHasBeenSet = false; AmiDistributionConfiguration m_amiDistributionConfiguration; bool m_amiDistributionConfigurationHasBeenSet = false; ContainerDistributionConfiguration m_containerDistributionConfiguration; bool m_containerDistributionConfigurationHasBeenSet = false; Aws::Vector m_licenseConfigurationArns; bool m_licenseConfigurationArnsHasBeenSet = false; Aws::Vector m_launchTemplateConfigurations; bool m_launchTemplateConfigurationsHasBeenSet = false; S3ExportConfiguration m_s3ExportConfiguration; bool m_s3ExportConfigurationHasBeenSet = false; Aws::Vector m_fastLaunchConfigurations; bool m_fastLaunchConfigurationsHasBeenSet = false; }; } // namespace Model } // namespace imagebuilder } // namespace Aws