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) {