{"record":{"id":"0caa4009bc9b82ab","repo":"kubernetes/kops","slug":"error-finding-matching-instance-types-w","errorCode":null,"errorMessage":"error finding matching instance types: %w","messagePattern":"error finding matching instance types: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/kops/toolbox_instance-selector.go","lineNumber":297,"sourceCode":"\tfilters := getFilters(commandline, region, zones)\n\tmutatedFilters := filters\n\tif commandline.Flags[instanceGroupCount] != nil || filters.Flexible != nil {\n\t\tif filters.VCpusToMemoryRatio == nil {\n\t\t\tdefaultStartRatio := float64(2.0)\n\t\t\tmutatedFilters.VCpusToMemoryRatio = &defaultStartRatio\n\t\t}\n\t}\n\n\tnewInstanceGroups := []*kops.InstanceGroup{}\n\n\tfor i := 0; i < igCount; i++ {\n\t\tigNameForRun := options.InstanceGroupName\n\t\tif igCount != 1 {\n\t\t\tigNameForRun = fmt.Sprintf(\"%s%d\", options.InstanceGroupName, i+1)\n\t\t}\n\t\tselectedInstanceTypes, err := instanceSelector.Filter(ctx, mutatedFilters)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"error finding matching instance types: %w\", err)\n\t\t}\n\t\tif len(selectedInstanceTypes) == 0 {\n\t\t\treturn fmt.Errorf(\"no instance types were returned because the criteria specified was too narrow\")\n\t\t}\n\t\tusageClass := *filters.UsageClass\n\n\t\tig := createInstanceGroup(igNameForRun, options.ClusterName, igSubnets)\n\t\tig = decorateWithInstanceGroupSpecs(ig, options)\n\t\tig, err = decorateWithMixedInstancesPolicy(ig, usageClass, selectedInstanceTypes)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif options.ClusterAutoscaler {\n\t\t\tig = decorateWithClusterAutoscalerLabels(ig, options.ClusterName)\n\t\t}\n\t\tig, err = cloudup.PopulateInstanceGroupSpec(cluster, ig, cloud, channel)\n\t\tif err != nil {\n\t\t\treturn err","sourceCodeStart":279,"sourceCodeEnd":315,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/cmd/kops/toolbox_instance-selector.go#L279-L315","documentation":"instanceSelector.Filter(ctx, mutatedFilters) failed while matching the cluster's constraints (vCPU/memory ratio, flexible count, usage class, zones) against available EC2 instance types. The wrapped AWS or computation error is chained with %w. It occurs per instance group inside the creation loop.","triggerScenarios":"Filter() returns an error for a given set of Filters — e.g. invalid vcpus-to-memory ratio values, an unsupported usage class, or an AWS API error while listing instance types during filtering.","commonSituations":"Passing nonsensical --vcpus-to-memory-ratio values; combining Spot usage class with constraints no spot capacity meets; filters computed from unusual subnet/zones inputs.","solutions":["Read the wrapped (%w) cause to identify whether it is an AWS API error or a bad filter value.","Relax the filter flags (e.g. drop --flexible or widen the vcpu:memory ratio).","Verify the usage class flag is exactly 'spot' or 'regular'.","Retry if the cause was transient AWS throttling."],"exampleFix":"// before\nkops toolbox instance-selector --vcpus 0 --memory 0 ...\n// after\nkops toolbox instance-selector --vcpus 2 --memory 8 --flexible 2 ...","handlingStrategy":"validation","validationCode":"func validateFilters(f selector.Filters) error {\n\tif f.VCpusToMemoryRatio != nil && (*f.VCpusToMemoryRatio <= 0) {\n\t\treturn fmt.Errorf(\"vcpus-to-memory-ratio must be positive\")\n\t}\n\tif f.UsageClass == nil || (*f.UsageClass != \"spot\" && *f.UsageClass != \"regular\") {\n\t\treturn fmt.Errorf(\"usageClass must be spot or regular\")\n\t}\n\treturn nil\n}","typeGuard":null,"tryCatchPattern":"selected, err := instanceSelector.Filter(ctx, mutatedFilters)\nif err != nil {\n\treturn fmt.Errorf(\"filtering failed (check flags & AWS API): %w\", err)\n}","preventionTips":["Validate numeric flags before passing them into Filters.","Keep a default fallback filter set when custom flags fail.","Log the full filter struct with the wrapped error."],"tags":["instance-selector","filtering","aws"],"backgroundTag":"instance-filter-failed","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T07:17:12.445Z"}