Skip to content

Commit

Permalink
initial commit of adding instance cpu sustainted clock speed mhz
Browse files Browse the repository at this point in the history
  • Loading branch information
aidan-canva committed Sep 19, 2024
1 parent d07582b commit 70029a5
Show file tree
Hide file tree
Showing 9 changed files with 1,181 additions and 335 deletions.
1 change: 1 addition & 0 deletions hack/code/instancetype_testdata_gen/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ func getInstanceTypeInfo(info *ec2.InstanceTypeInfo) string {
fmt.Fprintf(src, "ProcessorInfo: &ec2.ProcessorInfo{\n")
fmt.Fprintf(src, "Manufacturer: aws.String(\"%s\"),\n", lo.FromPtr(info.ProcessorInfo.Manufacturer))
fmt.Fprintf(src, "SupportedArchitectures: aws.StringSlice([]string{%s}),\n", getStringSliceData(info.ProcessorInfo.SupportedArchitectures))
fmt.Fprintf(src, "SustainedClockSpeedInGhz: aws.Float64(%f),\n", lo.FromPtr(info.ProcessorInfo.SustainedClockSpeedInGhz))
fmt.Fprintf(src, "},\n")
fmt.Fprintf(src, "VCpuInfo: &ec2.VCpuInfo{\n")
fmt.Fprintf(src, "DefaultCores: aws.Int64(%d),\n", lo.FromPtr(info.VCpuInfo.DefaultCores))
Expand Down
2 changes: 1 addition & 1 deletion pkg/apis/crds/karpenter.sh_nodeclaims.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ spec:
- message: label "kubernetes.io/hostname" is restricted
rule: self != "kubernetes.io/hostname"
- message: label domain "karpenter.k8s.aws" is restricted
rule: self in ["karpenter.k8s.aws/instance-encryption-in-transit-supported", "karpenter.k8s.aws/instance-category", "karpenter.k8s.aws/instance-hypervisor", "karpenter.k8s.aws/instance-family", "karpenter.k8s.aws/instance-generation", "karpenter.k8s.aws/instance-local-nvme", "karpenter.k8s.aws/instance-size", "karpenter.k8s.aws/instance-cpu","karpenter.k8s.aws/instance-cpu-manufacturer","karpenter.k8s.aws/instance-memory", "karpenter.k8s.aws/instance-ebs-bandwidth", "karpenter.k8s.aws/instance-network-bandwidth", "karpenter.k8s.aws/instance-gpu-name", "karpenter.k8s.aws/instance-gpu-manufacturer", "karpenter.k8s.aws/instance-gpu-count", "karpenter.k8s.aws/instance-gpu-memory", "karpenter.k8s.aws/instance-accelerator-name", "karpenter.k8s.aws/instance-accelerator-manufacturer", "karpenter.k8s.aws/instance-accelerator-count"] || !self.find("^([^/]+)").endsWith("karpenter.k8s.aws")
rule: self in ["karpenter.k8s.aws/instance-encryption-in-transit-supported", "karpenter.k8s.aws/instance-category", "karpenter.k8s.aws/instance-hypervisor", "karpenter.k8s.aws/instance-family", "karpenter.k8s.aws/instance-generation", "karpenter.k8s.aws/instance-local-nvme", "karpenter.k8s.aws/instance-size", "karpenter.k8s.aws/instance-cpu","karpenter.k8s.aws/instance-cpu-manufacturer","karpenter.k8s.aws/instance-cpu-sustained-clock-speed-mhz","karpenter.k8s.aws/instance-memory", "karpenter.k8s.aws/instance-ebs-bandwidth", "karpenter.k8s.aws/instance-network-bandwidth", "karpenter.k8s.aws/instance-gpu-name", "karpenter.k8s.aws/instance-gpu-manufacturer", "karpenter.k8s.aws/instance-gpu-count", "karpenter.k8s.aws/instance-gpu-memory", "karpenter.k8s.aws/instance-accelerator-name", "karpenter.k8s.aws/instance-accelerator-manufacturer", "karpenter.k8s.aws/instance-accelerator-count"] || !self.find("^([^/]+)").endsWith("karpenter.k8s.aws")
minValues:
description: |-
This field is ALPHA and can be dropped or replaced at any time
Expand Down
4 changes: 2 additions & 2 deletions pkg/apis/crds/karpenter.sh_nodepools.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ spec:
- message: label "kubernetes.io/hostname" is restricted
rule: self.all(x, x != "kubernetes.io/hostname")
- message: label domain "karpenter.k8s.aws" is restricted
rule: self.all(x, x in ["karpenter.k8s.aws/instance-encryption-in-transit-supported", "karpenter.k8s.aws/instance-category", "karpenter.k8s.aws/instance-hypervisor", "karpenter.k8s.aws/instance-family", "karpenter.k8s.aws/instance-generation", "karpenter.k8s.aws/instance-local-nvme", "karpenter.k8s.aws/instance-size", "karpenter.k8s.aws/instance-cpu","karpenter.k8s.aws/instance-cpu-manufacturer","karpenter.k8s.aws/instance-memory", "karpenter.k8s.aws/instance-ebs-bandwidth", "karpenter.k8s.aws/instance-network-bandwidth", "karpenter.k8s.aws/instance-gpu-name", "karpenter.k8s.aws/instance-gpu-manufacturer", "karpenter.k8s.aws/instance-gpu-count", "karpenter.k8s.aws/instance-gpu-memory", "karpenter.k8s.aws/instance-accelerator-name", "karpenter.k8s.aws/instance-accelerator-manufacturer", "karpenter.k8s.aws/instance-accelerator-count"] || !x.find("^([^/]+)").endsWith("karpenter.k8s.aws"))
rule: self.all(x, x in ["karpenter.k8s.aws/instance-encryption-in-transit-supported", "karpenter.k8s.aws/instance-category", "karpenter.k8s.aws/instance-hypervisor", "karpenter.k8s.aws/instance-family", "karpenter.k8s.aws/instance-generation", "karpenter.k8s.aws/instance-local-nvme", "karpenter.k8s.aws/instance-size", "karpenter.k8s.aws/instance-cpu","karpenter.k8s.aws/instance-cpu-manufacturer","karpenter.k8s.aws/instance-cpu-sustained-clock-speed-mhz","karpenter.k8s.aws/instance-memory", "karpenter.k8s.aws/instance-ebs-bandwidth", "karpenter.k8s.aws/instance-network-bandwidth", "karpenter.k8s.aws/instance-gpu-name", "karpenter.k8s.aws/instance-gpu-manufacturer", "karpenter.k8s.aws/instance-gpu-count", "karpenter.k8s.aws/instance-gpu-memory", "karpenter.k8s.aws/instance-accelerator-name", "karpenter.k8s.aws/instance-accelerator-manufacturer", "karpenter.k8s.aws/instance-accelerator-count"] || !x.find("^([^/]+)").endsWith("karpenter.k8s.aws"))
type: object
spec:
description: |-
Expand Down Expand Up @@ -266,7 +266,7 @@ spec:
- message: label "kubernetes.io/hostname" is restricted
rule: self != "kubernetes.io/hostname"
- message: label domain "karpenter.k8s.aws" is restricted
rule: self in ["karpenter.k8s.aws/instance-encryption-in-transit-supported", "karpenter.k8s.aws/instance-category", "karpenter.k8s.aws/instance-hypervisor", "karpenter.k8s.aws/instance-family", "karpenter.k8s.aws/instance-generation", "karpenter.k8s.aws/instance-local-nvme", "karpenter.k8s.aws/instance-size", "karpenter.k8s.aws/instance-cpu","karpenter.k8s.aws/instance-cpu-manufacturer","karpenter.k8s.aws/instance-memory", "karpenter.k8s.aws/instance-ebs-bandwidth", "karpenter.k8s.aws/instance-network-bandwidth", "karpenter.k8s.aws/instance-gpu-name", "karpenter.k8s.aws/instance-gpu-manufacturer", "karpenter.k8s.aws/instance-gpu-count", "karpenter.k8s.aws/instance-gpu-memory", "karpenter.k8s.aws/instance-accelerator-name", "karpenter.k8s.aws/instance-accelerator-manufacturer", "karpenter.k8s.aws/instance-accelerator-count"] || !self.find("^([^/]+)").endsWith("karpenter.k8s.aws")
rule: self in ["karpenter.k8s.aws/instance-encryption-in-transit-supported", "karpenter.k8s.aws/instance-category", "karpenter.k8s.aws/instance-hypervisor", "karpenter.k8s.aws/instance-family", "karpenter.k8s.aws/instance-generation", "karpenter.k8s.aws/instance-local-nvme", "karpenter.k8s.aws/instance-size", "karpenter.k8s.aws/instance-cpu","karpenter.k8s.aws/instance-cpu-manufacturer","karpenter.k8s.aws/instance-cpu-sustained-clock-speed-mhz","karpenter.k8s.aws/instance-memory", "karpenter.k8s.aws/instance-ebs-bandwidth", "karpenter.k8s.aws/instance-network-bandwidth", "karpenter.k8s.aws/instance-gpu-name", "karpenter.k8s.aws/instance-gpu-manufacturer", "karpenter.k8s.aws/instance-gpu-count", "karpenter.k8s.aws/instance-gpu-memory", "karpenter.k8s.aws/instance-accelerator-name", "karpenter.k8s.aws/instance-accelerator-manufacturer", "karpenter.k8s.aws/instance-accelerator-count"] || !self.find("^([^/]+)").endsWith("karpenter.k8s.aws")
minValues:
description: |-
This field is ALPHA and can be dropped or replaced at any time
Expand Down
2 changes: 2 additions & 0 deletions pkg/apis/v1/labels.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ func init() {
LabelInstanceLocalNVME,
LabelInstanceCPU,
LabelInstanceCPUManufacturer,
LabelInstanceCPUSustainedClockSpeedMhz,
LabelInstanceMemory,
LabelInstanceEBSBandwidth,
LabelInstanceNetworkBandwidth,
Expand Down Expand Up @@ -110,6 +111,7 @@ var (
LabelInstanceSize = apis.Group + "/instance-size"
LabelInstanceCPU = apis.Group + "/instance-cpu"
LabelInstanceCPUManufacturer = apis.Group + "/instance-cpu-manufacturer"
LabelInstanceCPUSustainedClockSpeedMhz = apis.Group + "/instance-cpu-sustained-clock-speed-mhz"
LabelInstanceMemory = apis.Group + "/instance-memory"
LabelInstanceEBSBandwidth = apis.Group + "/instance-ebs-bandwidth"
LabelInstanceNetworkBandwidth = apis.Group + "/instance-network-bandwidth"
Expand Down
80 changes: 48 additions & 32 deletions pkg/fake/zz_generated.describe_instance_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("AWS"),
SupportedArchitectures: aws.StringSlice([]string{"arm64"}),
Manufacturer: aws.String("AWS"),
SupportedArchitectures: aws.StringSlice([]string{"arm64"}),
SustainedClockSpeedInGhz: aws.Float64(2.500000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(2),
Expand Down Expand Up @@ -79,8 +80,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(3.000000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(48),
Expand Down Expand Up @@ -153,8 +155,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("AMD"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("AMD"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(3.000000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(32),
Expand Down Expand Up @@ -212,8 +215,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(2.500000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(16),
Expand Down Expand Up @@ -274,8 +278,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(2.500000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(4),
Expand Down Expand Up @@ -327,8 +332,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(2.500000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(12),
Expand Down Expand Up @@ -380,8 +386,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(3.100000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(1),
Expand Down Expand Up @@ -424,8 +431,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(true),
Hypervisor: aws.String(""),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(3.100000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(48),
Expand Down Expand Up @@ -468,8 +476,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(3.100000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(2),
Expand Down Expand Up @@ -512,8 +521,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(3.500000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(64),
Expand Down Expand Up @@ -566,8 +576,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("xen"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(2.700000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(16),
Expand Down Expand Up @@ -622,8 +633,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(2.500000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(1),
Expand Down Expand Up @@ -666,8 +678,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("AWS"),
SupportedArchitectures: aws.StringSlice([]string{"arm64"}),
Manufacturer: aws.String("AWS"),
SupportedArchitectures: aws.StringSlice([]string{"arm64"}),
SustainedClockSpeedInGhz: aws.Float64(2.500000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(2),
Expand Down Expand Up @@ -710,8 +723,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("AWS"),
SupportedArchitectures: aws.StringSlice([]string{"arm64"}),
Manufacturer: aws.String("AWS"),
SupportedArchitectures: aws.StringSlice([]string{"arm64"}),
SustainedClockSpeedInGhz: aws.Float64(2.500000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(2),
Expand Down Expand Up @@ -754,8 +768,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("AWS"),
SupportedArchitectures: aws.StringSlice([]string{"arm64"}),
Manufacturer: aws.String("AWS"),
SupportedArchitectures: aws.StringSlice([]string{"arm64"}),
SustainedClockSpeedInGhz: aws.Float64(2.500000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(4),
Expand Down Expand Up @@ -798,8 +813,9 @@ var defaultDescribeInstanceTypesOutput = &ec2.DescribeInstanceTypesOutput{
BareMetal: aws.Bool(false),
Hypervisor: aws.String("nitro"),
ProcessorInfo: &ec2.ProcessorInfo{
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
Manufacturer: aws.String("Intel"),
SupportedArchitectures: aws.StringSlice([]string{"x86_64"}),
SustainedClockSpeedInGhz: aws.Float64(3.500000),
},
VCpuInfo: &ec2.VCpuInfo{
DefaultCores: aws.Int64(4),
Expand Down
3 changes: 3 additions & 0 deletions pkg/providers/instancetype/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ var _ = Describe("InstanceTypeProvider", func() {
v1.LabelInstanceSize: "8xlarge",
v1.LabelInstanceCPU: "32",
v1.LabelInstanceCPUManufacturer: "intel",
v1.LabelInstanceCPUSustainedClockSpeedMhz: "2500",
v1.LabelInstanceMemory: "131072",
v1.LabelInstanceEBSBandwidth: "9500",
v1.LabelInstanceNetworkBandwidth: "50000",
Expand Down Expand Up @@ -291,6 +292,7 @@ var _ = Describe("InstanceTypeProvider", func() {
v1.LabelInstanceSize: "8xlarge",
v1.LabelInstanceCPU: "32",
v1.LabelInstanceCPUManufacturer: "intel",
v1.LabelInstanceCPUSustainedClockSpeedMhz: "2500",
v1.LabelInstanceMemory: "131072",
v1.LabelInstanceEBSBandwidth: "9500",
v1.LabelInstanceNetworkBandwidth: "50000",
Expand Down Expand Up @@ -344,6 +346,7 @@ var _ = Describe("InstanceTypeProvider", func() {
v1.LabelInstanceSize: "2xlarge",
v1.LabelInstanceCPU: "8",
v1.LabelInstanceCPUManufacturer: "intel",
v1.LabelInstanceCPUSustainedClockSpeedMhz: "2500",
v1.LabelInstanceMemory: "16384",
v1.LabelInstanceEBSBandwidth: "4750",
v1.LabelInstanceNetworkBandwidth: "5000",
Expand Down
Loading

0 comments on commit 70029a5

Please sign in to comment.