Skip to content

Commit 63cfe63

Browse files
authored
fix: Use generateName as last comparison when sorting (#1031)
1 parent 7716fe6 commit 63cfe63

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

pkg/kubernetes/manifest/manifest.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,14 @@ func (m Metadata) Name() string {
203203
return name.(string)
204204
}
205205

206+
func (m Metadata) GenerateName() string {
207+
generateName, ok := m["generateName"]
208+
if !ok {
209+
return ""
210+
}
211+
return generateName.(string)
212+
}
213+
206214
// HasNamespace returns whether the manifest has a namespace set
207215
func (m Metadata) HasNamespace() bool {
208216
return m2o(m).Get("namespace").IsStr()

pkg/process/sort.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,10 @@ func Sort(list manifest.List) {
8282
return list[i].Metadata().Namespace() < list[j].Metadata().Namespace()
8383
}
8484

85-
// Otherwise, order the objects by name.
86-
return list[i].Metadata().Name() < list[j].Metadata().Name()
85+
if list[i].Metadata().Name() != list[j].Metadata().Name() {
86+
return list[i].Metadata().Name() < list[j].Metadata().Name()
87+
}
88+
89+
return list[i].Metadata().GenerateName() < list[j].Metadata().GenerateName()
8790
})
8891
}

pkg/process/sort_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,19 @@ func TestSort(t *testing.T) {
7878
mkobj("CustomResourceDefinition", "crd2", ""),
7979
},
8080
},
81+
{
82+
// sorting by the generate name prefix if everything else is the same
83+
raw: manifest.List{
84+
mkGenerateObj("CustomResourceDefinition", "crd2-", ""),
85+
mkGenerateObj("CustomResourceDefinition", "crd-", ""),
86+
mkGenerateObj("CustomResourceDefinition", "crd1-", ""),
87+
},
88+
state: manifest.List{
89+
mkGenerateObj("CustomResourceDefinition", "crd-", ""),
90+
mkGenerateObj("CustomResourceDefinition", "crd1-", ""),
91+
mkGenerateObj("CustomResourceDefinition", "crd2-", ""),
92+
},
93+
},
8194
{
8295
raw: manifest.List{
8396
mkobj("Deployment", "b", "a"),
@@ -130,3 +143,9 @@ func mkobj(kind string, name string, ns string) map[string]interface{} {
130143

131144
return ret
132145
}
146+
147+
func mkGenerateObj(kind string, generateName string, ns string) map[string]interface{} {
148+
result := mkobj(kind, "", ns)
149+
result["metadata"].(map[string]interface{})["generateName"] = generateName
150+
return result
151+
}

0 commit comments

Comments
 (0)