mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-12 09:24:23 +00:00
Objectify nbrSlice code.
This commit is contained in:
@@ -85,3 +85,11 @@ func (fs FieldSpec) PathSlice() []string {
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type fsSlice []FieldSpec
|
||||||
|
|
||||||
|
func (s fsSlice) Len() int { return len(s) }
|
||||||
|
func (s fsSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||||
|
func (s fsSlice) Less(i, j int) bool {
|
||||||
|
return s[i].Gvk.IsLessThan(s[j].Gvk)
|
||||||
|
}
|
||||||
|
|||||||
@@ -17,8 +17,9 @@ limitations under the License.
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sigs.k8s.io/kustomize/pkg/gvk"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"sigs.k8s.io/kustomize/pkg/gvk"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NameBackReferences is an association between a gvk.GVK and a list
|
// NameBackReferences is an association between a gvk.GVK and a list
|
||||||
@@ -63,21 +64,27 @@ func (n NameBackReferences) String() string {
|
|||||||
strings.Join(r, "\n") + "\n)"
|
strings.Join(r, "\n") + "\n)"
|
||||||
}
|
}
|
||||||
|
|
||||||
func mergeNameBackReferences(
|
type nbrSlice []NameBackReferences
|
||||||
a, b []NameBackReferences) []NameBackReferences {
|
|
||||||
for _, r := range b {
|
func (s nbrSlice) Len() int { return len(s) }
|
||||||
a = merge(a, r)
|
func (s nbrSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
||||||
}
|
func (s nbrSlice) Less(i, j int) bool {
|
||||||
return a
|
return s[i].Gvk.IsLessThan(s[j].Gvk)
|
||||||
}
|
}
|
||||||
|
|
||||||
func merge(
|
func (s nbrSlice) mergeAll(o nbrSlice) nbrSlice {
|
||||||
backRefsSlice []NameBackReferences,
|
result := s
|
||||||
other NameBackReferences) []NameBackReferences {
|
for _, r := range o {
|
||||||
var result []NameBackReferences
|
result = result.mergeOne(r)
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s nbrSlice) mergeOne(other NameBackReferences) nbrSlice {
|
||||||
|
var result nbrSlice
|
||||||
found := false
|
found := false
|
||||||
for _, c := range backRefsSlice {
|
for _, c := range s {
|
||||||
if c.Equals(other.Gvk) {
|
if c.Gvk.Equals(other.Gvk) {
|
||||||
c.FieldSpecs = append(c.FieldSpecs, other.FieldSpecs...)
|
c.FieldSpecs = append(c.FieldSpecs, other.FieldSpecs...)
|
||||||
found = true
|
found = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFoo(t *testing.T) {
|
func TestMergeAll(t *testing.T) {
|
||||||
fsSlice1 := []FieldSpec{
|
fsSlice1 := []FieldSpec{
|
||||||
{
|
{
|
||||||
Gvk: gvk.Gvk{
|
Gvk: gvk.Gvk{
|
||||||
@@ -56,7 +56,7 @@ func TestFoo(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
nbrsSlice1 := []NameBackReferences{
|
nbrsSlice1 := nbrSlice{
|
||||||
{
|
{
|
||||||
Gvk: gvk.Gvk{
|
Gvk: gvk.Gvk{
|
||||||
Kind: "ConfigMap",
|
Kind: "ConfigMap",
|
||||||
@@ -70,7 +70,7 @@ func TestFoo(t *testing.T) {
|
|||||||
FieldSpecs: fsSlice2,
|
FieldSpecs: fsSlice2,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
nbrsSlice2 := []NameBackReferences{
|
nbrsSlice2 := nbrSlice{
|
||||||
{
|
{
|
||||||
Gvk: gvk.Gvk{
|
Gvk: gvk.Gvk{
|
||||||
Kind: "ConfigMap",
|
Kind: "ConfigMap",
|
||||||
@@ -84,7 +84,7 @@ func TestFoo(t *testing.T) {
|
|||||||
FieldSpecs: fsSlice2,
|
FieldSpecs: fsSlice2,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
expected := []NameBackReferences{
|
expected := nbrSlice{
|
||||||
{
|
{
|
||||||
Gvk: gvk.Gvk{
|
Gvk: gvk.Gvk{
|
||||||
Kind: "ConfigMap",
|
Kind: "ConfigMap",
|
||||||
@@ -99,7 +99,7 @@ func TestFoo(t *testing.T) {
|
|||||||
FieldSpecs: append(fsSlice2, fsSlice2...),
|
FieldSpecs: append(fsSlice2, fsSlice2...),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
actual := mergeNameBackReferences(nbrsSlice1, nbrsSlice2)
|
actual := nbrsSlice1.mergeAll(nbrsSlice2)
|
||||||
if !reflect.DeepEqual(actual, expected) {
|
if !reflect.DeepEqual(actual, expected) {
|
||||||
t.Fatalf("expected\n %v\n but got\n %v\n", expected, actual)
|
t.Fatalf("expected\n %v\n but got\n %v\n", expected, actual)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,22 +22,6 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
)
|
)
|
||||||
|
|
||||||
type nbrSlice []NameBackReferences
|
|
||||||
|
|
||||||
func (s nbrSlice) Len() int { return len(s) }
|
|
||||||
func (s nbrSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
|
||||||
func (s nbrSlice) Less(i, j int) bool {
|
|
||||||
return s[i].Gvk.IsLessThan(s[j].Gvk)
|
|
||||||
}
|
|
||||||
|
|
||||||
type fsSlice []FieldSpec
|
|
||||||
|
|
||||||
func (s fsSlice) Len() int { return len(s) }
|
|
||||||
func (s fsSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
|
|
||||||
func (s fsSlice) Less(i, j int) bool {
|
|
||||||
return s[i].Gvk.IsLessThan(s[j].Gvk)
|
|
||||||
}
|
|
||||||
|
|
||||||
// TransformerConfig holds the data needed to perform transformations.
|
// TransformerConfig holds the data needed to perform transformations.
|
||||||
type TransformerConfig struct {
|
type TransformerConfig struct {
|
||||||
NamePrefix fsSlice `json:"namePrefix,omitempty" yaml:"namePrefix,omitempty"`
|
NamePrefix fsSlice `json:"namePrefix,omitempty" yaml:"namePrefix,omitempty"`
|
||||||
@@ -75,7 +59,7 @@ func (t *TransformerConfig) AddAnnotationFieldSpec(fs FieldSpec) {
|
|||||||
|
|
||||||
// AddNamereferenceFieldSpec adds a NameBackReferences to NameReference
|
// AddNamereferenceFieldSpec adds a NameBackReferences to NameReference
|
||||||
func (t *TransformerConfig) AddNamereferenceFieldSpec(nbrs NameBackReferences) {
|
func (t *TransformerConfig) AddNamereferenceFieldSpec(nbrs NameBackReferences) {
|
||||||
t.NameReference = mergeNameBackReferences(t.NameReference, []NameBackReferences{nbrs})
|
t.NameReference = t.NameReference.mergeOne(nbrs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Merge merges two TransformerConfigs objects into a new TransformerConfig object
|
// Merge merges two TransformerConfigs objects into a new TransformerConfig object
|
||||||
@@ -86,7 +70,7 @@ func (t *TransformerConfig) Merge(input *TransformerConfig) *TransformerConfig {
|
|||||||
merged.CommonAnnotations = append(t.CommonAnnotations, input.CommonAnnotations...)
|
merged.CommonAnnotations = append(t.CommonAnnotations, input.CommonAnnotations...)
|
||||||
merged.CommonLabels = append(t.CommonLabels, input.CommonLabels...)
|
merged.CommonLabels = append(t.CommonLabels, input.CommonLabels...)
|
||||||
merged.VarReference = append(t.VarReference, input.VarReference...)
|
merged.VarReference = append(t.VarReference, input.VarReference...)
|
||||||
merged.NameReference = mergeNameBackReferences(t.NameReference, input.NameReference)
|
merged.NameReference = t.NameReference.mergeAll(input.NameReference)
|
||||||
merged.sortFields()
|
merged.sortFields()
|
||||||
return merged
|
return merged
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ func TestAddNamereferenceFieldSpec(t *testing.T) {
|
|||||||
|
|
||||||
cfg.AddNamereferenceFieldSpec(nbrs)
|
cfg.AddNamereferenceFieldSpec(nbrs)
|
||||||
if len(cfg.NameReference) != 1 {
|
if len(cfg.NameReference) != 1 {
|
||||||
t.Fatal("failed to add namerefence FieldSpec")
|
t.Fatal("failed to add namereference FieldSpec")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user