Drop k8s metatype fields from kustomize.yaml struct
This commit is contained in:
		
							parent
							
								
									60665244b3
								
							
						
					
					
						commit
						3f446803ea
					
				| 
						 | 
				
			
			@ -133,10 +133,7 @@ defining a new name prefix, and some different labels.
 | 
			
		|||
<!-- @makeStagingManifest @test -->
 | 
			
		||||
```
 | 
			
		||||
cat <<'EOF' >$OVERLAYS/staging/kustomize.yaml
 | 
			
		||||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Package
 | 
			
		||||
metadata:
 | 
			
		||||
  name: makes-staging-hello
 | 
			
		||||
kustomizationName: makes-staging-hello
 | 
			
		||||
namePrefix: staging-
 | 
			
		||||
objectLabels:
 | 
			
		||||
  instance: staging
 | 
			
		||||
| 
						 | 
				
			
			@ -178,10 +175,7 @@ with a different name prefix and labels.
 | 
			
		|||
<!-- @makeProductionManifest @test -->
 | 
			
		||||
```
 | 
			
		||||
cat <<EOF >$OVERLAYS/production/kustomize.yaml
 | 
			
		||||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Package
 | 
			
		||||
metadata:
 | 
			
		||||
  name: makes-production-tuthello
 | 
			
		||||
kustomizationName: makes-production-tuthello
 | 
			
		||||
namePrefix: production-
 | 
			
		||||
objectLabels:
 | 
			
		||||
  instance: production
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,19 +0,0 @@
 | 
			
		|||
/*
 | 
			
		||||
Copyright 2017 The Kubernetes Authors.
 | 
			
		||||
 | 
			
		||||
Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
you may not use this file except in compliance with the License.
 | 
			
		||||
You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
    http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
See the License for the specific language governing permissions and
 | 
			
		||||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
// Package v1alpha1 contains the type definition for Manifest and Descriptor.
 | 
			
		||||
// It is not an official kubernetes API, but in a kubernetes API style.
 | 
			
		||||
package v1alpha1 // import "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
| 
						 | 
				
			
			@ -22,11 +22,11 @@ import (
 | 
			
		|||
 | 
			
		||||
	"github.com/ghodss/yaml"
 | 
			
		||||
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/constants"
 | 
			
		||||
	interror "k8s.io/kubectl/pkg/kustomize/internal/error"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/resource"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/transformers"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/types"
 | 
			
		||||
	"k8s.io/kubectl/pkg/loader"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -35,8 +35,10 @@ type Application interface {
 | 
			
		|||
	Resources() (resource.ResourceCollection, error)
 | 
			
		||||
	// SemiResources computes and returns the resources without name hash and name reference for the app
 | 
			
		||||
	SemiResources() (resource.ResourceCollection, error)
 | 
			
		||||
	// RawResources computes and returns the raw resources from the manifest.
 | 
			
		||||
	// It contains resources from 1) untransformed resources from current manifest 2) transformed resources from sub packages
 | 
			
		||||
	// RawResources computes and returns the raw resources from the kustomize config file.
 | 
			
		||||
	// It contains resources from
 | 
			
		||||
	// 1) untransformed resources from current kustomize config file
 | 
			
		||||
	// 2) transformed resources from sub packages
 | 
			
		||||
	RawResources() (resource.ResourceCollection, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -44,19 +46,19 @@ var _ Application = &applicationImpl{}
 | 
			
		|||
 | 
			
		||||
// Private implementation of the Application interface
 | 
			
		||||
type applicationImpl struct {
 | 
			
		||||
	manifest *manifest.Manifest
 | 
			
		||||
	manifest *types.Manifest
 | 
			
		||||
	loader   loader.Loader
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewApp parses the manifest at the path using the loader.
 | 
			
		||||
// NewApp parses the kustomize config file at the path using the loader.
 | 
			
		||||
func New(loader loader.Loader) (Application, error) {
 | 
			
		||||
	// load the manifest using the loader
 | 
			
		||||
	// load the kustomize config file using the loader
 | 
			
		||||
	manifestBytes, err := loader.Load(constants.KustomizeFileName)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var m manifest.Manifest
 | 
			
		||||
	var m types.Manifest
 | 
			
		||||
	err = unmarshal(manifestBytes, &m)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
| 
						 | 
				
			
			@ -64,7 +66,7 @@ func New(loader loader.Loader) (Application, error) {
 | 
			
		|||
	return &applicationImpl{manifest: &m, loader: loader}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Resources computes and returns the resources from the manifest.
 | 
			
		||||
// Resources computes and returns the resources from the kustomize config file.
 | 
			
		||||
// The namehashing for configmap/secrets and resolving name reference is only done
 | 
			
		||||
// in the most top overlay once at the end of getting resources.
 | 
			
		||||
func (a *applicationImpl) Resources() (resource.ResourceCollection, error) {
 | 
			
		||||
| 
						 | 
				
			
			@ -130,7 +132,7 @@ func (a *applicationImpl) SemiResources() (resource.ResourceCollection, error) {
 | 
			
		|||
	return allRes, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RawResources computes and returns the raw resources from the manifest.
 | 
			
		||||
// RawResources computes and returns the raw resources from the kustomize config file.
 | 
			
		||||
// The namehashing for configmap/secrets and resolving name reference is only done
 | 
			
		||||
// in the most top overlay once at the end of getting resources.
 | 
			
		||||
func (a *applicationImpl) RawResources() (resource.ResourceCollection, error) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -32,10 +32,7 @@ import (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
func setupTest(t *testing.T) loader.Loader {
 | 
			
		||||
	manifestContent := []byte(`apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Manifest
 | 
			
		||||
metadata:
 | 
			
		||||
  name: nginx-app
 | 
			
		||||
	manifestContent := []byte(`kustomizationName: nginx-app
 | 
			
		||||
namePrefix: foo-
 | 
			
		||||
objectLabels:
 | 
			
		||||
  app: nginx
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,9 +22,9 @@ import (
 | 
			
		|||
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/configmapandsecret"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/constants"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/types"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/util/fs"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -32,13 +32,13 @@ func newCmdAddConfigMap(errOut io.Writer, fsys fs.FileSystem) *cobra.Command {
 | 
			
		|||
	var config dataConfig
 | 
			
		||||
	cmd := &cobra.Command{
 | 
			
		||||
		Use:   "configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1]",
 | 
			
		||||
		Short: "Adds a configmap to the manifest.",
 | 
			
		||||
		Short: "Adds a configmap to the kustomize config file.",
 | 
			
		||||
		Long:  "",
 | 
			
		||||
		Example: `
 | 
			
		||||
	# Adds a configmap to the Manifest (with a specified key)
 | 
			
		||||
	# Adds a configmap to the kustomize config file (with a specified key)
 | 
			
		||||
	kustomize edit add configmap my-configmap --from-file=my-key=file/path --from-literal=my-literal=12345
 | 
			
		||||
 | 
			
		||||
	# Adds a configmap to the Manifest (key is the filename)
 | 
			
		||||
	# Adds a configmap to the kustomize config file (key is the filename)
 | 
			
		||||
	kustomize edit add configmap my-configmap --from-file=file/path
 | 
			
		||||
 | 
			
		||||
	# Adds a configmap from env-file
 | 
			
		||||
| 
						 | 
				
			
			@ -50,7 +50,7 @@ func newCmdAddConfigMap(errOut io.Writer, fsys fs.FileSystem) *cobra.Command {
 | 
			
		|||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Load in the manifest file.
 | 
			
		||||
			// Load in the kustomize config file.
 | 
			
		||||
			mf, err := newManifestFile(constants.KustomizeFileName, fsys)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
| 
						 | 
				
			
			@ -61,13 +61,13 @@ func newCmdAddConfigMap(errOut io.Writer, fsys fs.FileSystem) *cobra.Command {
 | 
			
		|||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Add the config map to the manifest.
 | 
			
		||||
			// Add the config map to the kustomize config file.
 | 
			
		||||
			err = addConfigMap(m, config)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Write out the manifest with added configmap.
 | 
			
		||||
			// Write out the kustomize config file with added configmap.
 | 
			
		||||
			return mf.write(m)
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -79,10 +79,10 @@ func newCmdAddConfigMap(errOut io.Writer, fsys fs.FileSystem) *cobra.Command {
 | 
			
		|||
	return cmd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// addConfigMap updates a configmap within a manifest, using the data in config.
 | 
			
		||||
// Note: error may leave manifest in an undefined state. Suggest passing a copy
 | 
			
		||||
// of manifest.
 | 
			
		||||
func addConfigMap(m *manifest.Manifest, config dataConfig) error {
 | 
			
		||||
// addConfigMap updates a configmap within a kustomize config file, using the data in config.
 | 
			
		||||
// Note: error may leave kustomize config file in an undefined state. Suggest passing a copy
 | 
			
		||||
// of kustomize config file.
 | 
			
		||||
func addConfigMap(m *types.Manifest, config dataConfig) error {
 | 
			
		||||
	cm := getOrCreateConfigMap(m, config.Name)
 | 
			
		||||
 | 
			
		||||
	err := mergeData(&cm.DataSources, config)
 | 
			
		||||
| 
						 | 
				
			
			@ -90,7 +90,7 @@ func addConfigMap(m *manifest.Manifest, config dataConfig) error {
 | 
			
		|||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Validate manifest's configmap by trying to create corev1.configmap.
 | 
			
		||||
	// Validate by trying to create corev1.configmap.
 | 
			
		||||
	_, _, err = configmapandsecret.MakeConfigmapAndGenerateName(*cm)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
| 
						 | 
				
			
			@ -99,19 +99,19 @@ func addConfigMap(m *manifest.Manifest, config dataConfig) error {
 | 
			
		|||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getOrCreateConfigMap(m *manifest.Manifest, name string) *manifest.ConfigMapArgs {
 | 
			
		||||
func getOrCreateConfigMap(m *types.Manifest, name string) *types.ConfigMapArgs {
 | 
			
		||||
	for i, v := range m.ConfigMapGenerator {
 | 
			
		||||
		if name == v.Name {
 | 
			
		||||
			return &m.ConfigMapGenerator[i]
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	// config map not found, create new one and add it to the manifest.
 | 
			
		||||
	cm := &manifest.ConfigMapArgs{Name: name}
 | 
			
		||||
	// config map not found, create new one and add it to the kustomize config file.
 | 
			
		||||
	cm := &types.ConfigMapArgs{Name: name}
 | 
			
		||||
	m.ConfigMapGenerator = append(m.ConfigMapGenerator, *cm)
 | 
			
		||||
	return &m.ConfigMapGenerator[len(m.ConfigMapGenerator)-1]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func mergeData(src *manifest.DataSources, config dataConfig) error {
 | 
			
		||||
func mergeData(src *types.DataSources, config dataConfig) error {
 | 
			
		||||
	src.LiteralSources = append(src.LiteralSources, config.LiteralSources...)
 | 
			
		||||
	src.FileSources = append(src.FileSources, config.FileSources...)
 | 
			
		||||
	if src.EnvSource != "" && src.EnvSource != config.EnvFileSource {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,7 +19,7 @@ package commands
 | 
			
		|||
import (
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/types"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/util/fs"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -32,7 +32,7 @@ func TestNewAddConfigMapIsNotNil(t *testing.T) {
 | 
			
		|||
func TestGetOrCreateConfigMap(t *testing.T) {
 | 
			
		||||
	cmName := "test-config-name"
 | 
			
		||||
 | 
			
		||||
	manifest := &manifest.Manifest{
 | 
			
		||||
	manifest := &types.Manifest{
 | 
			
		||||
		NamePrefix: "test-name-prefix",
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +65,7 @@ func TestGetOrCreateConfigMap(t *testing.T) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func TestMergeData_LiteralSources(t *testing.T) {
 | 
			
		||||
	ds := &manifest.DataSources{}
 | 
			
		||||
	ds := &types.DataSources{}
 | 
			
		||||
 | 
			
		||||
	err := mergeData(ds, dataConfig{LiteralSources: []string{"k1=v1"}})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -87,7 +87,7 @@ func TestMergeData_LiteralSources(t *testing.T) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func TestMergeData_FileSources(t *testing.T) {
 | 
			
		||||
	ds := &manifest.DataSources{}
 | 
			
		||||
	ds := &types.DataSources{}
 | 
			
		||||
 | 
			
		||||
	err := mergeData(ds, dataConfig{FileSources: []string{"file1"}})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -111,7 +111,7 @@ func TestMergeData_FileSources(t *testing.T) {
 | 
			
		|||
func TestMergeData_EnvSource(t *testing.T) {
 | 
			
		||||
	envFileName := "env1"
 | 
			
		||||
	envFileName2 := "env2"
 | 
			
		||||
	ds := &manifest.DataSources{}
 | 
			
		||||
	ds := &types.DataSources{}
 | 
			
		||||
 | 
			
		||||
	err := mergeData(ds, dataConfig{EnvFileSource: envFileName})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,4 @@
 | 
			
		|||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Manifest
 | 
			
		||||
metadata:
 | 
			
		||||
  name: nginx-app
 | 
			
		||||
kustomizationName: nginx-app
 | 
			
		||||
namePrefix: team-foo-
 | 
			
		||||
objectLabels:
 | 
			
		||||
  app: mynginx
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,4 @@
 | 
			
		|||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Manifest
 | 
			
		||||
metadata:
 | 
			
		||||
  name: nginx-app
 | 
			
		||||
kustomizationName: nginx-app
 | 
			
		||||
namePrefix: staging-
 | 
			
		||||
objectLabels:
 | 
			
		||||
  env: staging
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,4 @@
 | 
			
		|||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Manifest
 | 
			
		||||
metadata:
 | 
			
		||||
  name: nginx-app
 | 
			
		||||
kustomizationName: nginx-app
 | 
			
		||||
namePrefix: team-foo-
 | 
			
		||||
objectLabels:
 | 
			
		||||
  app: mynginx
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,4 @@
 | 
			
		|||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Manifest
 | 
			
		||||
metadata:
 | 
			
		||||
  name: nginx-app
 | 
			
		||||
kustomizationName: nginx-app
 | 
			
		||||
namePrefix: staging-
 | 
			
		||||
objectLabels:
 | 
			
		||||
  env: staging
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,4 @@
 | 
			
		|||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Manifest
 | 
			
		||||
metadata:
 | 
			
		||||
  name: nginx-app
 | 
			
		||||
kustomizationName: nginx-app
 | 
			
		||||
namePrefix: team-foo-
 | 
			
		||||
objectLabels:
 | 
			
		||||
  app: mynginx
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,4 @@
 | 
			
		|||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Manifest
 | 
			
		||||
metadata:
 | 
			
		||||
  name: nginx-app
 | 
			
		||||
kustomizationName: nginx-app
 | 
			
		||||
namePrefix: staging-
 | 
			
		||||
objectLabels:
 | 
			
		||||
  env: staging
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,4 @@
 | 
			
		|||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Manifest
 | 
			
		||||
metadata:
 | 
			
		||||
  name: nginx-app
 | 
			
		||||
kustomizationName: nginx-app
 | 
			
		||||
namePrefix: team-foo-
 | 
			
		||||
objectLabels:
 | 
			
		||||
  app: mynginx
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,9 +24,9 @@ import (
 | 
			
		|||
 | 
			
		||||
	"github.com/ghodss/yaml"
 | 
			
		||||
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/constants"
 | 
			
		||||
	interror "k8s.io/kubectl/pkg/kustomize/internal/error"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/types"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/util/fs"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -47,7 +47,7 @@ func newManifestFile(mPath string, fsys fs.FileSystem) (*manifestFile, error) {
 | 
			
		|||
func (mf *manifestFile) validate() error {
 | 
			
		||||
	f, err := mf.fsys.Stat(mf.mPath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		errorMsg := fmt.Sprintf("Manifest (%s) missing\nRun `kustomize init` first", mf.mPath)
 | 
			
		||||
		errorMsg := fmt.Sprintf("Missing kustomize config file '%s'.\n", mf.mPath)
 | 
			
		||||
		merr := interror.ManifestError{ManifestFilepath: mf.mPath, ErrorMsg: errorMsg}
 | 
			
		||||
		return merr
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -55,13 +55,13 @@ func (mf *manifestFile) validate() error {
 | 
			
		|||
		mf.mPath = path.Join(mf.mPath, constants.KustomizeFileName)
 | 
			
		||||
		_, err = mf.fsys.Stat(mf.mPath)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			errorMsg := fmt.Sprintf("Manifest (%s) missing\nRun `kustomize init` first", mf.mPath)
 | 
			
		||||
			errorMsg := fmt.Sprintf("Missing kustomize config file '%s'.\n", mf.mPath)
 | 
			
		||||
			merr := interror.ManifestError{ManifestFilepath: mf.mPath, ErrorMsg: errorMsg}
 | 
			
		||||
			return merr
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		if !strings.HasSuffix(mf.mPath, constants.KustomizeFileName) {
 | 
			
		||||
			errorMsg := fmt.Sprintf("Manifest file (%s) should have %s suffix\n", mf.mPath, constants.KustomizeSuffix)
 | 
			
		||||
			errorMsg := fmt.Sprintf("Kustomize config file path (%s) should have %s suffix\n", mf.mPath, constants.KustomizeSuffix)
 | 
			
		||||
			merr := interror.ManifestError{ManifestFilepath: mf.mPath, ErrorMsg: errorMsg}
 | 
			
		||||
			return merr
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -69,12 +69,12 @@ func (mf *manifestFile) validate() error {
 | 
			
		|||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (mf *manifestFile) read() (*manifest.Manifest, error) {
 | 
			
		||||
func (mf *manifestFile) read() (*types.Manifest, error) {
 | 
			
		||||
	bytes, err := mf.fsys.ReadFile(mf.mPath)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
	var manifest manifest.Manifest
 | 
			
		||||
	var manifest types.Manifest
 | 
			
		||||
	err = yaml.Unmarshal(bytes, &manifest)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
| 
						 | 
				
			
			@ -82,9 +82,9 @@ func (mf *manifestFile) read() (*manifest.Manifest, error) {
 | 
			
		|||
	return &manifest, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (mf *manifestFile) write(manifest *manifest.Manifest) error {
 | 
			
		||||
func (mf *manifestFile) write(manifest *types.Manifest) error {
 | 
			
		||||
	if manifest == nil {
 | 
			
		||||
		return errors.New("util: failed to write passed-in nil manifest")
 | 
			
		||||
		return errors.New("util: kustomize config file arg is nil.")
 | 
			
		||||
	}
 | 
			
		||||
	bytes, err := yaml.Marshal(manifest)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,12 +21,12 @@ import (
 | 
			
		|||
	"strings"
 | 
			
		||||
	"testing"
 | 
			
		||||
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/types"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/util/fs"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestWriteAndRead(t *testing.T) {
 | 
			
		||||
	manifest := &manifest.Manifest{
 | 
			
		||||
	manifest := &types.Manifest{
 | 
			
		||||
		NamePrefix: "prefix",
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -67,21 +67,23 @@ func TestNewNotExist(t *testing.T) {
 | 
			
		|||
	if err == nil {
 | 
			
		||||
		t.Fatalf("expect an error")
 | 
			
		||||
	}
 | 
			
		||||
	if !strings.Contains(err.Error(), "Run `kustomize init` first") {
 | 
			
		||||
		t.Fatalf("expect an error contains %q, but got %v", "does not exist", err)
 | 
			
		||||
	contained := "Missing kustomize config file"
 | 
			
		||||
	if !strings.Contains(err.Error(), contained) {
 | 
			
		||||
		t.Fatalf("expect an error contains %q, but got %v", contained, err)
 | 
			
		||||
	}
 | 
			
		||||
	_, err = newManifestFile("kustomize.yaml", fakeFS)
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		t.Fatalf("expect an error")
 | 
			
		||||
	}
 | 
			
		||||
	if !strings.Contains(err.Error(), "Run `kustomize init` first") {
 | 
			
		||||
		t.Fatalf("expect an error contains %q, but got %v", "does not exist", err)
 | 
			
		||||
	if !strings.Contains(err.Error(), contained) {
 | 
			
		||||
		t.Fatalf("expect an error contains %q, but got %v", contained, err)
 | 
			
		||||
	}
 | 
			
		||||
	_, err = newManifestFile(badSuffix, fakeFS)
 | 
			
		||||
	if err == nil {
 | 
			
		||||
		t.Fatalf("expect an error")
 | 
			
		||||
	}
 | 
			
		||||
	if !strings.Contains(err.Error(), "should have .yaml suffix") {
 | 
			
		||||
		t.Fatalf("expect an error contains %q, but got %v", "does not exist", err)
 | 
			
		||||
	contained = "should have .yaml suffix"
 | 
			
		||||
	if !strings.Contains(err.Error(), contained) {
 | 
			
		||||
		t.Fatalf("expect an error contains %q, but got %v", contained, err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,6 @@ import (
 | 
			
		|||
	corev1 "k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime"
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	cutil "k8s.io/kubectl/pkg/kustomize/configmapandsecret/util"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/hash"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/resource"
 | 
			
		||||
| 
						 | 
				
			
			@ -36,7 +35,7 @@ import (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
// MakeConfigmapAndGenerateName makes a configmap and returns the configmap and the name appended with a hash.
 | 
			
		||||
func MakeConfigmapAndGenerateName(cm manifest.ConfigMapArgs) (*unstructured.Unstructured, string, error) {
 | 
			
		||||
func MakeConfigmapAndGenerateName(cm types.ConfigMapArgs) (*unstructured.Unstructured, string, error) {
 | 
			
		||||
	corev1CM, err := makeConfigMap(cm)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, "", err
 | 
			
		||||
| 
						 | 
				
			
			@ -51,7 +50,7 @@ func MakeConfigmapAndGenerateName(cm manifest.ConfigMapArgs) (*unstructured.Unst
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// MakeSecretAndGenerateName returns a secret with the name appended with a hash.
 | 
			
		||||
func MakeSecretAndGenerateName(secret manifest.SecretArgs, path string) (*unstructured.Unstructured, string, error) {
 | 
			
		||||
func MakeSecretAndGenerateName(secret types.SecretArgs, path string) (*unstructured.Unstructured, string, error) {
 | 
			
		||||
	corev1Secret, err := makeSecret(secret, path)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, "", err
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +74,7 @@ func objectToUnstructured(in runtime.Object) (*unstructured.Unstructured, error)
 | 
			
		|||
	return &out, err
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func makeConfigMap(cm manifest.ConfigMapArgs) (*corev1.ConfigMap, error) {
 | 
			
		||||
func makeConfigMap(cm types.ConfigMapArgs) (*corev1.ConfigMap, error) {
 | 
			
		||||
	corev1cm := &corev1.ConfigMap{}
 | 
			
		||||
	corev1cm.APIVersion = "v1"
 | 
			
		||||
	corev1cm.Kind = "ConfigMap"
 | 
			
		||||
| 
						 | 
				
			
			@ -101,7 +100,7 @@ func makeConfigMap(cm manifest.ConfigMapArgs) (*corev1.ConfigMap, error) {
 | 
			
		|||
	return corev1cm, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func makeSecret(secret manifest.SecretArgs, path string) (*corev1.Secret, error) {
 | 
			
		||||
func makeSecret(secret types.SecretArgs, path string) (*corev1.Secret, error) {
 | 
			
		||||
	corev1secret := &corev1.Secret{}
 | 
			
		||||
	corev1secret.APIVersion = "v1"
 | 
			
		||||
	corev1secret.Kind = "Secret"
 | 
			
		||||
| 
						 | 
				
			
			@ -137,7 +136,7 @@ func populateMap(m resource.ResourceCollection, obj *unstructured.Unstructured,
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// MakeConfigMapsResourceCollection returns a map of <GVK, oldName> -> unstructured object.
 | 
			
		||||
func MakeConfigMapsResourceCollection(maps []manifest.ConfigMapArgs) (resource.ResourceCollection, error) {
 | 
			
		||||
func MakeConfigMapsResourceCollection(maps []types.ConfigMapArgs) (resource.ResourceCollection, error) {
 | 
			
		||||
	m := resource.ResourceCollection{}
 | 
			
		||||
	for _, cm := range maps {
 | 
			
		||||
		unstructuredConfigMap, nameWithHash, err := MakeConfigmapAndGenerateName(cm)
 | 
			
		||||
| 
						 | 
				
			
			@ -153,7 +152,7 @@ func MakeConfigMapsResourceCollection(maps []manifest.ConfigMapArgs) (resource.R
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// MakeSecretsResourceCollection returns a map of <GVK, oldName> -> unstructured object.
 | 
			
		||||
func MakeSecretsResourceCollection(secrets []manifest.SecretArgs, path string) (resource.ResourceCollection, error) {
 | 
			
		||||
func MakeSecretsResourceCollection(secrets []types.SecretArgs, path string) (resource.ResourceCollection, error) {
 | 
			
		||||
	m := resource.ResourceCollection{}
 | 
			
		||||
	for _, secret := range secrets {
 | 
			
		||||
		unstructuredSecret, nameWithHash, err := MakeSecretAndGenerateName(secret, path)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,7 +24,7 @@ import (
 | 
			
		|||
	corev1 "k8s.io/api/core/v1"
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/types"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func makeEnvConfigMap(name string) *corev1.ConfigMap {
 | 
			
		||||
| 
						 | 
				
			
			@ -131,16 +131,16 @@ func makeUnstructuredSecret(name string) *unstructured.Unstructured {
 | 
			
		|||
func TestConstructConfigMap(t *testing.T) {
 | 
			
		||||
	type testCase struct {
 | 
			
		||||
		description string
 | 
			
		||||
		input       manifest.ConfigMapArgs
 | 
			
		||||
		input       types.ConfigMapArgs
 | 
			
		||||
		expected    *corev1.ConfigMap
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	testCases := []testCase{
 | 
			
		||||
		{
 | 
			
		||||
			description: "construct config map from env",
 | 
			
		||||
			input: manifest.ConfigMapArgs{
 | 
			
		||||
			input: types.ConfigMapArgs{
 | 
			
		||||
				Name: "envConfigMap",
 | 
			
		||||
				DataSources: manifest.DataSources{
 | 
			
		||||
				DataSources: types.DataSources{
 | 
			
		||||
					EnvSource: "../examples/simple/instances/exampleinstance/configmap/app.env",
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
| 
						 | 
				
			
			@ -148,9 +148,9 @@ func TestConstructConfigMap(t *testing.T) {
 | 
			
		|||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "construct config map from file",
 | 
			
		||||
			input: manifest.ConfigMapArgs{
 | 
			
		||||
			input: types.ConfigMapArgs{
 | 
			
		||||
				Name: "fileConfigMap",
 | 
			
		||||
				DataSources: manifest.DataSources{
 | 
			
		||||
				DataSources: types.DataSources{
 | 
			
		||||
					FileSources: []string{"../examples/simple/instances/exampleinstance/configmap/app-init.ini"},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
| 
						 | 
				
			
			@ -158,9 +158,9 @@ func TestConstructConfigMap(t *testing.T) {
 | 
			
		|||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "construct config map from literal",
 | 
			
		||||
			input: manifest.ConfigMapArgs{
 | 
			
		||||
			input: types.ConfigMapArgs{
 | 
			
		||||
				Name: "literalConfigMap",
 | 
			
		||||
				DataSources: manifest.DataSources{
 | 
			
		||||
				DataSources: types.DataSources{
 | 
			
		||||
					LiteralSources: []string{"a=x", "b=y"},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
| 
						 | 
				
			
			@ -180,7 +180,7 @@ func TestConstructConfigMap(t *testing.T) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func TestConstructSecret(t *testing.T) {
 | 
			
		||||
	secret := manifest.SecretArgs{
 | 
			
		||||
	secret := types.SecretArgs{
 | 
			
		||||
		Name: "secret",
 | 
			
		||||
		Commands: map[string]string{
 | 
			
		||||
			"DB_USERNAME": "printf admin",
 | 
			
		||||
| 
						 | 
				
			
			@ -199,7 +199,7 @@ func TestConstructSecret(t *testing.T) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
func TestFailConstructSecret(t *testing.T) {
 | 
			
		||||
	secret := manifest.SecretArgs{
 | 
			
		||||
	secret := types.SecretArgs{
 | 
			
		||||
		Name: "secret",
 | 
			
		||||
		Commands: map[string]string{
 | 
			
		||||
			"FAILURE": "false", // This will fail.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,4 @@
 | 
			
		|||
# This example is from https://docs.google.com/document/d/1cLPGweVEYrVqQvBLJg6sxV-TrE5Rm2MNOBA_cxZP2WU/edit#heading=h.dr88tktf0e99
 | 
			
		||||
 | 
			
		||||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Manifest
 | 
			
		||||
metadata:
 | 
			
		||||
  name: test-infra-mungebot
 | 
			
		||||
kustomizationName: test-infra-mungebot
 | 
			
		||||
namePrefix: test-infra-
 | 
			
		||||
# Labels to add to all objects and selectors.
 | 
			
		||||
# These labels would also be used to form the selector for apply --prune
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,4 @@
 | 
			
		|||
# This example is from https://docs.google.com/document/d/1cLPGweVEYrVqQvBLJg6sxV-TrE5Rm2MNOBA_cxZP2WU/edit#heading=h.dr88tktf0e99
 | 
			
		||||
 | 
			
		||||
# Inspired by https://github.com/kubernetes/helm/blob/master/docs/charts.md
 | 
			
		||||
# But Kubernetes API style
 | 
			
		||||
apiVersion: manifest.k8s.io/v1alpha1
 | 
			
		||||
kind: Manifest
 | 
			
		||||
metadata:
 | 
			
		||||
  name: mungebot
 | 
			
		||||
kustomizationName: mungebot
 | 
			
		||||
namePrefix: baseprefix-
 | 
			
		||||
# Labels to add to all objects and selectors.
 | 
			
		||||
# These labels would also be used to form the selector for apply --prune
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,12 +22,12 @@ import (
 | 
			
		|||
 | 
			
		||||
	corev1 "k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/validation"
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	cutil "k8s.io/kubectl/pkg/kustomize/configmapandsecret/util"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/types"
 | 
			
		||||
	"k8s.io/kubectl/pkg/loader"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func newFromConfigMap(l loader.Loader, cm manifest.ConfigMapArgs) (*Resource, error) {
 | 
			
		||||
func newFromConfigMap(l loader.Loader, cm types.ConfigMapArgs) (*Resource, error) {
 | 
			
		||||
	corev1CM, err := makeConfigMap(l, cm)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
| 
						 | 
				
			
			@ -40,7 +40,7 @@ func newFromConfigMap(l loader.Loader, cm manifest.ConfigMapArgs) (*Resource, er
 | 
			
		|||
	return &Resource{Data: data, Behavior: cm.Behavior}, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func makeConfigMap(l loader.Loader, cm manifest.ConfigMapArgs) (*corev1.ConfigMap, error) {
 | 
			
		||||
func makeConfigMap(l loader.Loader, cm types.ConfigMapArgs) (*corev1.ConfigMap, error) {
 | 
			
		||||
	var envPairs, literalPairs, filePairs []kvPair
 | 
			
		||||
	var err error
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -130,8 +130,8 @@ func addKV(m map[string]string, kv kvPair) error {
 | 
			
		|||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewFromConfigMaps returns a Resource slice given a configmap metadata slice from manifest file.
 | 
			
		||||
func NewFromConfigMaps(loader loader.Loader, cmList []manifest.ConfigMapArgs) (ResourceCollection, error) {
 | 
			
		||||
// NewFromConfigMaps returns a Resource slice given a configmap metadata slice from kustomize config file.
 | 
			
		||||
func NewFromConfigMaps(loader loader.Loader, cmList []types.ConfigMapArgs) (ResourceCollection, error) {
 | 
			
		||||
	allResources := []*Resource{}
 | 
			
		||||
	for _, cm := range cmList {
 | 
			
		||||
		res, err := newFromConfigMap(loader, cm)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,15 +22,15 @@ import (
 | 
			
		|||
 | 
			
		||||
	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/resource"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/types"
 | 
			
		||||
	"k8s.io/kubectl/pkg/loader/loadertest"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestNewFromConfigMaps(t *testing.T) {
 | 
			
		||||
	type testCase struct {
 | 
			
		||||
		description string
 | 
			
		||||
		input       []manifest.ConfigMapArgs
 | 
			
		||||
		input       []types.ConfigMapArgs
 | 
			
		||||
		filepath    string
 | 
			
		||||
		content     string
 | 
			
		||||
		expected    resource.ResourceCollection
 | 
			
		||||
| 
						 | 
				
			
			@ -40,10 +40,10 @@ func TestNewFromConfigMaps(t *testing.T) {
 | 
			
		|||
	testCases := []testCase{
 | 
			
		||||
		{
 | 
			
		||||
			description: "construct config map from env",
 | 
			
		||||
			input: []manifest.ConfigMapArgs{
 | 
			
		||||
			input: []types.ConfigMapArgs{
 | 
			
		||||
				{
 | 
			
		||||
					Name: "envConfigMap",
 | 
			
		||||
					DataSources: manifest.DataSources{
 | 
			
		||||
					DataSources: types.DataSources{
 | 
			
		||||
						EnvSource: "app.env",
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
| 
						 | 
				
			
			@ -74,9 +74,9 @@ func TestNewFromConfigMaps(t *testing.T) {
 | 
			
		|||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "construct config map from file",
 | 
			
		||||
			input: []manifest.ConfigMapArgs{{
 | 
			
		||||
			input: []types.ConfigMapArgs{{
 | 
			
		||||
				Name: "fileConfigMap",
 | 
			
		||||
				DataSources: manifest.DataSources{
 | 
			
		||||
				DataSources: types.DataSources{
 | 
			
		||||
					FileSources: []string{"app-init.ini"},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
| 
						 | 
				
			
			@ -108,10 +108,10 @@ BAR=baz
 | 
			
		|||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "construct config map from literal",
 | 
			
		||||
			input: []manifest.ConfigMapArgs{
 | 
			
		||||
			input: []types.ConfigMapArgs{
 | 
			
		||||
				{
 | 
			
		||||
					Name: "literalConfigMap",
 | 
			
		||||
					DataSources: manifest.DataSources{
 | 
			
		||||
					DataSources: types.DataSources{
 | 
			
		||||
						LiteralSources: []string{"a=x", "b=y"},
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,10 +24,10 @@ import (
 | 
			
		|||
	"time"
 | 
			
		||||
 | 
			
		||||
	corev1 "k8s.io/api/core/v1"
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/types"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func newFromSecretGenerator(p string, s manifest.SecretArgs) (*Resource, error) {
 | 
			
		||||
func newFromSecretGenerator(p string, s types.SecretArgs) (*Resource, error) {
 | 
			
		||||
	corev1secret := &corev1.Secret{}
 | 
			
		||||
	corev1secret.APIVersion = "v1"
 | 
			
		||||
	corev1secret.Kind = "Secret"
 | 
			
		||||
| 
						 | 
				
			
			@ -70,7 +70,7 @@ func createSecretKey(wd string, command string) ([]byte, error) {
 | 
			
		|||
 | 
			
		||||
// NewFromSecretGenerators takes a SecretGenerator slice and executes its command in directory p
 | 
			
		||||
// then writes the output to a Resource slice and return it.
 | 
			
		||||
func NewFromSecretGenerators(p string, secretList []manifest.SecretArgs) (ResourceCollection, error) {
 | 
			
		||||
func NewFromSecretGenerators(p string, secretList []types.SecretArgs) (ResourceCollection, error) {
 | 
			
		||||
	allResources := []*Resource{}
 | 
			
		||||
	for _, secret := range secretList {
 | 
			
		||||
		res, err := newFromSecretGenerator(p, secret)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -24,11 +24,11 @@ import (
 | 
			
		|||
	corev1 "k8s.io/api/core/v1"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 | 
			
		||||
	"k8s.io/apimachinery/pkg/runtime/schema"
 | 
			
		||||
	manifest "k8s.io/kubectl/pkg/apis/manifest/v1alpha1"
 | 
			
		||||
	"k8s.io/kubectl/pkg/kustomize/types"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func TestNewFromSecretGenerators(t *testing.T) {
 | 
			
		||||
	secrets := []manifest.SecretArgs{
 | 
			
		||||
	secrets := []types.SecretArgs{
 | 
			
		||||
		{
 | 
			
		||||
			Name: "secret",
 | 
			
		||||
			Commands: map[string]string{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,60 +14,17 @@ See the License for the specific language governing permissions and
 | 
			
		|||
limitations under the License.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package v1alpha1
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Descriptor contains all the metadata of the package and drives package
 | 
			
		||||
// searching and browsing, and support the fork/rebase upgrade workflow.
 | 
			
		||||
// It can be used by something like an app registry.
 | 
			
		||||
type Descriptor struct {
 | 
			
		||||
	metav1.TypeMeta `json:",inline" yaml:",inline"`
 | 
			
		||||
	// Standard object's metadata.
 | 
			
		||||
	// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
 | 
			
		||||
	metav1.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// The name of the package.
 | 
			
		||||
	// The name of an individual instance should live in metadata.name.
 | 
			
		||||
	Name string `json:"name,omitempty" yaml:"name,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// Description of the package.
 | 
			
		||||
	Description string `json:"description,omitempty" yaml:"description,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// An pointer to the icon.
 | 
			
		||||
	Icon string `json:"icon,omitempty" yaml:"icon,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// Search keywords for the package.
 | 
			
		||||
	Keywords []string `json:"keywords,omitempty" yaml:"keywords,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// Homepage of the application package.
 | 
			
		||||
	Home string `json:"home,omitempty" yaml:"home,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// Source specifies the upstream URL, e.g. https://github.com/foo/bar.git,
 | 
			
		||||
	// file://host/path, etc.
 | 
			
		||||
	// hosting the resource files specified in Base and Overlays.
 | 
			
		||||
	// This is useful in the fork/rebase workflow.
 | 
			
		||||
	Source string `json:"source,omitempty" yaml:"source,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// Version of the package.
 | 
			
		||||
	PackageVersion string `json:"packageVersion,omitempty" yaml:"packageVersion,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
package types
 | 
			
		||||
 | 
			
		||||
// Manifest has all the information to expand of generate the k8s api resources.
 | 
			
		||||
// It can be used by kubectl or some other tooling.
 | 
			
		||||
// A manifest could be either a Base or an Overlay.
 | 
			
		||||
// TODO: rename Manifest to Kustomization
 | 
			
		||||
type Manifest struct {
 | 
			
		||||
	metav1.TypeMeta `json:",inline" yaml:",inline"`
 | 
			
		||||
	// Standard object's metadata.
 | 
			
		||||
	// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
 | 
			
		||||
	metav1.ObjectMeta `json:"metadata,omitempty" yaml:"metadata,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// TODO: figure out if we need field ManifestVersion.
 | 
			
		||||
	// See: https://github.com/kubernetes/kubernetes/pull/52570/files/3eea91793dfbc3fdb0799589fac3790c4cde58a4#r140391019
 | 
			
		||||
	// Version of the manifest.
 | 
			
		||||
	// ManifestVersion string `json:"manifestVersion,omitempty" yaml:"manifestVersion,omitempty"`
 | 
			
		||||
	// KustomizationName is a documentation field - a name for the customizations
 | 
			
		||||
	// in a marshalled version of this struct, that survives YAML unmarshalling
 | 
			
		||||
	// that discards comments.
 | 
			
		||||
	KustomizationName string `json:"kustomizationName,omitempty" yaml:"kustomizationName,omitempty"`
 | 
			
		||||
 | 
			
		||||
	// NamePrefix will prefix the names of all resources mentioned in the manifest
 | 
			
		||||
	// including generated configmaps and secrets.
 | 
			
		||||
		Loading…
	
		Reference in New Issue