From 0481aebc2de8ed0ae81df9266522e0e79bd67f19 Mon Sep 17 00:00:00 2001 From: Peter Rifel Date: Thu, 21 Apr 2022 17:40:29 -0500 Subject: [PATCH] Trim GCE Subnet and Disk names --- pkg/model/gcemodel/context.go | 6 +++++- pkg/model/master_volumes.go | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/pkg/model/gcemodel/context.go b/pkg/model/gcemodel/context.go index d111d6f640..6ad4c6e6df 100644 --- a/pkg/model/gcemodel/context.go +++ b/pkg/model/gcemodel/context.go @@ -54,7 +54,11 @@ func (c *GCEModelContext) NameForIPAliasRange(key string) string { func (c *GCEModelContext) LinkToSubnet(subnet *kops.ClusterSubnetSpec) *gcetasks.Subnet { name := subnet.ProviderID if name == "" { - name = c.SafeObjectName(subnet.Name) + var err error + name, err = gce.ClusterSuffixedName(subnet.Name, c.Cluster.ObjectMeta.Name, 63) + if err != nil { + klog.Fatalf("failed to construct subnet name: %w", err) + } } return &gcetasks.Subnet{Name: s(name)} diff --git a/pkg/model/master_volumes.go b/pkg/model/master_volumes.go index 603987bac7..4318ee5dac 100644 --- a/pkg/model/master_volumes.go +++ b/pkg/model/master_volumes.go @@ -23,6 +23,7 @@ import ( "github.com/aws/aws-sdk-go/service/ec2" + "k8s.io/klog/v2" "k8s.io/kops/pkg/apis/kops" "k8s.io/kops/pkg/apis/kops/model" "k8s.io/kops/upup/pkg/fi" @@ -59,7 +60,8 @@ func (b *MasterVolumeBuilder) Build(c *fi.ModelBuilderContext) error { for _, etcd := range b.Cluster.Spec.EtcdClusters { for _, m := range etcd.Members { // EBS volume for each member of the each etcd cluster - name := m.Name + ".etcd-" + etcd.Name + "." + b.ClusterName() + prefix := m.Name + ".etcd-" + etcd.Name + name := prefix + "." + b.ClusterName() igName := fi.StringValue(m.InstanceGroup) if igName == "" { @@ -102,7 +104,7 @@ func (b *MasterVolumeBuilder) Build(c *fi.ModelBuilderContext) error { case kops.CloudProviderDO: b.addDOVolume(c, name, volumeSize, zone, etcd, m, allMembers) case kops.CloudProviderGCE: - b.addGCEVolume(c, name, volumeSize, zone, etcd, m, allMembers) + b.addGCEVolume(c, prefix, volumeSize, zone, etcd, m, allMembers) case kops.CloudProviderOpenstack: err = b.addOpenstackVolume(c, name, volumeSize, zone, etcd, m, allMembers) if err != nil { @@ -237,7 +239,7 @@ func (b *MasterVolumeBuilder) addDOVolume(c *fi.ModelBuilderContext, name string c.AddTask(t) } -func (b *MasterVolumeBuilder) addGCEVolume(c *fi.ModelBuilderContext, name string, volumeSize int32, zone string, etcd kops.EtcdClusterSpec, m kops.EtcdMemberSpec, allMembers []string) { +func (b *MasterVolumeBuilder) addGCEVolume(c *fi.ModelBuilderContext, prefix string, volumeSize int32, zone string, etcd kops.EtcdClusterSpec, m kops.EtcdMemberSpec, allMembers []string) { volumeType := fi.StringValue(m.VolumeType) if volumeType == "" { volumeType = DefaultGCEEtcdVolumeType @@ -266,9 +268,13 @@ func (b *MasterVolumeBuilder) addGCEVolume(c *fi.ModelBuilderContext, name strin tags[gce.GceLabelNameEtcdClusterPrefix+etcd.Name] = gce.EncodeGCELabel(clusterSpec) // GCE disk names must match the following regular expression: '[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?' - name = strings.Replace(name, ".", "-", -1) - if strings.IndexByte("0123456789-", name[0]) != -1 { - name = "d" + name + prefix = strings.Replace(prefix, ".", "-", -1) + if strings.IndexByte("0123456789-", prefix[0]) != -1 { + prefix = "d" + prefix + } + name, err := gce.ClusterSuffixedName(prefix, b.Cluster.ObjectMeta.Name, 63) + if err != nil { + klog.Fatalf("failed to construct disk name: %w", err) } t := &gcetasks.Disk{