Launching nested virtualization. This feature allows you to run neste… · aws/aws-sdk-cpp@ac1915f

5 min read Original article ↗

File tree

21 files changed

lines changed

  • src/aws-cpp-sdk-core/include/aws/core

    • smithy/codegen/cpp-smoke-tests

21 files changed

lines changed

Original file line numberDiff line numberDiff line change

@@ -1 +1 @@

1-

1.11.747

1+

1.11.748

Original file line numberDiff line numberDiff line change

@@ -7,6 +7,7 @@

77

#include <aws/core/utils/memory/stl/AWSStreamFwd.h>

88

#include <aws/ec2/EC2_EXPORTS.h>

99

#include <aws/ec2/model/AmdSevSnpSpecification.h>

10+

#include <aws/ec2/model/NestedVirtualizationSpecification.h>

1011
1112

#include <utility>

1213

@@ -83,15 +84,34 @@ class CpuOptions {

8384

return *this;

8485

}

8586

///@}

87+
88+

///@{

89+

/**

90+

* <p>Indicates whether the instance is enabled for nested virtualization.</p>

91+

*/

92+

inline NestedVirtualizationSpecification GetNestedVirtualization() const { return m_nestedVirtualization; }

93+

inline bool NestedVirtualizationHasBeenSet() const { return m_nestedVirtualizationHasBeenSet; }

94+

inline void SetNestedVirtualization(NestedVirtualizationSpecification value) {

95+

m_nestedVirtualizationHasBeenSet = true;

96+

m_nestedVirtualization = value;

97+

}

98+

inline CpuOptions& WithNestedVirtualization(NestedVirtualizationSpecification value) {

99+

SetNestedVirtualization(value);

100+

return *this;

101+

}

102+

///@}

86103

private:

87104

int m_coreCount{0};

88105
89106

int m_threadsPerCore{0};

90107
91108

AmdSevSnpSpecification m_amdSevSnp{AmdSevSnpSpecification::NOT_SET};

109+
110+

NestedVirtualizationSpecification m_nestedVirtualization{NestedVirtualizationSpecification::NOT_SET};

92111

bool m_coreCountHasBeenSet = false;

93112

bool m_threadsPerCoreHasBeenSet = false;

94113

bool m_amdSevSnpHasBeenSet = false;

114+

bool m_nestedVirtualizationHasBeenSet = false;

95115

};

96116
97117

} // namespace Model

Original file line numberDiff line numberDiff line change

@@ -7,6 +7,7 @@

77

#include <aws/core/utils/memory/stl/AWSStreamFwd.h>

88

#include <aws/ec2/EC2_EXPORTS.h>

99

#include <aws/ec2/model/AmdSevSnpSpecification.h>

10+

#include <aws/ec2/model/NestedVirtualizationSpecification.h>

1011
1112

#include <utility>

1213

@@ -86,15 +87,37 @@ class CpuOptionsRequest {

8687

return *this;

8788

}

8889

///@}

90+
91+

///@{

92+

/**

93+

* <p>Indicates whether to enable the instance for nested virtualization. Nested

94+

* virtualization is supported only on 8th generation Intel-based instance types

95+

* (c8i, m8i, r8i, and their flex variants). When nested virtualization is enabled,

96+

* Virtual Secure Mode (VSM) is automatically disabled for the instance.</p>

97+

*/

98+

inline NestedVirtualizationSpecification GetNestedVirtualization() const { return m_nestedVirtualization; }

99+

inline bool NestedVirtualizationHasBeenSet() const { return m_nestedVirtualizationHasBeenSet; }

100+

inline void SetNestedVirtualization(NestedVirtualizationSpecification value) {

101+

m_nestedVirtualizationHasBeenSet = true;

102+

m_nestedVirtualization = value;

103+

}

104+

inline CpuOptionsRequest& WithNestedVirtualization(NestedVirtualizationSpecification value) {

105+

SetNestedVirtualization(value);

106+

return *this;

107+

}

108+

///@}

89109

private:

90110

int m_coreCount{0};

91111
92112

int m_threadsPerCore{0};

93113
94114

AmdSevSnpSpecification m_amdSevSnp{AmdSevSnpSpecification::NOT_SET};

115+
116+

NestedVirtualizationSpecification m_nestedVirtualization{NestedVirtualizationSpecification::NOT_SET};

