From e52af91e34ed1a00a551730793aa06a6922b5a0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Le=C3=AFla=20MARABESE?= Date: Wed, 18 Jan 2023 15:50:37 +0100 Subject: [PATCH] scaleway: refactoring: instance and tags --- pkg/model/components/etcdmanager/model.go | 2 +- pkg/model/master_volumes.go | 2 +- pkg/model/scalewaymodel/instances.go | 7 +++++++ upup/pkg/fi/cloudup/scaleway/cloud.go | 14 +++++++++++--- upup/pkg/fi/cloudup/scalewaytasks/instance.go | 10 +++++++++- 5 files changed, 29 insertions(+), 6 deletions(-) diff --git a/pkg/model/components/etcdmanager/model.go b/pkg/model/components/etcdmanager/model.go index c778c61ae6..b5d6aedb94 100644 --- a/pkg/model/components/etcdmanager/model.go +++ b/pkg/model/components/etcdmanager/model.go @@ -436,7 +436,7 @@ func (b *EtcdManagerBuilder) buildPod(etcdCluster kops.EtcdClusterSpec, instance config.VolumeTag = []string{ fmt.Sprintf("%s=%s", scaleway.TagClusterName, b.Cluster.Name), fmt.Sprintf("%s=%s", scaleway.TagNameEtcdClusterPrefix, etcdCluster.Name), - fmt.Sprintf("%s=%s", scaleway.TagNameRolePrefix, scaleway.TagRoleMaster), + fmt.Sprintf("%s=%s", scaleway.TagNameRolePrefix, scaleway.TagRoleControlPlane), } config.VolumeNameTag = fmt.Sprintf("%s=%s", scaleway.TagInstanceGroup, instanceGroupName) default: diff --git a/pkg/model/master_volumes.go b/pkg/model/master_volumes.go index 1b5c187d16..bee9ab7368 100644 --- a/pkg/model/master_volumes.go +++ b/pkg/model/master_volumes.go @@ -401,7 +401,7 @@ func (b *MasterVolumeBuilder) addScalewayVolume(c *fi.CloudupModelBuilderContext tags := []string{ fmt.Sprintf("%s=%s", scaleway.TagClusterName, b.Cluster.ObjectMeta.Name), fmt.Sprintf("%s=%s", scaleway.TagNameEtcdClusterPrefix, etcd.Name), - fmt.Sprintf("%s=%s", scaleway.TagNameRolePrefix, scaleway.TagRoleMaster), + fmt.Sprintf("%s=%s", scaleway.TagNameRolePrefix, scaleway.TagRoleControlPlane), fmt.Sprintf("%s=%s", scaleway.TagInstanceGroup, fi.ValueOf(m.InstanceGroup)), } diff --git a/pkg/model/scalewaymodel/instances.go b/pkg/model/scalewaymodel/instances.go index 55c9a4abb6..f7510f3c90 100644 --- a/pkg/model/scalewaymodel/instances.go +++ b/pkg/model/scalewaymodel/instances.go @@ -63,6 +63,13 @@ func (d *InstanceModelBuilder) Build(c *fi.CloudupModelBuilderContext) error { }, } + if ig.IsControlPlane() { + instance.Tags = append(instance.Tags, scaleway.TagNameRolePrefix+"="+scaleway.TagRoleControlPlane) + instance.Role = fi.PtrTo(scaleway.TagRoleControlPlane) + } else { + instance.Role = fi.PtrTo(scaleway.TagRoleWorker) + } + c.AddTask(&instance) } return nil diff --git a/upup/pkg/fi/cloudup/scaleway/cloud.go b/upup/pkg/fi/cloudup/scaleway/cloud.go index 8435c62de3..cc41e9d31a 100644 --- a/upup/pkg/fi/cloudup/scaleway/cloud.go +++ b/upup/pkg/fi/cloudup/scaleway/cloud.go @@ -40,8 +40,8 @@ const ( TagInstanceGroup = "instance-group" TagNameRolePrefix = "k8s.io/role" TagNameEtcdClusterPrefix = "k8s.io/etcd" - TagRoleMaster = "control-plane" - TagRoleVolume = "volume" + TagRoleControlPlane = "control-plane" + TagRoleWorker = "worker" ) // ScwCloud exposes all the interfaces required to operate on Scaleway resources @@ -419,6 +419,10 @@ func (s *scwCloudImplementation) DeleteSSHKey(sshkey *iam.SSHKey) error { SSHKeyID: sshkey.ID, }) if err != nil { + if is404Error(err) { + klog.V(8).Infof("SSH key %q (%s) was already deleted", sshkey.Name, sshkey.ID) + return nil + } return fmt.Errorf("failed to delete ssh key %s: %w", sshkey.ID, err) } return nil @@ -430,6 +434,10 @@ func (s *scwCloudImplementation) DeleteVolume(volume *instance.Volume) error { Zone: s.zone, }) if err != nil { + if is404Error(err) { + klog.V(8).Infof("Volume %q (%s) was already deleted", volume.Name, volume.ID) + return nil + } return fmt.Errorf("failed to delete volume %s: %w", volume.ID, err) } @@ -438,7 +446,7 @@ func (s *scwCloudImplementation) DeleteVolume(volume *instance.Volume) error { Zone: s.zone, }) if !is404Error(err) { - return fmt.Errorf("delete server %s: error waiting for volume after deletion: %w", volume.ID, err) + return fmt.Errorf("delete volume %s: error waiting for volume after deletion: %w", volume.ID, err) } return nil diff --git a/upup/pkg/fi/cloudup/scalewaytasks/instance.go b/upup/pkg/fi/cloudup/scalewaytasks/instance.go index 7bd6584b7c..a61b14b562 100644 --- a/upup/pkg/fi/cloudup/scalewaytasks/instance.go +++ b/upup/pkg/fi/cloudup/scalewaytasks/instance.go @@ -32,6 +32,7 @@ type Instance struct { Lifecycle fi.Lifecycle Zone *string + Role *string CommercialType *string Image *string Tags []string @@ -56,13 +57,20 @@ func (s *Instance) Find(c *fi.CloudupContext) (*Instance, error) { if len(servers) == 0 { return nil, nil } - server := servers[0] + role := scaleway.TagRoleWorker + for _, tag := range server.Tags { + if tag == scaleway.TagNameRolePrefix+"="+scaleway.TagRoleControlPlane { + role = scaleway.TagRoleControlPlane + } + } + return &Instance{ Name: fi.PtrTo(server.Name), Count: len(servers), Zone: fi.PtrTo(server.Zone.String()), + Role: fi.PtrTo(role), CommercialType: fi.PtrTo(server.CommercialType), Image: s.Image, Tags: server.Tags,