{"record":{"id":"542a5c76b263b0cb","repo":"kubernetes/kops","slug":"method-metal-cloud-dns-not-implemented","errorCode":null,"errorMessage":"method metal.Cloud::DNS not implemented","messagePattern":"method metal\\.Cloud::DNS not implemented","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"upup/pkg/fi/cloudup/metal/cloud.go","lineNumber":47,"sourceCode":")\n\nvar _ fi.Cloud = (*Cloud)(nil)\n\n// Cloud holds the fi.Cloud implementation for metal resources.\ntype Cloud struct {\n}\n\n// NewCloud returns a Cloud for metal resources.\nfunc NewCloud() (*Cloud, error) {\n\tcloud := &Cloud{}\n\treturn cloud, nil\n}\n\nfunc (c *Cloud) ProviderID() kops.CloudProviderID {\n\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.","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/upup/pkg/fi/cloudup/metal/cloud.go#L29-L65","documentation":"Stub-method error: metal.Cloud implements fi.Cloud but DNS() is intentionally unimplemented because bare metal has no cloud-managed DNS. Fires when a code path (e.g. DNS record management) asks the metal provider for a dnsprovider.Interface — a capability gap, not a transient failure.","triggerScenarios":"Thrown at upup/pkg/fi/cloudup/metal/cloud.go:47 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use an external DNS provider/configuration for bare-metal clusters instead of cloud DNS","Avoid code paths that require cloud DNS on the metal provider","Implement DNS() if metal gains DNS support"],"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"}