diff --git a/cmd/kops-controller/main.go b/cmd/kops-controller/main.go index a82127d111..1ac9d498da 100644 --- a/cmd/kops-controller/main.go +++ b/cmd/kops-controller/main.go @@ -41,6 +41,7 @@ import ( nodeidentitydo "k8s.io/kops/pkg/nodeidentity/do" nodeidentitygce "k8s.io/kops/pkg/nodeidentity/gce" nodeidentityhetzner "k8s.io/kops/pkg/nodeidentity/hetzner" + nodeidentitymetal "k8s.io/kops/pkg/nodeidentity/metal" nodeidentityos "k8s.io/kops/pkg/nodeidentity/openstack" nodeidentityscw "k8s.io/kops/pkg/nodeidentity/scaleway" "k8s.io/kops/upup/pkg/fi/cloudup/awsup" @@ -307,6 +308,12 @@ func addNodeController(ctx context.Context, mgr manager.Manager, vfsContext *vfs return fmt.Errorf("error building identifier: %w", err) } + case "metal": + identifier, err = nodeidentitymetal.New() + if err != nil { + return fmt.Errorf("error building metal node identifier: %w", err) + } + case "": return fmt.Errorf("must specify cloud") diff --git a/pkg/nodeidentity/metal/identify.go b/pkg/nodeidentity/metal/identify.go new file mode 100644 index 0000000000..255a79c500 --- /dev/null +++ b/pkg/nodeidentity/metal/identify.go @@ -0,0 +1,39 @@ +/* +Copyright 2024 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package metal + +import ( + "context" + "fmt" + + corev1 "k8s.io/api/core/v1" + "k8s.io/kops/pkg/nodeidentity" +) + +// nodeIdentifier identifies a node in a bare-metal cloud +type nodeIdentifier struct { +} + +// New creates and returns a nodeidentity.Identifier for Nodes running on bare metal +func New() (nodeidentity.Identifier, error) { + return &nodeIdentifier{}, nil +} + +// IdentifyNode returns the node identity information +func (i *nodeIdentifier) IdentifyNode(ctx context.Context, node *corev1.Node) (*nodeidentity.Info, error) { + return nil, fmt.Errorf("metal::IdentifyNode not implemented") +}