{"record":{"id":"70fd44562dbb9aea","repo":"kubernetes/kops","slug":"creating-interfaces-client-w","errorCode":null,"errorMessage":"creating interfaces client: %w","messagePattern":"creating interfaces client: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/azure/verifier.go","lineNumber":313,"sourceCode":"\tif err != nil || metadata == nil {\n\t\treturn nil, fmt.Errorf(\"getting instance metadata: %w\", err)\n\t}\n\tif metadata.ResourceGroupName == \"\" {\n\t\treturn nil, fmt.Errorf(\"empty resource group name\")\n\t}\n\tif metadata.SubscriptionID == \"\" {\n\t\treturn nil, fmt.Errorf(\"empty subscription ID\")\n\t}\n\tklog.V(4).Infof(\"Azure verifier client using subscription %q resource group %q\", metadata.SubscriptionID, metadata.ResourceGroupName)\n\n\tcred, err := azidentity.NewDefaultAzureCredential(nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"creating an identity: %w\", err)\n\t}\n\n\tnisClient, err := network.NewInterfacesClient(metadata.SubscriptionID, cred, nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"creating interfaces client: %w\", err)\n\t}\n\tvmsClient, err := compute.NewVirtualMachinesClient(metadata.SubscriptionID, cred, nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"creating VMs client: %w\", err)\n\t}\n\tvmssVMsClient, err := compute.NewVirtualMachineScaleSetVMsClient(metadata.SubscriptionID, cred, nil)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"creating VMSSVMs client: %w\", err)\n\t}\n\n\treturn &client{\n\t\tsubscriptionID: metadata.SubscriptionID,\n\t\tresourceGroup:  metadata.ResourceGroupName,\n\t\tnisClient:      nisClient,\n\t\tvmsClient:      vmsClient,\n\t\tvmssVMsClient:  vmssVMsClient,\n\t}, nil\n}","sourceCodeStart":295,"sourceCodeEnd":331,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/azure/verifier.go#L295-L331","documentation":"Construction of the network.NewInterfacesClient failed after credentials were obtained. This is rare with the track-two Azure SDK and typically means the subscription ID is malformed or client options are invalid.","triggerScenarios":"network.NewInterfacesClient(subscriptionID, cred, nil) returns an error — usually an empty/invalid subscriptionID string or nil credential passed through; with the wrapped cause indicating client instantiation failure.","commonSituations":"Upstream metadata supplied a malformed subscription ID; SDK version mismatch after a kOps dependency bump; tests passing nil cred into a manually invoked client constructor.","solutions":["Check the wrapped cause; validate subscription ID is a GUID (from the empty-subscription check above this should be non-empty)","Update kOps Azure SDK modules (go get -u github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network && make gomod)","If instantiating the client in tests, pass a valid credential and subscription GUID","Retry — transient constructor failures are essentially nonexistent; persistent failure implies bad input"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if _, err := uuid.Parse(subscriptionID); err != nil {\n\treturn fmt.Errorf(\"invalid subscription ID %q\", subscriptionID)\n}","typeGuard":null,"tryCatchPattern":"_, err := newVerifierClient(ctx)\nif err != nil && strings.Contains(err.Error(), \"creating interfaces client\") {\n\t// inspect wrapped cause; fix subscription ID / SDK version, then retry\n}","preventionTips":["Validate subscription GUID before constructing clients","Keep azure-sdk-for-go modules pinned and consistent via make gomod","Pass explicit non-nil client options in tests"],"tags":["azure","sdk","network-client"],"backgroundTag":"azure-client-init-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"}