Skip to content

Commit

Permalink
Merge pull request #11573 from hakman/automated-cherry-pick-of-#11560…
Browse files Browse the repository at this point in the history
…-upstream-release-1.21

Automated cherry pick of #11560: Allow Spotinst to use comma separated instance types
  • Loading branch information
k8s-ci-robot committed May 23, 2021
2 parents 9582e9c + 0b4a0d2 commit bd46c61
Showing 1 changed file with 22 additions and 14 deletions.
36 changes: 22 additions & 14 deletions pkg/apis/kops/validation/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,35 +125,43 @@ func awsValidateAdditionalSecurityGroups(fieldPath *field.Path, groups []string)
return allErrs
}

func awsValidateInstanceTypeAndImage(instanceTypeFieldPath *field.Path, imageFieldPath *field.Path, instanceType string, image string, cloud awsup.AWSCloud) field.ErrorList {
allErrs := field.ErrorList{}
func awsValidateInstanceTypeAndImage(instanceTypeFieldPath *field.Path, imageFieldPath *field.Path, instanceTypes string, image string, cloud awsup.AWSCloud) field.ErrorList {
if cloud == nil || instanceTypes == "" {
return nil
}

if cloud != nil && instanceType != "" {
imageInfo, err := cloud.ResolveImage(image)
if err != nil {
return append(allErrs, field.Invalid(imageFieldPath, image,
fmt.Sprintf("image specified is invalid: %q", image)))
}
allErrs := field.ErrorList{}

imageArch := fi.StringValue(imageInfo.Architecture)
imageInfo, err := cloud.ResolveImage(image)
if err != nil {
return append(allErrs, field.Invalid(imageFieldPath, image,
fmt.Sprintf("image specified is invalid: %q", image)))
}
imageArch := fi.StringValue(imageInfo.Architecture)

// Spotinst uses the instance type field to keep a "," separated list of instance types
for _, instanceType := range strings.Split(instanceTypes, ",") {
machineInfo, err := cloud.DescribeInstanceType(instanceType)
if err != nil {
return append(allErrs, field.Invalid(instanceTypeFieldPath, instanceType,
fmt.Sprintf("machine type specified is invalid: %q", instanceType)))
allErrs = append(allErrs, field.Invalid(instanceTypeFieldPath, instanceTypes, fmt.Sprintf("machine type specified is invalid: %q", instanceType)))
continue
}

found := false
if machineInfo.ProcessorInfo != nil {
if machineInfo != nil && machineInfo.ProcessorInfo != nil {
for _, machineArch := range machineInfo.ProcessorInfo.SupportedArchitectures {
if imageArch == fi.StringValue(machineArch) {
found = true
}
}
}
if !found {
allErrs = append(allErrs, field.Invalid(instanceTypeFieldPath, instanceType,
fmt.Sprintf("machine type architecture does not match image architecture: %s - %s", strings.Join(fi.StringSliceValue(machineInfo.ProcessorInfo.SupportedArchitectures), ","), imageArch)))
var machineArch []string
if machineInfo != nil && machineInfo.ProcessorInfo != nil && machineInfo.ProcessorInfo.SupportedArchitectures != nil {
machineArch = fi.StringSliceValue(machineInfo.ProcessorInfo.SupportedArchitectures)
}
allErrs = append(allErrs, field.Invalid(instanceTypeFieldPath, instanceTypes,
fmt.Sprintf("machine type architecture does not match image architecture: %q - %q", strings.Join(machineArch, ","), imageArch)))
}
}

Expand Down

0 comments on commit bd46c61

Please sign in to comment.