Skip to content
This repository has been archived by the owner on Mar 19, 2024. It is now read-only.

Commit

Permalink
conformance: move kustomization logic into kustomize.go
Browse files Browse the repository at this point in the history
  • Loading branch information
mikemorris committed Jun 8, 2022
1 parent 78a5ffe commit 1c8acbd
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 51 deletions.
55 changes: 4 additions & 51 deletions internal/testing/conformance/conformance_test.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package conformance_test
package conformance

import (
"path/filepath"
"testing"

"k8s.io/utils/strings/slices"
Expand All @@ -10,8 +9,6 @@ import (
"sigs.k8s.io/gateway-api/conformance/tests"
"sigs.k8s.io/gateway-api/conformance/utils/flags"
"sigs.k8s.io/gateway-api/conformance/utils/suite"
"sigs.k8s.io/kustomize/api/krusty"
"sigs.k8s.io/kustomize/kyaml/filesys"

_ "k8s.io/client-go/plugin/pkg/client/auth"
"sigs.k8s.io/controller-runtime/pkg/client"
Expand Down Expand Up @@ -57,62 +54,18 @@ func TestConformance(t *testing.T) {
t.Fatalf("Error reading embedded base manifests: %v", err)
}

// Write embedded base manifests to kyaml filesystem
fs := filesys.MakeFsOnDisk()
tmpdir := t.TempDir()

basedir := filepath.Join(tmpdir, "base")
if err := fs.Mkdir(basedir); err != nil {
t.Fatalf("Error creating base directory: %v", err)
}
manifestsPath := filepath.Join(basedir, "manifests.yaml")
if err := fs.WriteFile(manifestsPath, b); err != nil {
t.Fatalf("Error writing base manifests file in base directory: %v", err)
}

// Copy kustomization to kyaml filesystem
b, err = fs.ReadFile("kustomization.yaml")
if err != nil {
t.Fatalf("Error reading kustomization: %v", err)
}
if err := fs.WriteFile(filepath.Join(tmpdir, "kustomization.yaml"), b); err != nil {
t.Fatalf("Error writing kustomization in tmpdir: %v", err)
}

// Copy proxydefaults to kyaml filesystem
b, err = fs.ReadFile("proxydefaults.yaml")
if err != nil {
t.Fatalf("Error reading proxydefaults: %v", err)
}
if err := fs.WriteFile(filepath.Join(tmpdir, "proxydefaults.yaml"), b); err != nil {
t.Fatalf("Error writing kustomization in tmpdir: %v", err)
}

// Patch base manifests as needed
k := krusty.MakeKustomizer(
krusty.MakeDefaultOptions(),
)
resmap, err := k.Run(fs, tmpdir)
// Kustomzie base manifests as needed
kustomizedBaseManifests, err := kustomizeBaseManifests(t, b)
if err != nil {
t.Fatalf("Error kustomizing base manifests: %v", err)
}

b, err = resmap.AsYaml()
if err != nil {
t.Fatalf("Error converting kustomized resources to YAML: %v", err)
}

// Write kustomized resources back to disk
if err := fs.WriteFile(filepath.Join(tmpdir, "kustomized.yaml"), b); err != nil {
t.Fatalf("Error writing kustomized YAML to tmpdir: %v", err)
}

cSuite := suite.New(suite.Options{
Client: c,
GatewayClassName: gatewayClassName,
Debug: debug,
CleanupBaseResources: cleanupBaseResources,
BaseManifests: "local://" + filepath.Join(tmpdir, "kustomized.yaml"),
BaseManifests: kustomizedBaseManifests,
SupportedFeatures: []suite.SupportedFeature{},
})
cSuite.Setup(t)
Expand Down
66 changes: 66 additions & 0 deletions internal/testing/conformance/kustomize.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package conformance

import (
"fmt"
"path/filepath"
"testing"

"sigs.k8s.io/kustomize/api/krusty"
"sigs.k8s.io/kustomize/kyaml/filesys"
)

func kustomizeBaseManifests(t *testing.T, baseManifests []byte) (string, error) {
// Create kyaml wrapper for local filesystem, needed for Kustomizer.Run, and tmpdir
fs := filesys.MakeFsOnDisk()
tmpdir := t.TempDir()

// Write embedded base manifests to kyaml filesystem
basedir := filepath.Join(tmpdir, "base")
if err := fs.Mkdir(basedir); err != nil {
return "", fmt.Errorf("Error creating base directory: %v", err)
}
if err := fs.WriteFile(filepath.Join(basedir, "manifests.yaml"), baseManifests); err != nil {
return "", fmt.Errorf("Error writing base manifests file in base directory: %v", err)
}

// Copy kustomization to tmpdir
b, err := fs.ReadFile("kustomization.yaml")
if err != nil {
return "", fmt.Errorf("Error reading kustomization: %v", err)
}
if err := fs.WriteFile(filepath.Join(tmpdir, "kustomization.yaml"), b); err != nil {
return "", fmt.Errorf("Error writing kustomization in tmpdir: %v", err)
}

// Copy proxydefaults to tmpdir
b, err = fs.ReadFile("proxydefaults.yaml")
if err != nil {
return "", fmt.Errorf("Error reading proxydefaults: %v", err)
}
if err := fs.WriteFile(filepath.Join(tmpdir, "proxydefaults.yaml"), b); err != nil {
return "", fmt.Errorf("Error writing kustomization in tmpdir: %v", err)
}

// Kustomize base manifests
k := krusty.MakeKustomizer(
krusty.MakeDefaultOptions(),
)
resmap, err := k.Run(fs, tmpdir)
if err != nil {
return "", fmt.Errorf("Error kustomizing base manifests: %v", err)
}

// Parse results from kustomization run as YAML
b, err = resmap.AsYaml()
if err != nil {
return "", fmt.Errorf("Error converting kustomized resources to YAML: %v", err)
}

// Write kustomized resources back to disk
kustomizedPath := filepath.Join(tmpdir, "kustomized.yaml")
if err := fs.WriteFile(kustomizedPath, b); err != nil {
return "", fmt.Errorf("Error writing kustomized YAML to tmpdir: %v", err)
}

return "local://" + kustomizedPath, nil
}

0 comments on commit 1c8acbd

Please sign in to comment.