95117

bool m_coreCountHasBeenSet = false;

96118

bool m_threadsPerCoreHasBeenSet = false;

97119

bool m_amdSevSnpHasBeenSet = false;

120+

bool m_nestedVirtualizationHasBeenSet = false;

98121

};

99122
100123

} // namespace Model

Original file line numberDiff line numberDiff line change

@@ -7,6 +7,7 @@

77

#include <aws/core/utils/memory/stl/AWSStreamFwd.h>

88

#include <aws/ec2/EC2_EXPORTS.h>

99

#include <aws/ec2/model/AmdSevSnpSpecification.h>

10+

#include <aws/ec2/model/NestedVirtualizationSpecification.h>

1011
1112

#include <utility>

1213

@@ -83,15 +84,34 @@ class LaunchTemplateCpuOptions {

8384

return *this;

8485

}

8586

///@}

87+
88+

///@{

89+

/**

90+

* <p>Indicates whether the instance is enabled for nested virtualization. </p>

91+

*/

92+

inline NestedVirtualizationSpecification GetNestedVirtualization() const { return m_nestedVirtualization; }

93+

inline bool NestedVirtualizationHasBeenSet() const { return m_nestedVirtualizationHasBeenSet; }

94+

inline void SetNestedVirtualization(NestedVirtualizationSpecification value) {

95+

m_nestedVirtualizationHasBeenSet = true;

96+

m_nestedVirtualization = value;

97+

}

98+

inline LaunchTemplateCpuOptions& WithNestedVirtualization(NestedVirtualizationSpecification value) {

99+

SetNestedVirtualization(value);

100+

return *this;

101+

}

102+

///@}

86103

private:

87104

int m_coreCount{0};

88105
89106

int m_threadsPerCore{0};

90107
91108

AmdSevSnpSpecification m_amdSevSnp{AmdSevSnpSpecification::NOT_SET};

109+
110+

NestedVirtualizationSpecification m_nestedVirtualization{NestedVirtualizationSpecification::NOT_SET};

92111

bool m_coreCountHasBeenSet = false;

93112

bool m_threadsPerCoreHasBeenSet = false;

94113

bool m_amdSevSnpHasBeenSet = false;

114+

bool m_nestedVirtualizationHasBeenSet = false;

95115

};

96116
97117

} // namespace Model

Original file line numberDiff line numberDiff line change

@@ -7,6 +7,7 @@

77

#include <aws/core/utils/memory/stl/AWSStreamFwd.h>

88

#include <aws/ec2/EC2_EXPORTS.h>

99

#include <aws/ec2/model/AmdSevSnpSpecification.h>

10+

#include <aws/ec2/model/NestedVirtualizationSpecification.h>

1011
1112

#include <utility>

1213

@@ -86,15 +87,37 @@ class LaunchTemplateCpuOptionsRequest {

8687

return *this;

8788

}

8889

///@}

90+
91+

///@{

92+

/**

93+

* <p>Indicates whether to enable the instance for nested virtualization. Nested

94+

* virtualization is supported only on 8th generation Intel-based instance types

95+

* (c8i, m8i, r8i, and their flex variants). When nested virtualization is enabled,

96+

* Virtual Secure Mode (VSM) is automatically disabled for the instance.</p>

97+

*/

98+

inline NestedVirtualizationSpecification GetNestedVirtualization() const { return m_nestedVirtualization; }

99+

inline bool NestedVirtualizationHasBeenSet() const { return m_nestedVirtualizationHasBeenSet; }

100+

inline void SetNestedVirtualization(NestedVirtualizationSpecification value) {

101+

m_nestedVirtualizationHasBeenSet = true;

102+

m_nestedVirtualization = value;

103+

}

104+

inline LaunchTemplateCpuOptionsRequest& WithNestedVirtualization(NestedVirtualizationSpecification value) {

105+

SetNestedVirtualization(value);

106+

return *this;

107+

}

108+

///@}

89109

private:

90110

int m_coreCount{0};

91111
92112

int m_threadsPerCore{0};

93113
94114

AmdSevSnpSpecification m_amdSevSnp{AmdSevSnpSpecification::NOT_SET};

115+
116+

NestedVirtualizationSpecification m_nestedVirtualization{NestedVirtualizationSpecification::NOT_SET};

