{"record":{"id":"a483d9c08af9aa04","repo":"kubernetes/kops","slug":"determining-ip-configurations-for-s-network-inter","errorCode":null,"errorMessage":"determining IP configurations for %s network interface","messagePattern":"determining IP configurations for (.+?) network interface","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/azure/verifier.go","lineNumber":270,"sourceCode":"\tif osProfile == nil || osProfile.ComputerName == nil || *osProfile.ComputerName == \"\" {\n\t\treturn \"\", \"\", fmt.Errorf(\"determining ComputerName for %s\", desc)\n\t}\n\n\tnodeName = strings.ToLower(*osProfile.ComputerName)\n\tigNameTag, ok := tags[InstanceGroupNameTag]\n\tif !ok || igNameTag == nil {\n\t\treturn \"\", \"\", fmt.Errorf(\"determining IG name for %s\", desc)\n\t}\n\tklog.V(4).Infof(\"Azure verifier for %s resolved identity: node=%q instanceGroup=%q\", desc, nodeName, *igNameTag)\n\n\treturn nodeName, *igNameTag, nil\n}\n\n// privateIPEndpoints collects the private IP addresses and nodeup challenge endpoints from a\n// network interface's IP configurations.\nfunc privateIPEndpoints(ni network.Interface, desc string) (addrs, challengeEndpoints []string, err error) {\n\tif ni.Properties == nil {\n\t\treturn nil, nil, fmt.Errorf(\"determining IP configurations for %s network interface\", desc)\n\t}\n\n\tfor _, ipc := range ni.Properties.IPConfigurations {\n\t\tif ipc.Properties != nil && ipc.Properties.PrivateIPAddress != nil {\n\t\t\taddrs = append(addrs, *ipc.Properties.PrivateIPAddress)\n\t\t\tchallengeEndpoints = append(challengeEndpoints, net.JoinHostPort(*ipc.Properties.PrivateIPAddress, strconv.Itoa(wellknownports.NodeupChallenge)))\n\t\t}\n\t}\n\treturn addrs, challengeEndpoints, nil\n}\n\n// client is an Azure client.\ntype client struct {\n\tsubscriptionID string\n\tresourceGroup  string\n\tnisClient      *network.InterfacesClient\n\tvmsClient      *compute.VirtualMachinesClient\n\tvmssVMsClient  *compute.VirtualMachineScaleSetVMsClient","sourceCodeStart":252,"sourceCodeEnd":288,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/azure/verifier.go#L252-L288","documentation":"privateIPEndpoints inspects a network interface's Properties.IPConfigurations to collect private IPs and nodeup challenge endpoints. If the interface's Properties block is nil, the IP configurations cannot be read and the error is returned, aborting endpoint discovery for the node.","triggerScenarios":"During VerifyToken the verifier Gets the NIC for the claiming VM; the returned network.Interface has Properties == nil (nil deref guard), so privateIPEndpoints errors immediately.","commonSituations":"NIC deleted/detached between VM listing and Get (deleted NIC returns empty object); a stubbed/mock network client returns an empty Interface; SDK response partial on throttling; NIC created manually without IP configurations.","solutions":["Check the NIC exists: az network nic show -g rg -n <nic> and that it has ipConfigurations with a privateIPAddress","If the NIC was deleted, recreate it / re-run kops update so the VM's NIC is restored","Retry verification — a transient partial response will usually succeed on retry","If in tests, populate mock Interface.Properties.IPConfigurations with a PrivateIPAddress"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"ni, err := nisClient.Get(ctx, rg, nicName, nil)\nif err != nil { return err }\nif ni.Properties == nil || len(ni.Properties.IPConfigurations) == 0 {\n\treturn fmt.Errorf(\"NIC %s has no IP configurations\", nicName)\n}","typeGuard":"func hasIPConfigs(ni network.Interface) bool {\n\treturn ni.Properties != nil && len(ni.Properties.IPConfigurations) > 0\n}","tryCatchPattern":"ips, eps, err := privateIPEndpoints(ni, desc)\nif err != nil {\n\t// NIC deleted or empty: check the NIC exists, then retry or fail verification\n}","preventionTips":["Don't detach or delete NICs of cluster nodes","Wait for NIC creation to complete before starting nodeup verification","In tests, always populate mock Interface.Properties","Alert on NIC Get results missing ipConfigurations"],"tags":["azure","network","nic","ip"],"backgroundTag":"missing-nic-ipconfigurations","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"}