Skip to content

Commit

Permalink
Update dependencies and address changes in the API
Browse files Browse the repository at this point in the history
  • Loading branch information
mortent committed Apr 15, 2021
1 parent b61a816 commit 91dc57f
Show file tree
Hide file tree
Showing 10 changed files with 49 additions and 70 deletions.
11 changes: 4 additions & 7 deletions commands/initcmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"k8s.io/cli-runtime/pkg/genericclioptions"
cmdutil "k8s.io/kubectl/pkg/cmd/util"
"k8s.io/kubectl/pkg/util/i18n"
"sigs.k8s.io/cli-utils/cmd/flagutils"
"sigs.k8s.io/cli-utils/pkg/common"
"sigs.k8s.io/cli-utils/pkg/config"
)
Expand Down Expand Up @@ -58,12 +59,8 @@ func NewKptInitOptions(f cmdutil.Factory, ioStreams genericclioptions.IOStreams)
}

// Complete fills in fields for KptInitOptions based on the passed "args".
func (io *KptInitOptions) Run(args []string) error {
// Set the init options directory.
if len(args) != 1 {
return fmt.Errorf("need one 'directory' arg; have %d", len(args))
}
dir, err := config.NormalizeDir(args[0])
func (io *KptInitOptions) Run(path string) error {
dir, err := config.NormalizeDir(path)
if err != nil {
return err
}
Expand Down Expand Up @@ -183,7 +180,7 @@ func NewCmdInit(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra
DisableFlagsInUseLine: true,
Short: i18n.T("Initialize inventory parameters into Kptfile"),
RunE: func(cmd *cobra.Command, args []string) error {
return io.Run(args)
return io.Run(flagutils.PathFromArgs(args))
},
}
cmd.Flags().StringVar(&io.name, "name", "", "Inventory object name")
Expand Down
33 changes: 15 additions & 18 deletions commands/migratecmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"k8s.io/klog"
cmdutil "k8s.io/kubectl/pkg/cmd/util"
"k8s.io/kubectl/pkg/util/i18n"
"sigs.k8s.io/cli-utils/cmd/flagutils"
"sigs.k8s.io/cli-utils/pkg/common"
"sigs.k8s.io/cli-utils/pkg/config"
"sigs.k8s.io/cli-utils/pkg/inventory"
Expand Down Expand Up @@ -64,7 +65,7 @@ func GetMigrateRunner(cmProvider provider.Provider, rgProvider provider.Provider
Short: i18n.T("Migrate inventory from ConfigMap to ResourceGroup custom resource"),
RunE: func(cmd *cobra.Command, args []string) error {
fmt.Fprint(ioStreams.Out, "inventory migration...\n")
if err := r.Run(ioStreams.In, args); err != nil {
if err := r.Run(ioStreams.In, flagutils.PathFromArgs(args)); err != nil {
fmt.Fprint(ioStreams.Out, "failed\n")
fmt.Fprint(ioStreams.Out, "inventory migration...failed\n")
return err
Expand Down Expand Up @@ -92,23 +93,19 @@ func NewCmdMigrate(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *co

// Run executes the migration from the ConfigMap based inventory to the ResourceGroup
// based inventory.
func (mr *MigrateRunner) Run(reader io.Reader, args []string) error {
// Validate the number of arguments.
if len(args) > 1 {
return fmt.Errorf("too many arguments; migrate requires one directory argument (or stdin)")
}
func (mr *MigrateRunner) Run(reader io.Reader, path string) error {
// Validate argument is a directory.
if len(args) == 1 {
if path != "-" {
var err error
mr.dir, err = config.NormalizeDir(args[0])
mr.dir, err = config.NormalizeDir(path)
if err != nil {
return err
}
}
// Store the stdin bytes if necessary so they can be used twice.
var stdinBytes []byte
var err error
if len(args) == 0 {
if path == "-" {
stdinBytes, err = ioutil.ReadAll(reader)
if err != nil {
return err
Expand All @@ -122,11 +119,11 @@ func (mr *MigrateRunner) Run(reader io.Reader, args []string) error {
return err
}
// Update the Kptfile with the resource group values (e.g. namespace, name, id).
if err := mr.updateKptfile(args); err != nil {
if err := mr.updateKptfile(path); err != nil {
return err
}
// Retrieve the current ConfigMap inventory objects.
cmInvObj, err := mr.retrieveConfigMapInv(bytes.NewReader(stdinBytes), args)
cmInvObj, err := mr.retrieveConfigMapInv(bytes.NewReader(stdinBytes), path)
if err != nil {
if _, ok := err.(inventory.NoInventoryObjError); ok {
// No ConfigMap inventory means the migration has already run before.
Expand All @@ -142,7 +139,7 @@ func (mr *MigrateRunner) Run(reader io.Reader, args []string) error {
}
if len(cmObjs) > 0 {
// Migrate the ConfigMap inventory objects to a ResourceGroup custom resource.
if err = mr.migrateObjs(cmObjs, cmInvObj.ID(), bytes.NewReader(stdinBytes), args); err != nil {
if err = mr.migrateObjs(cmObjs, cmInvObj.ID(), bytes.NewReader(stdinBytes), path); err != nil {
return err
}
// Delete the old ConfigMap inventory object.
Expand Down Expand Up @@ -179,10 +176,10 @@ func (mr *MigrateRunner) applyCRD() error {
}

// updateKptfile installs the "inventory" fields in the Kptfile.
func (mr *MigrateRunner) updateKptfile(args []string) error {
func (mr *MigrateRunner) updateKptfile(path string) error {
fmt.Fprint(mr.ioStreams.Out, " updating Kptfile inventory values...")
if !mr.dryRun {
if err := mr.initOptions.Run(args); err != nil {
if err := mr.initOptions.Run(path); err != nil {
if _, exists := err.(*InvExistsError); exists {
fmt.Fprint(mr.ioStreams.Out, "values already exist...")
} else {
Expand All @@ -196,9 +193,9 @@ func (mr *MigrateRunner) updateKptfile(args []string) error {

// retrieveConfigMapInv retrieves the ConfigMap inventory object or
// an error if one occurred.
func (mr *MigrateRunner) retrieveConfigMapInv(reader io.Reader, args []string) (inventory.InventoryInfo, error) {
func (mr *MigrateRunner) retrieveConfigMapInv(reader io.Reader, path string) (inventory.InventoryInfo, error) {
fmt.Fprint(mr.ioStreams.Out, " retrieve the current ConfigMap inventory...")
cmReader, err := mr.cmLoader.ManifestReader(reader, args)
cmReader, err := mr.cmLoader.ManifestReader(reader, path)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -235,7 +232,7 @@ func (mr *MigrateRunner) retrieveInvObjs(invObj inventory.InventoryInfo) ([]obje
// migrateObjs stores the passed objects in the ResourceGroup inventory
// object and applies the inventory object to the cluster. Returns
// an error if one occurred.
func (mr *MigrateRunner) migrateObjs(cmObjs []object.ObjMetadata, oldID string, reader io.Reader, args []string) error {
func (mr *MigrateRunner) migrateObjs(cmObjs []object.ObjMetadata, oldID string, reader io.Reader, path string) error {
fmt.Fprint(mr.ioStreams.Out, " migrate inventory to ResourceGroup...")
if len(cmObjs) == 0 {
fmt.Fprintln(mr.ioStreams.Out, "no inventory objects found")
Expand All @@ -245,7 +242,7 @@ func (mr *MigrateRunner) migrateObjs(cmObjs []object.ObjMetadata, oldID string,
fmt.Fprintln(mr.ioStreams.Out, "success")
return nil
}
rgReader, err := mr.rgLoader.ManifestReader(reader, args)
rgReader, err := mr.rgLoader.ManifestReader(reader, path)
if err != nil {
return err
}
Expand Down
6 changes: 3 additions & 3 deletions commands/migratecmd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ func TestKptMigrate_updateKptfile(t *testing.T) {
rgLoader := live.NewResourceGroupManifestLoader(tf)
migrateRunner := GetMigrateRunner(cmProvider, rgProvider, cmLoader, rgLoader, ioStreams)
migrateRunner.dryRun = tc.dryRun
err = migrateRunner.updateKptfile([]string{dir})
err = migrateRunner.updateKptfile(dir)
// Check if there should be an error
if tc.isError {
if err == nil {
Expand Down Expand Up @@ -205,7 +205,7 @@ func TestKptMigrate_retrieveConfigMapInv(t *testing.T) {
cmLoader := manifestreader.NewManifestLoader(tf)
rgLoader := live.NewResourceGroupManifestLoader(tf)
migrateRunner := GetMigrateRunner(cmProvider, rgProvider, cmLoader, rgLoader, ioStreams)
actual, err := migrateRunner.retrieveConfigMapInv(strings.NewReader(tc.configMap), []string{})
actual, err := migrateRunner.retrieveConfigMapInv(strings.NewReader(tc.configMap), "-")
// Check if there should be an error
if tc.isError {
if err == nil {
Expand Down Expand Up @@ -308,7 +308,7 @@ func TestKptMigrate_migrateObjs(t *testing.T) {
cmLoader := manifestreader.NewManifestLoader(tf)
rgLoader := live.NewResourceGroupManifestLoader(tf)
migrateRunner := GetMigrateRunner(cmProvider, rgProvider, cmLoader, rgLoader, ioStreams)
err := migrateRunner.migrateObjs(tc.objs, "", strings.NewReader(tc.invObj), []string{})
err := migrateRunner.migrateObjs(tc.objs, "", strings.NewReader(tc.invObj), "-")
// Check if there should be an error
if tc.isError {
if err == nil {
Expand Down
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ require (
k8s.io/client-go v0.20.4
k8s.io/klog v1.0.0
k8s.io/kubectl v0.20.4
sigs.k8s.io/cli-utils v0.24.0
sigs.k8s.io/kustomize/cmd/config v0.9.9
sigs.k8s.io/kustomize/kyaml v0.10.15
sigs.k8s.io/cli-utils v0.25.0
sigs.k8s.io/kustomize/cmd/config v0.9.10
sigs.k8s.io/kustomize/kyaml v0.10.17
)
22 changes: 7 additions & 15 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -892,25 +892,17 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0=
sigs.k8s.io/cli-utils v0.23.7-0.20210316180306-70426d65771d h1:l4IxZtrrhb+h0Lz4i9UpKU97u3+Xp+XT6qkGNnTvDRA=
sigs.k8s.io/cli-utils v0.23.7-0.20210316180306-70426d65771d/go.mod h1:vyCQ1Pk5cBG74mKrg90dE29SJqm3tZzOsuVeO1Rqroo=
sigs.k8s.io/cli-utils v0.24.0 h1:jQ7AEBKJ/6Cl6fUBZQU+JbWHoPdNLBgBVEO0CANt1xQ=
sigs.k8s.io/cli-utils v0.24.0/go.mod h1:vyCQ1Pk5cBG74mKrg90dE29SJqm3tZzOsuVeO1Rqroo=
sigs.k8s.io/cli-utils v0.25.0 h1:uYoe/BZBJBUluU/PknsY9mgqB8jPvQV5ADp9VT9GS2w=
sigs.k8s.io/cli-utils v0.25.0/go.mod h1:dllg30GE57wkWbvaA9lI1cpDwTKxb9NAENStrQ3fQxg=
sigs.k8s.io/controller-runtime v0.6.0 h1:Fzna3DY7c4BIP6KwfSlrfnj20DJ+SeMBK8HSFvOk9NM=
sigs.k8s.io/controller-runtime v0.6.0/go.mod h1:CpYf5pdNY/B352A1TFLAS2JVSlnGQ5O2cftPHndTroo=
sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0=
sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
sigs.k8s.io/kustomize/cmd/config v0.9.5 h1:UtayMj9O9hQgZ8Yp6lbRMG8aX2IvXJUdHyQj2vhDDn0=
sigs.k8s.io/kustomize/cmd/config v0.9.5/go.mod h1:WvPpkvuDcXF8rvXEEfK6L9kA0Ylu6jXe5gWG5mlS4co=
sigs.k8s.io/kustomize/cmd/config v0.9.7 h1:xxvL/np/zYHVuCH1tNFehlyEtSW5oXjoI6ycejiyOwQ=
sigs.k8s.io/kustomize/cmd/config v0.9.7/go.mod h1:MvXCpHs77cfyxRmCNUQjIqCmZyYsbn5PyQpWiq44nW0=
sigs.k8s.io/kustomize/cmd/config v0.9.9 h1:WAfC1MwZdfdLf+2FLZJcsOzoPkdOxvu5/9fDxyZ1emg=
sigs.k8s.io/kustomize/cmd/config v0.9.9/go.mod h1:MvXCpHs77cfyxRmCNUQjIqCmZyYsbn5PyQpWiq44nW0=
sigs.k8s.io/kustomize/kyaml v0.10.13/go.mod h1:JX33L0fyBEfdkidfYQwF50t7UrjatnF+j0F9ikkhTWI=
sigs.k8s.io/kustomize/kyaml v0.10.14 h1:8zftx3bT0r2355kE/cZfwCMq9SlTWMBvadwwtl+jcbU=
sigs.k8s.io/kustomize/kyaml v0.10.14/go.mod h1:mlQFagmkm1P+W4lZJbJ/yaxMd8PqMRSC4cPcfUVt5Hg=
sigs.k8s.io/kustomize/kyaml v0.10.15 h1:dSLgG78KyaxN4HylPXdK+7zB3k7sW6q3IcCmcfKA+aI=
sigs.k8s.io/kustomize/kyaml v0.10.15/go.mod h1:mlQFagmkm1P+W4lZJbJ/yaxMd8PqMRSC4cPcfUVt5Hg=
sigs.k8s.io/kustomize/cmd/config v0.9.10 h1:oA6APIzAg5CnpqOyf6Cnghu7byicnbmWIBgd19VZSZQ=
sigs.k8s.io/kustomize/cmd/config v0.9.10/go.mod h1:Mrby0WnRH7hA6OwOYnYpfpiY0WJIMgYrEDfwOeFdMK0=
sigs.k8s.io/kustomize/kyaml v0.10.16/go.mod h1:mlQFagmkm1P+W4lZJbJ/yaxMd8PqMRSC4cPcfUVt5Hg=
sigs.k8s.io/kustomize/kyaml v0.10.17 h1:4zrV0ym5AYa0e512q7K3Wp1u7mzoWW0xR3UHJcGWGIg=
sigs.k8s.io/kustomize/kyaml v0.10.17/go.mod h1:mlQFagmkm1P+W4lZJbJ/yaxMd8PqMRSC4cPcfUVt5Hg=
sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
sigs.k8s.io/structured-merge-diff/v4 v4.0.2 h1:YHQV7Dajm86OuqnIR6zAelnDWBRjo+YhYV9PmGrh1s8=
Expand Down
18 changes: 5 additions & 13 deletions pkg/live/dual-delegating-loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package live

import (
"fmt"
"io"

"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
Expand Down Expand Up @@ -32,8 +31,8 @@ func NewDualDelegatingManifestReader(f util.Factory) *DualDelegatingManifestRead
// Provider, then calls Read() for this ManifestReader to retrieve the objects
// and to calculate the type of Inventory object is present. Returns a
// CachedManifestReader with the read objects, or an error.
func (cp *DualDelegatingManifestReader) ManifestReader(reader io.Reader, args []string) (manifestreader.ManifestReader, error) {
r, err := cp.manifestReader(reader, args)
func (cp *DualDelegatingManifestReader) ManifestReader(reader io.Reader, path string) (manifestreader.ManifestReader, error) {
r, err := cp.manifestReader(reader, path)
if err != nil {
return nil, err
}
Expand All @@ -45,14 +44,7 @@ func (cp *DualDelegatingManifestReader) ManifestReader(reader io.Reader, args []
return &CachedManifestReader{objs: objs}, nil
}

func (cp *DualDelegatingManifestReader) manifestReader(reader io.Reader, args []string) (manifestreader.ManifestReader, error) {
// Validate parameters.
if reader == nil && len(args) == 0 {
return nil, fmt.Errorf("unable to build ManifestReader without both reader or args")
}
if len(args) > 1 {
return nil, fmt.Errorf("expected one directory argument allowed; got (%s)", args)
}
func (cp *DualDelegatingManifestReader) manifestReader(reader io.Reader, path string) (manifestreader.ManifestReader, error) {
// Create ReaderOptions for subsequent ManifestReader.
namespace, enforceNamespace, err := cp.factory.ToRawKubeConfigLoader().Namespace()
if err != nil {
Expand All @@ -71,7 +63,7 @@ func (cp *DualDelegatingManifestReader) manifestReader(reader io.Reader, args []
// No arguments means stream (using reader), while one argument
// means path manifest reader.
var rgReader manifestreader.ManifestReader
if len(args) == 0 {
if path == "-" {
rgReader = &ResourceGroupStreamManifestReader{
streamReader: &manifestreader.StreamManifestReader{
ReaderName: "stdin",
Expand All @@ -82,7 +74,7 @@ func (cp *DualDelegatingManifestReader) manifestReader(reader io.Reader, args []
} else {
rgReader = &ResourceGroupPathManifestReader{
pathReader: &manifestreader.PathManifestReader{
Path: args[0],
Path: path,
ReaderOptions: readerOptions,
},
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/live/dual-delegating-loader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ func TestDualDelegatingProvider_Read(t *testing.T) {

// Read objects using provider ManifestReader.
loader := NewDualDelegatingManifestReader(tf)
mr, err := loader.ManifestReader(nil, []string{dir})
mr, err := loader.ManifestReader(nil, dir)
if err != nil {
t.Fatalf("unexpected error %v", err)
}
Expand Down
4 changes: 4 additions & 0 deletions pkg/live/inventoryrg.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,10 @@ func (icm *InventoryResourceGroup) ID() string {
return ""
}

func (icm *InventoryResourceGroup) Strategy() inventory.InventoryStrategy {
return inventory.NameStrategy
}

// Load is an Inventory interface function returning the set of
// object metadata from the wrapped ResourceGroup, or an error.
func (icm *InventoryResourceGroup) Load() ([]object.ObjMetadata, error) {
Expand Down
4 changes: 4 additions & 0 deletions pkg/live/preprocess/process_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,3 +129,7 @@ func (f *fakeInventoryClient) UpdateLabels(inv inventory.InventoryInfo, labels m
f.inventory.SetLabels(labels)
return nil
}

func (f *fakeInventoryClient) GetClusterInventoryObjs(inv inventory.InventoryInfo) ([]*unstructured.Unstructured, error) {
return []*unstructured.Unstructured{}, nil
}
13 changes: 3 additions & 10 deletions pkg/live/rgloader.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,7 @@ func (f *ResourceGroupManifestLoader) InventoryInfo(objs []*unstructured.Unstruc

// ManifestReader returns the ResourceGroup inventory object version of
// the ManifestReader.
func (f *ResourceGroupManifestLoader) ManifestReader(reader io.Reader, args []string) (manifestreader.ManifestReader, error) {
// Validate parameters.
if reader == nil && len(args) == 0 {
return nil, fmt.Errorf("unable to build ManifestReader without both reader or args")
}
if len(args) > 1 {
return nil, fmt.Errorf("expected one directory argument allowed; got (%s)", args)
}
func (f *ResourceGroupManifestLoader) ManifestReader(reader io.Reader, path string) (manifestreader.ManifestReader, error) {
// Create ReaderOptions for subsequent ManifestReader.
namespace, enforceNamespace, err := f.factory.ToRawKubeConfigLoader().Namespace()
if err != nil {
Expand All @@ -65,7 +58,7 @@ func (f *ResourceGroupManifestLoader) ManifestReader(reader io.Reader, args []st
// No arguments means stream (using reader), while one argument
// means path manifest reader.
var rgReader manifestreader.ManifestReader
if len(args) == 0 {
if path == "-" {
rgReader = &ResourceGroupStreamManifestReader{
streamReader: &manifestreader.StreamManifestReader{
ReaderName: "stdin",
Expand All @@ -76,7 +69,7 @@ func (f *ResourceGroupManifestLoader) ManifestReader(reader io.Reader, args []st
} else {
rgReader = &ResourceGroupPathManifestReader{
pathReader: &manifestreader.PathManifestReader{
Path: args[0],
Path: path,
ReaderOptions: readerOptions,
},
}
Expand Down

0 comments on commit 91dc57f

Please sign in to comment.