95117

bool m_coreCountHasBeenSet = false;

96118

bool m_threadsPerCoreHasBeenSet = false;

97119

bool m_amdSevSnpHasBeenSet = false;

120+

bool m_nestedVirtualizationHasBeenSet = false;

98121

};

99122
100123

} // namespace Model

Original file line numberDiff line numberDiff line change

@@ -7,6 +7,7 @@

77

#include <aws/core/utils/memory/stl/AWSString.h>

88

#include <aws/ec2/EC2Request.h>

99

#include <aws/ec2/EC2_EXPORTS.h>

10+

#include <aws/ec2/model/NestedVirtualizationSpecification.h>

1011
1112

#include <utility>

1213

@@ -82,6 +83,24 @@ class ModifyInstanceCpuOptionsRequest : public EC2Request {

8283

}

8384

///@}

8485
86+

///@{

87+

/**

88+

* <p>Indicates whether to enable or disable nested virtualization for the

89+

* instance. When nested virtualization is enabled, Virtual Secure Mode (VSM) is

90+

* automatically disabled for the instance.</p>

91+

*/

92+

inline NestedVirtualizationSpecification GetNestedVirtualization() const { return m_nestedVirtualization; }

93+

inline bool NestedVirtualizationHasBeenSet() const { return m_nestedVirtualizationHasBeenSet; }

94+

inline void SetNestedVirtualization(NestedVirtualizationSpecification value) {

95+

m_nestedVirtualizationHasBeenSet = true;

96+

m_nestedVirtualization = value;

97+

}

98+

inline ModifyInstanceCpuOptionsRequest& WithNestedVirtualization(NestedVirtualizationSpecification value) {

99+

SetNestedVirtualization(value);

100+

return *this;

101+

}

102+

///@}

103+
85104

///@{

86105

/**

87106

* <p>Checks whether you have the required permissions for the operation, without

@@ -107,10 +126,13 @@ class ModifyInstanceCpuOptionsRequest : public EC2Request {

107126
108127

int m_threadsPerCore{0};

109128
129+

NestedVirtualizationSpecification m_nestedVirtualization{NestedVirtualizationSpecification::NOT_SET};

130+
110131

bool m_dryRun{false};

111132

bool m_instanceIdHasBeenSet = false;

112133

bool m_coreCountHasBeenSet = false;

113134

bool m_threadsPerCoreHasBeenSet = false;

135+

bool m_nestedVirtualizationHasBeenSet = false;

114136

bool m_dryRunHasBeenSet = false;

115137

};

116138
Original file line numberDiff line numberDiff line change

@@ -6,6 +6,7 @@

66

#pragma once

77

#include <aws/core/utils/memory/stl/AWSString.h>

88

#include <aws/ec2/EC2_EXPORTS.h>

9+

#include <aws/ec2/model/NestedVirtualizationSpecification.h>

910

#include <aws/ec2/model/ResponseMetadata.h>

1011
1112

#include <utility>

@@ -76,6 +77,21 @@ class ModifyInstanceCpuOptionsResponse {

7677

}

7778

///@}

7879
80+

///@{

81+

/**

82+

* <p>Indicates whether nested virtualization has been enabled or disabled.</p>

83+

*/

84+

inline NestedVirtualizationSpecification GetNestedVirtualization() const { return m_nestedVirtualization; }

85+

inline void SetNestedVirtualization(NestedVirtualizationSpecification value) {

86+

m_nestedVirtualizationHasBeenSet = true;

87+

m_nestedVirtualization = value;

88+

}

89+

inline ModifyInstanceCpuOptionsResponse& WithNestedVirtualization(NestedVirtualizationSpecification value) {

90+

SetNestedVirtualization(value);

91+

return *this;

92+

}

93+

///@}

94+
7995

///@{

8096
8197

inline const ResponseMetadata& GetResponseMetadata() const { return m_responseMetadata; }

@@ -97,10 +113,13 @@ class ModifyInstanceCpuOptionsResponse {

97113
98114

int m_threadsPerCore{0};

99115
116+

NestedVirtualizationSpecification m_nestedVirtualization{NestedVirtualizationSpecification::NOT_SET};

117+
100118

ResponseMetadata m_responseMetadata;

101119

bool m_instanceIdHasBeenSet = false;

102120

bool m_coreCountHasBeenSet = false;

103121

bool m_threadsPerCoreHasBeenSet = false;

122+

bool m_nestedVirtualizationHasBeenSet = false;

104123

bool m_responseMetadataHasBeenSet = false;

105124

};

