correct ordering of the k8s objects:

NameSpace, CRD, ServiceAccount, Role, ClusterRole, RoleBinding,
ClusterRoleBinding
This commit is contained in:
Jingfang Liu
2018-06-21 16:21:20 -07:00
parent dec5109e31
commit 90d16c2377
2 changed files with 31 additions and 8 deletions

View File

@@ -37,12 +37,27 @@ func (a IdSlice) Less(i, j int) bool {
return a[i].Name() < a[j].Name() return a[i].Name() < a[j].Name()
} }
func gvkLess(i, j schema.GroupVersionKind) bool { var typeOrders = map[string]int{
if i.Kind == "Namespace" { "Namespace": 0,
return true "CustomResourceDefinition": 1,
} else if j.Kind == "Namespace" { "ServiceAccount": 2,
return false "Role": 3,
} else { "ClusterRole": 4,
return i.String() < j.String() "RoleBinding": 5,
} "ClusterRoleBinding": 6,
}
func gvkLess(i, j schema.GroupVersionKind) bool {
indexi, foundi := typeOrders[i.Kind]
indexj, foundj := typeOrders[j.Kind]
if foundi && foundj {
return indexi < indexj
}
if foundi && !foundj {
return true
}
if !foundi && foundj {
return false
}
return i.String() < j.String()
} }

View File

@@ -31,10 +31,18 @@ func TestLess(t *testing.T) {
resource.NewResId(schema.GroupVersionKind{Kind: "Pod"}, "pod"), resource.NewResId(schema.GroupVersionKind{Kind: "Pod"}, "pod"),
resource.NewResId(schema.GroupVersionKind{Kind: "Namespace"}, "ns1"), resource.NewResId(schema.GroupVersionKind{Kind: "Namespace"}, "ns1"),
resource.NewResId(schema.GroupVersionKind{Kind: "Namespace"}, "ns2"), resource.NewResId(schema.GroupVersionKind{Kind: "Namespace"}, "ns2"),
resource.NewResId(schema.GroupVersionKind{Kind: "Role"}, "ro"),
resource.NewResId(schema.GroupVersionKind{Kind: "RoleBinding"}, "rb"),
resource.NewResId(schema.GroupVersionKind{Kind: "CustomResourceDefinition"}, "crd"),
resource.NewResId(schema.GroupVersionKind{Kind: "ServiceAccount"}, "sa"),
} }
expected := IdSlice{ expected := IdSlice{
resource.NewResId(schema.GroupVersionKind{Kind: "Namespace"}, "ns1"), resource.NewResId(schema.GroupVersionKind{Kind: "Namespace"}, "ns1"),
resource.NewResId(schema.GroupVersionKind{Kind: "Namespace"}, "ns2"), resource.NewResId(schema.GroupVersionKind{Kind: "Namespace"}, "ns2"),
resource.NewResId(schema.GroupVersionKind{Kind: "CustomResourceDefinition"}, "crd"),
resource.NewResId(schema.GroupVersionKind{Kind: "ServiceAccount"}, "sa"),
resource.NewResId(schema.GroupVersionKind{Kind: "Role"}, "ro"),
resource.NewResId(schema.GroupVersionKind{Kind: "RoleBinding"}, "rb"),
resource.NewResId(schema.GroupVersionKind{Kind: "ConfigMap"}, "cm"), resource.NewResId(schema.GroupVersionKind{Kind: "ConfigMap"}, "cm"),
resource.NewResId(schema.GroupVersionKind{Kind: "Pod"}, "pod"), resource.NewResId(schema.GroupVersionKind{Kind: "Pod"}, "pod"),
} }