Skip to content

Commit 83e2b4a

Browse files
Merge pull request #141 from fangge1212/amd_sev_snp
OCPCLOUD-3072: Add support for AMD SEV-SNP
2 parents c0db2c5 + 98811a6 commit 83e2b4a

File tree

52 files changed

+2276
-5393
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+2276
-5393
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/golang/mock v1.6.0
1010
github.com/onsi/ginkgo/v2 v2.23.4
1111
github.com/onsi/gomega v1.37.0
12-
github.com/openshift/api v0.0.0-20250710004639-926605d3338b
12+
github.com/openshift/api v0.0.0-20251009093019-7837a801e8c1
1313
github.com/openshift/library-go v0.0.0-20250711143941-47604345e7ea
1414
github.com/openshift/machine-api-operator v0.2.1-0.20250721183005-388c07321caf
1515
k8s.io/api v0.33.3

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,8 @@ github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus
335335
github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
336336
github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
337337
github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
338-
github.com/openshift/api v0.0.0-20250710004639-926605d3338b h1:A8OY6adT2aZNp7tsGsilHuQ3RqhzrFx5dzGr/UwXfJg=
339-
github.com/openshift/api v0.0.0-20250710004639-926605d3338b/go.mod h1:SPLf21TYPipzCO67BURkCfK6dcIIxx0oNRVWaOyRcXM=
338+
github.com/openshift/api v0.0.0-20251009093019-7837a801e8c1 h1:YDyN6zwe8H/bdYAp3kQekpjknSAGK4CjKOfYtk3261M=
339+
github.com/openshift/api v0.0.0-20251009093019-7837a801e8c1/go.mod h1:SPLf21TYPipzCO67BURkCfK6dcIIxx0oNRVWaOyRcXM=
340340
github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee h1:tOtrrxfDEW8hK3eEsHqxsXurq/D6LcINGfprkQC3hqY=
341341
github.com/openshift/client-go v0.0.0-20250710075018-396b36f983ee/go.mod h1:zhRiYyNMk89llof2qEuGPWPD+joQPhCRUc2IK0SB510=
342342
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20250718085303-e712b1ebf374 h1:ldUi0e64kdYJC2+ucB24GRXIXfMnI3NpSkcnalPqBGo=

pkg/actuators/machine/instances.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,7 @@ func launchInstance(machine *machinev1beta1.Machine, machineProviderConfig *mach
468468
MetadataOptions: getInstanceMetadataOptionsRequest(machineProviderConfig),
469469
InstanceMarketOptions: instanceMarketOptions,
470470
CapacityReservationSpecification: capacityReservationSpecification,
471+
CpuOptions: getCPUOptionsRequest(machineProviderConfig),
471472
}
472473

473474
if len(blockDeviceMappings) > 0 {
@@ -709,3 +710,26 @@ func getCapacityReservationSpecification(capacityReservationID string) (*ec2.Cap
709710
},
710711
}, nil
711712
}
713+
714+
func getCPUOptionsRequest(providerConfig *machinev1beta1.AWSMachineProviderConfig) *ec2.CpuOptionsRequest {
715+
if providerConfig.CPUOptions == nil {
716+
return nil
717+
}
718+
719+
cpuOptions := &ec2.CpuOptionsRequest{}
720+
721+
if providerConfig.CPUOptions.ConfidentialCompute != nil {
722+
switch *providerConfig.CPUOptions.ConfidentialCompute {
723+
case machinev1beta1.AWSConfidentialComputePolicySEVSNP:
724+
cpuOptions.AmdSevSnp = aws.String(ec2.AmdSevSnpSpecificationEnabled)
725+
case machinev1beta1.AWSConfidentialComputePolicyDisabled:
726+
cpuOptions.AmdSevSnp = aws.String(ec2.AmdSevSnpSpecificationDisabled)
727+
}
728+
}
729+
730+
if *cpuOptions == (ec2.CpuOptionsRequest{}) {
731+
return nil
732+
}
733+
734+
return cpuOptions
735+
}

pkg/actuators/machine/instances_test.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
mapierrors "github.com/openshift/machine-api-operator/pkg/controller/machine"
1717
mockaws "github.com/openshift/machine-api-provider-aws/pkg/client/mock"
1818
"k8s.io/apimachinery/pkg/runtime"
19+
"k8s.io/utils/ptr"
1920
"sigs.k8s.io/controller-runtime/pkg/client"
2021
"sigs.k8s.io/controller-runtime/pkg/client/fake"
2122
)
@@ -1695,3 +1696,53 @@ func TestGetCapacityReservationSpecification(t *testing.T) {
16951696
})
16961697
}
16971698
}
1699+
1700+
func TestGetCPUOptionsRequest(t *testing.T) {
1701+
testCases := []struct {
1702+
name string
1703+
providerConfig *machinev1beta1.AWSMachineProviderConfig
1704+
expectedRequest *ec2.CpuOptionsRequest
1705+
}{
1706+
{
1707+
name: "with CPUOptions unspecified",
1708+
providerConfig: &machinev1beta1.AWSMachineProviderConfig{},
1709+
expectedRequest: nil,
1710+
},
1711+
{
1712+
name: "with ConfidentialCompute set to AMD SEV-SNP",
1713+
providerConfig: &machinev1beta1.AWSMachineProviderConfig{
1714+
CPUOptions: &machinev1beta1.CPUOptions{
1715+
ConfidentialCompute: ptr.To(machinev1beta1.AWSConfidentialComputePolicySEVSNP),
1716+
},
1717+
},
1718+
expectedRequest: &ec2.CpuOptionsRequest{
1719+
AmdSevSnp: aws.String(ec2.AmdSevSnpSpecificationEnabled),
1720+
},
1721+
},
1722+
{
1723+
name: "with ConfidentialCompute disabled",
1724+
providerConfig: &machinev1beta1.AWSMachineProviderConfig{
1725+
CPUOptions: &machinev1beta1.CPUOptions{
1726+
ConfidentialCompute: ptr.To(machinev1beta1.AWSConfidentialComputePolicyDisabled),
1727+
},
1728+
},
1729+
expectedRequest: &ec2.CpuOptionsRequest{
1730+
AmdSevSnp: aws.String(ec2.AmdSevSnpSpecificationDisabled),
1731+
},
1732+
},
1733+
{
1734+
name: "with ConfidentialCompute unspecified",
1735+
providerConfig: &machinev1beta1.AWSMachineProviderConfig{
1736+
CPUOptions: &machinev1beta1.CPUOptions{},
1737+
},
1738+
expectedRequest: nil,
1739+
},
1740+
}
1741+
for _, tc := range testCases {
1742+
t.Run(tc.name, func(t *testing.T) {
1743+
g := gmg.NewWithT(t)
1744+
req := getCPUOptionsRequest(tc.providerConfig)
1745+
g.Expect(req).To(gmg.BeEquivalentTo(tc.expectedRequest))
1746+
})
1747+
}
1748+
}

vendor/github.com/openshift/api/config/v1/types_apiserver.go

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/openshift/api/config/v1/types_authentication.go

Lines changed: 16 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/openshift/api/config/v1/types_cluster_operator.go

Lines changed: 14 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/openshift/api/config/v1/types_cluster_version.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/openshift/api/config/v1/types_infrastructure.go

Lines changed: 32 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)