106125
Original file line numberDiff line numberDiff line change

@@ -0,0 +1,22 @@

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/core/utils/memory/stl/AWSString.h>

8+

#include <aws/ec2/EC2_EXPORTS.h>

9+
10+

namespace Aws {

11+

namespace EC2 {

12+

namespace Model {

13+

enum class NestedVirtualizationSpecification { NOT_SET, enabled, disabled };

14+
15+

namespace NestedVirtualizationSpecificationMapper {

16+

AWS_EC2_API NestedVirtualizationSpecification GetNestedVirtualizationSpecificationForName(const Aws::String& name);

17+
18+

AWS_EC2_API Aws::String GetNameForNestedVirtualizationSpecification(NestedVirtualizationSpecification value);

19+

} // namespace NestedVirtualizationSpecificationMapper

20+

} // namespace Model

21+

} // namespace EC2

22+

} // namespace Aws

Original file line numberDiff line numberDiff line change

@@ -10,7 +10,7 @@

1010

namespace Aws {

1111

namespace EC2 {

1212

namespace Model {

13-

enum class SupportedAdditionalProcessorFeature { NOT_SET, amd_sev_snp };

13+

enum class SupportedAdditionalProcessorFeature { NOT_SET, amd_sev_snp, nested_virtualization };

1414
1515

namespace SupportedAdditionalProcessorFeatureMapper {

1616

AWS_EC2_API SupportedAdditionalProcessorFeature GetSupportedAdditionalProcessorFeatureForName(const Aws::String& name);

Original file line numberDiff line numberDiff line change

@@ -41,6 +41,12 @@ CpuOptions& CpuOptions::operator=(const XmlNode& xmlNode) {

4141

StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(amdSevSnpNode.GetText()).c_str()));

4242

m_amdSevSnpHasBeenSet = true;

4343

}

44+

XmlNode nestedVirtualizationNode = resultNode.FirstChild("nestedVirtualization");

45+

if (!nestedVirtualizationNode.IsNull()) {

46+

m_nestedVirtualization = NestedVirtualizationSpecificationMapper::GetNestedVirtualizationSpecificationForName(

47+

StringUtils::Trim(Aws::Utils::Xml::DecodeEscapedXmlText(nestedVirtualizationNode.GetText()).c_str()));

48+

m_nestedVirtualizationHasBeenSet = true;

49+

}

4450

}

4551
4652

return *this;

@@ -59,6 +65,13 @@ void CpuOptions::OutputToStream(Aws::OStream& oStream, const char* location, uns

5965

oStream << location << index << locationValue

6066

<< ".AmdSevSnp=" << StringUtils::URLEncode(AmdSevSnpSpecificationMapper::GetNameForAmdSevSnpSpecification(m_amdSevSnp)) << "&";

6167

}

68+
69+

if (m_nestedVirtualizationHasBeenSet) {

70+

oStream << location << index << locationValue << ".NestedVirtualization="

71+

<< StringUtils::URLEncode(

72+

NestedVirtualizationSpecificationMapper::GetNameForNestedVirtualizationSpecification(m_nestedVirtualization))

73+

<< "&";

74+

}

6275

}

6376
6477

void CpuOptions::OutputToStream(Aws::OStream& oStream, const char* location) const {

@@ -72,6 +85,12 @@ void CpuOptions::OutputToStream(Aws::OStream& oStream, const char* location) con

7285

oStream << location

7386

<< ".AmdSevSnp=" << StringUtils::URLEncode(AmdSevSnpSpecificationMapper::GetNameForAmdSevSnpSpecification(m_amdSevSnp)) << "&";

7487

}

88+

if (m_nestedVirtualizationHasBeenSet) {

89+

oStream << location << ".NestedVirtualization="

90+

<< StringUtils::URLEncode(

91+

NestedVirtualizationSpecificationMapper::GetNameForNestedVirtualizationSpecification(m_nestedVirtualization))

92+

<< "&";

93+

}

7594

}

7695
7796

} // namespace Model