Commit 34699f3f authored by Jingfang Liu's avatar Jingfang Liu

Add KustomizationVisitor

parent ec1d83b8
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
- k8s.io/api/core/v1 - k8s.io/api/core/v1
- k8s.io/cli-runtime/pkg/genericclioptions/printers - k8s.io/cli-runtime/pkg/genericclioptions/printers
- k8s.io/cli-runtime/pkg/genericclioptions/resource - k8s.io/cli-runtime/pkg/genericclioptions/resource
- k8s.io/cli-runtime/pkg/kustomize
- baseImportPath: "./vendor/k8s.io/apimachinery/" - baseImportPath: "./vendor/k8s.io/apimachinery/"
allowedImports: allowedImports:
......
...@@ -35,12 +35,14 @@ go_library( ...@@ -35,12 +35,14 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/yaml:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library",
"//staging/src/k8s.io/cli-runtime/pkg/kustomize:go_default_library",
"//staging/src/k8s.io/client-go/discovery:go_default_library", "//staging/src/k8s.io/client-go/discovery:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library",
"//staging/src/k8s.io/client-go/restmapper:go_default_library", "//staging/src/k8s.io/client-go/restmapper:go_default_library",
"//vendor/golang.org/x/text/encoding/unicode:go_default_library", "//vendor/golang.org/x/text/encoding/unicode:go_default_library",
"//vendor/golang.org/x/text/transform:go_default_library", "//vendor/golang.org/x/text/transform:go_default_library",
"//vendor/sigs.k8s.io/kustomize/pkg/fs:go_default_library",
], ],
) )
......
...@@ -39,6 +39,8 @@ import ( ...@@ -39,6 +39,8 @@ import (
utilerrors "k8s.io/apimachinery/pkg/util/errors" utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apimachinery/pkg/util/yaml" "k8s.io/apimachinery/pkg/util/yaml"
"k8s.io/apimachinery/pkg/watch" "k8s.io/apimachinery/pkg/watch"
"k8s.io/cli-runtime/pkg/kustomize"
"sigs.k8s.io/kustomize/pkg/fs"
) )
const ( const (
...@@ -520,6 +522,24 @@ func (v *FileVisitor) Visit(fn VisitorFunc) error { ...@@ -520,6 +522,24 @@ func (v *FileVisitor) Visit(fn VisitorFunc) error {
return v.StreamVisitor.Visit(fn) return v.StreamVisitor.Visit(fn)
} }
// KustomizeVisitor is wrapper around a StreamVisitor, to handle Kustomization directories
type KustomizeVisitor struct {
Path string
*StreamVisitor
}
// Visit in a KustomizeVisitor gets the output of Kustomize build and save it in the Streamvisitor
func (v *KustomizeVisitor) Visit(fn VisitorFunc) error {
fSys := fs.MakeRealFS()
var out bytes.Buffer
err := kustomize.RunKustomizeBuild(&out, fSys, v.Path)
if err != nil {
return err
}
v.StreamVisitor.Reader = bytes.NewReader(out.Bytes())
return v.StreamVisitor.Visit(fn)
}
// StreamVisitor reads objects from an io.Reader and walks them. A stream visitor can only be // StreamVisitor reads objects from an io.Reader and walks them. A stream visitor can only be
// visited once. // visited once.
// TODO: depends on objects being in JSON format before being passed to decode - need to implement // TODO: depends on objects being in JSON format before being passed to decode - need to implement
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment