Add ability to create bundle from bytes
This patch implements new constructor of document.Bundle type using raw bytes as source. Change-Id: Ie7742bcf245083ac988541aa9987448f5827fec3 Signed-off-by: Ruslan Aliev <raliev@mirantis.com>
This commit is contained in:
parent
a435109673
commit
cc25bcf52e
@ -18,6 +18,7 @@ import (
|
|||||||
"io"
|
"io"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
kustfs "sigs.k8s.io/kustomize/api/filesys"
|
||||||
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
|
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
|
||||||
"sigs.k8s.io/kustomize/api/krusty"
|
"sigs.k8s.io/kustomize/api/krusty"
|
||||||
"sigs.k8s.io/kustomize/api/resmap"
|
"sigs.k8s.io/kustomize/api/resmap"
|
||||||
@ -68,6 +69,21 @@ func NewBundleByPath(rootPath string) (Bundle, error) {
|
|||||||
return NewBundle(fs.NewDocumentFs(), rootPath)
|
return NewBundle(fs.NewDocumentFs(), rootPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewBundleFromBytes is a function which builds new document.Bundle from raw []bytes
|
||||||
|
func NewBundleFromBytes(data []byte) (Bundle, error) {
|
||||||
|
fSys := fs.Fs{
|
||||||
|
FileSystem: kustfs.MakeFsInMemory(),
|
||||||
|
}
|
||||||
|
if err := fSys.WriteFile("/kustomization.yaml", []byte(`resources:
|
||||||
|
- data.yaml`)); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if err := fSys.WriteFile("/data.yaml", data); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return NewBundle(fSys, "/")
|
||||||
|
}
|
||||||
|
|
||||||
// NewBundle is a convenience function to create a new bundle
|
// NewBundle is a convenience function to create a new bundle
|
||||||
// Over time, it will evolve to support allowing more control
|
// Over time, it will evolve to support allowing more control
|
||||||
// for kustomize plugins
|
// for kustomize plugins
|
||||||
@ -101,7 +117,7 @@ func NewBundle(fSys fs.FileSystem, kustomizePath string) (Bundle, error) {
|
|||||||
kustomizer := krusty.MakeKustomizer(fSys, &o)
|
kustomizer := krusty.MakeKustomizer(fSys, &o)
|
||||||
m, err := kustomizer.Run(kustomizePath)
|
m, err := kustomizer.Run(kustomizePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return bundle, err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = bundle.SetKustomizeResourceMap(m)
|
err = bundle.SetKustomizeResourceMap(m)
|
||||||
return bundle, err
|
return bundle, err
|
||||||
|
@ -32,6 +32,32 @@ func TestNewBundle(t *testing.T) {
|
|||||||
require.NotNil(bundle)
|
require.NotNil(bundle)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNewBundleFromBytes(t *testing.T) {
|
||||||
|
require := require.New(t)
|
||||||
|
assert := assert.New(t)
|
||||||
|
|
||||||
|
bundle, err := document.NewBundleFromBytes([]byte(`apiVersion: v1
|
||||||
|
kind: Test
|
||||||
|
metadata:
|
||||||
|
name: test
|
||||||
|
labels:
|
||||||
|
app: test-label`))
|
||||||
|
require.NoError(err)
|
||||||
|
require.NotNil(bundle)
|
||||||
|
|
||||||
|
docs, err := bundle.GetAllDocuments()
|
||||||
|
require.NoError(err)
|
||||||
|
assert.NotEmpty(docs)
|
||||||
|
|
||||||
|
doc, err := bundle.SelectOne(document.NewSelector().ByKind("Test").ByName("test"))
|
||||||
|
require.NoError(err)
|
||||||
|
assert.NotNil(doc)
|
||||||
|
|
||||||
|
doc, err = bundle.SelectOne(document.NewSelector().ByKind("Test").ByLabel("app"))
|
||||||
|
require.NoError(err)
|
||||||
|
assert.NotNil(doc)
|
||||||
|
}
|
||||||
|
|
||||||
func TestBundleDocumentFiltering(t *testing.T) {
|
func TestBundleDocumentFiltering(t *testing.T) {
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
require := require.New(t)
|
require := require.New(t)
|
||||||
|
Loading…
Reference in New Issue
Block a user