Take into account the server-side inventory for local diff
If implemented users will be able to use a local kustomization file while retrieving status from the live kustomization file. Signed-off-by: Soule BA <soule@weave.works>
This commit is contained in:
@@ -17,10 +17,15 @@ limitations under the License.
|
||||
package build
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
kustomizev1 "github.com/fluxcd/kustomize-controller/api/v1"
|
||||
"github.com/fluxcd/pkg/apis/meta"
|
||||
"github.com/google/go-cmp/cmp"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"sigs.k8s.io/kustomize/api/resource"
|
||||
"sigs.k8s.io/kustomize/kyaml/yaml"
|
||||
)
|
||||
@@ -215,3 +220,135 @@ func Test_unMarshallKustomization(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_ResolveKustomization(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
localKsFile string
|
||||
liveKustomization *kustomizev1.Kustomization
|
||||
dryrun bool
|
||||
}{
|
||||
{
|
||||
name: "valid kustomization",
|
||||
localKsFile: "testdata/local-kustomization/valid.yaml",
|
||||
},
|
||||
{
|
||||
name: "local and live kustomization",
|
||||
localKsFile: "testdata/local-kustomization/valid.yaml",
|
||||
liveKustomization: &kustomizev1.Kustomization{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "podinfo",
|
||||
Namespace: "flux-system",
|
||||
},
|
||||
Spec: kustomizev1.KustomizationSpec{
|
||||
Interval: metav1.Duration{Duration: time.Minute * 5},
|
||||
Path: "./testdata/local-kustomization/valid.yaml",
|
||||
},
|
||||
Status: kustomizev1.KustomizationStatus{
|
||||
Conditions: []metav1.Condition{
|
||||
{
|
||||
Type: meta.ReadyCondition,
|
||||
Status: metav1.ConditionTrue,
|
||||
},
|
||||
},
|
||||
Inventory: &kustomizev1.ResourceInventory{
|
||||
Entries: []kustomizev1.ResourceRef{
|
||||
{
|
||||
ID: "flux-system_podinfo_v1_service_podinfo",
|
||||
Version: "v1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "local and live kustomization with dryrun",
|
||||
localKsFile: "testdata/local-kustomization/valid.yaml",
|
||||
liveKustomization: &kustomizev1.Kustomization{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "podinfo",
|
||||
Namespace: "flux-system",
|
||||
},
|
||||
Spec: kustomizev1.KustomizationSpec{
|
||||
Interval: metav1.Duration{Duration: time.Minute * 5},
|
||||
Path: "./testdata/local-kustomization/valid.yaml",
|
||||
},
|
||||
Status: kustomizev1.KustomizationStatus{
|
||||
Conditions: []metav1.Condition{
|
||||
{
|
||||
Type: meta.ReadyCondition,
|
||||
Status: metav1.ConditionTrue,
|
||||
},
|
||||
},
|
||||
Inventory: &kustomizev1.ResourceInventory{
|
||||
Entries: []kustomizev1.ResourceRef{
|
||||
{
|
||||
ID: "flux-system_podinfo_v1_service_podinfo",
|
||||
Version: "v1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
dryrun: true,
|
||||
},
|
||||
{
|
||||
name: "live kustomization",
|
||||
liveKustomization: &kustomizev1.Kustomization{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "podinfo",
|
||||
Namespace: "flux-system",
|
||||
},
|
||||
Spec: kustomizev1.KustomizationSpec{
|
||||
Interval: metav1.Duration{Duration: time.Minute * 5},
|
||||
Path: "./testdata/local-kustomization/valid.yaml",
|
||||
},
|
||||
Status: kustomizev1.KustomizationStatus{
|
||||
Conditions: []metav1.Condition{
|
||||
{
|
||||
Type: meta.ReadyCondition,
|
||||
Status: metav1.ConditionTrue,
|
||||
},
|
||||
},
|
||||
Inventory: &kustomizev1.ResourceInventory{
|
||||
Entries: []kustomizev1.ResourceRef{
|
||||
{
|
||||
ID: "flux-system_podinfo_v1_service_podinfo",
|
||||
Version: "v1",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
b := &Builder{}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
b.kustomizationFile = tt.localKsFile
|
||||
b.dryRun = tt.dryrun
|
||||
ks, err := b.resolveKustomization(tt.liveKustomization)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected err '%s'", err)
|
||||
}
|
||||
if !tt.dryrun {
|
||||
if b.kustomizationFile == "" {
|
||||
if cmp.Diff(ks, tt.liveKustomization) != "" {
|
||||
t.Errorf("expected kustomization to match live kustomization")
|
||||
}
|
||||
} else {
|
||||
if tt.liveKustomization != nil && cmp.Diff(ks.Status, tt.liveKustomization.Status) != "" {
|
||||
t.Errorf("expected kustomization status to match live kustomization status")
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ks.Status.Inventory != nil {
|
||||
fmt.Println(ks.Status.Inventory)
|
||||
t.Errorf("expected kustomization status to be nil")
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user