{"record":{"id":"7767dc3c3f73b81e","repo":"kubernetes/kops","slug":"expecting-vpc-cidr-to-not-be-nil","errorCode":null,"errorMessage":"expecting VPC CIDR to not be <nil>","messagePattern":"expecting VPC CIDR to not be <nil>","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/awstasks/subnet.go","lineNumber":554,"sourceCode":"\t_, err := awsTarget.Cloud.EC2().DisassociateSubnetCidrBlock(ctx, request)\n\treturn err\n}\n\nfunc (d *deleteSubnetIPv6CIDRBlock) TaskName() string {\n\treturn \"SubnetIPv6CIDRBlock\"\n}\n\nfunc (d *deleteSubnetIPv6CIDRBlock) Item() string {\n\treturn fmt.Sprintf(\"%v: ipv6cidr=%v\", *d.vpcID, *d.ipv6CidrBlock)\n}\n\nfunc (d *deleteSubnetIPv6CIDRBlock) DeferDeletion() bool {\n\treturn false // TODO: should we defer this?\n}\n\nfunc calculateSubnetCIDR(vpcCIDR, subnetCIDR *string) (*string, error) {\n\tif vpcCIDR == nil {\n\t\treturn nil, fmt.Errorf(\"expecting VPC CIDR to not be <nil>\")\n\t}\n\tif subnetCIDR == nil {\n\t\treturn nil, fmt.Errorf(\"expecting subnet CIDR to not be <nil>\")\n\t}\n\tif !strings.HasPrefix(aws.ToString(subnetCIDR), \"/\") {\n\t\treturn nil, fmt.Errorf(\"expecting subnet cidr to start with %q: %q\", \"/\", aws.ToString(subnetCIDR))\n\t}\n\n\tnewSize, netNum, err := utils.ParseCIDRNotation(aws.ToString(subnetCIDR))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error parsing CIDR subnet: %v\", err)\n\t}\n\n\tnewCIDR, err := utils.CIDRSubnet(aws.ToString(vpcCIDR), newSize, netNum)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"error calculating CIDR subnet: %v\", err)\n\t}\n","sourceCodeStart":536,"sourceCodeEnd":572,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/awstasks/subnet.go#L536-L572","documentation":"calculateSubnetCIDR computes a concrete CIDR from a prefix-length/netnum hint; the VPC's CIDR pointer is nil, so there is no base prefix to subnet — the VPC task has not resolved (or lost) its CIDR.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/awstasks/subnet.go:554 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the VPC (or IPv6 CIDR) is defined/resolvable in the cluster spec","Run `kops update` so the VPC task resolves its CIDR before subnets are computed"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}