Skip to content

Commit 17da6bc

Browse files
authored
Truncate cronjob name at 52 characters (zalando#1208)
1 parent 772f0ca commit 17da6bc

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

pkg/cluster/k8sres.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2101,7 +2101,7 @@ func (c *Cluster) generateLogicalBackupPodEnvVars() []v1.EnvVar {
21012101

21022102
// getLogicalBackupJobName returns the name; the job itself may not exists
21032103
func (c *Cluster) getLogicalBackupJobName() (jobName string) {
2104-
return c.OpConfig.LogicalBackupJobPrefix + c.clusterName().Name
2104+
return trimCronjobName(c.OpConfig.LogicalBackupJobPrefix + c.clusterName().Name)
21052105
}
21062106

21072107
// Return an array of ownerReferences to make an arbitraty object dependent on

pkg/cluster/util.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,3 +576,12 @@ func mergeContainers(containers ...[]v1.Container) ([]v1.Container, []string) {
576576
}
577577
return result, conflicts
578578
}
579+
580+
func trimCronjobName(name string) string {
581+
maxLength := 52
582+
if len(name) > maxLength {
583+
name = name[0:maxLength]
584+
name = strings.TrimRight(name, "-")
585+
}
586+
return name
587+
}

pkg/cluster/util_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,43 @@ func TestInheritedAnnotations(t *testing.T) {
139139
}
140140

141141
}
142+
143+
func Test_trimCronjobName(t *testing.T) {
144+
type args struct {
145+
name string
146+
}
147+
tests := []struct {
148+
name string
149+
args args
150+
want string
151+
}{
152+
{
153+
name: "short name",
154+
args: args{
155+
name: "short-name",
156+
},
157+
want: "short-name",
158+
},
159+
{
160+
name: "long name",
161+
args: args{
162+
name: "very-very-very-very-very-very-very-very-very-long-db-name",
163+
},
164+
want: "very-very-very-very-very-very-very-very-very-long-db",
165+
},
166+
{
167+
name: "long name should not end with dash",
168+
args: args{
169+
name: "very-very-very-very-very-very-very-very-very-----------long-db-name",
170+
},
171+
want: "very-very-very-very-very-very-very-very-very",
172+
},
173+
}
174+
for _, tt := range tests {
175+
t.Run(tt.name, func(t *testing.T) {
176+
if got := trimCronjobName(tt.args.name); got != tt.want {
177+
t.Errorf("trimCronjobName() = %v, want %v", got, tt.want)
178+
}
179+
})
180+
}
181+
}

0 commit comments

Comments
 (0)