From 72beebcea9e26a0452520f06d77e34ecadd8ef0b Mon Sep 17 00:00:00 2001
From: Dmytro Dzubenko
Date: Tue, 9 Jan 2024 14:51:38 +0200
Subject: [PATCH] Add tags usage when creating machine
---
.../provider/equinixmetal/provider.go | 23 ++++++++++++-------
.../provider/equinixmetal/types/types.go | 1 +
2 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/pkg/cloudprovider/provider/equinixmetal/provider.go b/pkg/cloudprovider/provider/equinixmetal/provider.go
index bcaf075f2..ed0dd715c 100644
--- a/pkg/cloudprovider/provider/equinixmetal/provider.go
+++ b/pkg/cloudprovider/provider/equinixmetal/provider.go
@@ -162,7 +162,7 @@ func (p *provider) getMetalDevice(machine *clusterv1alpha1.Machine) (*packngo.De
}
client := getClient(c.Token)
- device, err := getDeviceByTag(client, c.ProjectID, generateTag(string(machine.UID)))
+ device, err := getDeviceByTag(client, c.ProjectID, generateMachineTag(string(machine.UID)))
if err != nil {
return nil, nil, err
}
@@ -241,7 +241,7 @@ func (p *provider) Validate(_ context.Context, _ *zap.SugaredLogger, spec cluste
}
func (p *provider) Create(_ context.Context, _ *zap.SugaredLogger, machine *clusterv1alpha1.Machine, _ *cloudprovidertypes.ProviderData, userdata string) (instance.Instance, error) {
- c, _, pc, err := p.getConfig(machine.Spec.ProviderSpec)
+ c, rc, pc, err := p.getConfig(machine.Spec.ProviderSpec)
if err != nil {
return nil, cloudprovidererrors.TerminalError{
Reason: common.InvalidConfigurationMachineError,
@@ -259,6 +259,11 @@ func (p *provider) Create(_ context.Context, _ *zap.SugaredLogger, machine *clus
}
}
+ tags := append(c.Tags, generateMachineTag(string(machine.UID)))
+ for k, v := range rc.Labels {
+ tags = append(tags, generateTag(k, v))
+ }
+
serverCreateOpts := &packngo.DeviceCreateRequest{
Hostname: machine.Spec.Name,
UserData: userdata,
@@ -268,9 +273,7 @@ func (p *provider) Create(_ context.Context, _ *zap.SugaredLogger, machine *clus
BillingCycle: c.BillingCycle,
Plan: c.InstanceType,
OS: imageName,
- Tags: []string{
- generateTag(string(machine.UID)),
- },
+ Tags: tags,
}
device, res, err := client.Devices.Create(serverCreateOpts)
@@ -352,7 +355,7 @@ func (p *provider) MigrateUID(_ context.Context, log *zap.SugaredLogger, machine
}
// create a new UID label
- tags = append(tags, generateTag(string(newID)))
+ tags = append(tags, generateMachineTag(string(newID)))
log.Info("Setting UID label for machine")
dur := &packngo.DeviceUpdateRequest{
@@ -489,8 +492,12 @@ func getClient(apiKey string) *packngo.Client {
return packngo.NewClientWithAuth("kubermatic", apiKey, nil)
}
-func generateTag(ID string) string {
- return fmt.Sprintf("%s:%s", machineUIDTag, ID)
+func generateMachineTag(ID string) string {
+ return generateTag(machineUIDTag, ID)
+}
+
+func generateTag(key string, value string) string {
+ return fmt.Sprintf("%s:%s", key, value)
}
func getTagUID(tag string) (string, error) {
diff --git a/pkg/cloudprovider/provider/equinixmetal/types/types.go b/pkg/cloudprovider/provider/equinixmetal/types/types.go
index b34625af0..446ce528d 100644
--- a/pkg/cloudprovider/provider/equinixmetal/types/types.go
+++ b/pkg/cloudprovider/provider/equinixmetal/types/types.go
@@ -29,6 +29,7 @@ type RawConfig struct {
Metro providerconfigtypes.ConfigVarString `json:"metro,omitempty"`
Facilities []providerconfigtypes.ConfigVarString `json:"facilities,omitempty"`
Tags []providerconfigtypes.ConfigVarString `json:"tags,omitempty"`
+ Labels map[string]string `json:"labels,omitempty"`
}
func GetConfig(pconfig providerconfigtypes.Config) (*RawConfig, error) {