{"record":{"id":"cda9b685e7affc90","repo":"kubernetes/kops","slug":"method-metal-cloud-deregisterinstance-not-impleme","errorCode":null,"errorMessage":"method metal.Cloud::DeregisterInstance not implemented","messagePattern":"method metal\\.Cloud::DeregisterInstance not implemented","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/metal/cloud.go","lineNumber":62,"sourceCode":"\treturn kops.CloudProviderMetal\n}\nfunc (c *Cloud) DNS() (dnsprovider.Interface, error) {\n\treturn nil, fmt.Errorf(\"method metal.Cloud::DNS not implemented\")\n}\n\n// FindVPCInfo looks up the specified VPC by id, returning info if found, otherwise (nil, nil).\nfunc (c *Cloud) FindVPCInfo(id string) (*fi.VPCInfo, error) {\n\treturn nil, fmt.Errorf(\"method metal.Cloud::FindVPCInfo not implemented\")\n}\n\n// DeleteInstance deletes a cloud instance.\nfunc (c *Cloud) DeleteInstance(instance *cloudinstances.CloudInstance) error {\n\treturn fmt.Errorf(\"method metal.Cloud::DeleteInstance not implemented\")\n}\n\n// // DeregisterInstance drains a cloud instance and loadbalancers.\nfunc (c *Cloud) DeregisterInstance(instance *cloudinstances.CloudInstance) error {\n\treturn fmt.Errorf(\"method metal.Cloud::DeregisterInstance not implemented\")\n}\n\n// DeleteGroup deletes the cloud resources that make up a CloudInstanceGroup, including the instances.\nfunc (c *Cloud) DeleteGroup(group *cloudinstances.CloudInstanceGroup) error {\n\treturn fmt.Errorf(\"method metal.Cloud::DeleteGroup not implemented\")\n}\n\n// DetachInstance causes a cloud instance to no longer be counted against the group's size limits.\nfunc (c *Cloud) DetachInstance(instance *cloudinstances.CloudInstance) error {\n\treturn fmt.Errorf(\"method metal.Cloud::DetachInstance not implemented\")\n}\n\n// GetCloudGroups returns a map of cloud instances that back a kops cluster.\n// Detached instances must be returned in the NeedUpdate slice.\nfunc (c *Cloud) GetCloudGroups(cluster *kops.Cluster, instancegroups []*kops.InstanceGroup, warnUnmatched bool, nodes []v1.Node) (map[string]*cloudinstances.CloudInstanceGroup, error) {\n\tgroups := make(map[string]*cloudinstances.CloudInstanceGroup)\n\tfor _, ig := range instancegroups {\n\t\tcloudInstanceGroup := &cloudinstances.CloudInstanceGroup{","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/metal/cloud.go#L44-L80","documentation":"Stub-method error: metal.Cloud.DeregisterInstance is unimplemented, so draining/deregistering an instance from load balancers cannot be done via the metal provider. Fires when instance deregistration is requested on bare metal.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/metal/cloud.go:62 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Handle drain/deregistration manually or via external tooling for metal clusters","Avoid flows that call DeregisterInstance on the metal provider","Implement DeregisterInstance to support managed draining"],"exampleFix":null,"handlingStrategy":"fallback","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"}