Skip to content

Commit 2a817f6

Browse files
authored
Update cli-utils to latest (#2367)
1 parent f53f7c7 commit 2a817f6

39 files changed

+1361
-229
lines changed

commands/livecmd.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,12 @@ import (
2626
"github.com/GoogleContainerTools/kpt/internal/cmdmigrate"
2727
"github.com/GoogleContainerTools/kpt/internal/docs/generated/livedocs"
2828
"github.com/GoogleContainerTools/kpt/internal/util/cfgflags"
29-
"github.com/GoogleContainerTools/kpt/pkg/live"
3029
"github.com/GoogleContainerTools/kpt/thirdparty/cli-utils/status"
3130
"github.com/spf13/cobra"
3231
"k8s.io/cli-runtime/pkg/genericclioptions"
3332
"k8s.io/klog/v2"
3433
cluster "k8s.io/kubectl/pkg/cmd/util"
3534
"sigs.k8s.io/cli-utils/pkg/manifestreader"
36-
"sigs.k8s.io/cli-utils/pkg/provider"
3735
"sigs.k8s.io/cli-utils/pkg/util/factory"
3836
)
3937

@@ -51,25 +49,23 @@ func GetLiveCommand(ctx context.Context, _, version string) *cobra.Command {
5149
}
5250

5351
f := newFactory(liveCmd, version)
54-
rgProvider := live.NewResourceGroupProvider(f)
5552

5653
// Init command which updates a Kptfile for the ResourceGroup inventory object.
5754
klog.V(2).Infoln("init command updates Kptfile for ResourceGroup inventory")
5855
initCmd := cmdliveinit.NewCommand(ctx, f, ioStreams)
59-
applyCmd := cmdapply.NewCommand(ctx, rgProvider, ioStreams)
60-
destroyCmd := cmddestroy.NewCommand(ctx, rgProvider, ioStreams)
61-
statusCmd := status.NewCommand(ctx, rgProvider)
56+
applyCmd := cmdapply.NewCommand(ctx, f, ioStreams)
57+
destroyCmd := cmddestroy.NewCommand(ctx, f, ioStreams)
58+
statusCmd := status.NewCommand(ctx, f)
6259
installRGCmd := GetInstallRGRunner(f, ioStreams).Command
6360
liveCmd.AddCommand(initCmd, applyCmd, destroyCmd, statusCmd, installRGCmd)
6461

6562
// Add the migrate command to change from ConfigMap to ResourceGroup inventory
6663
// object.
6764
klog.V(2).Infoln("adding kpt live migrate command")
68-
cmProvider := provider.NewProvider(f)
6965
// TODO: Remove the loader implementation for ConfigMap once we remove the
7066
// migrate command.
7167
cmLoader := manifestreader.NewManifestLoader(f)
72-
migrateCmd := cmdmigrate.NewCommand(ctx, cmProvider, rgProvider, cmLoader, ioStreams)
68+
migrateCmd := cmdmigrate.NewCommand(ctx, f, cmLoader, ioStreams)
7369

7470
liveCmd.AddCommand(migrateCmd)
7571

e2e/live/end-to-end-test.sh

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -436,12 +436,12 @@ echo "kpt live apply e2e/live/testdata/rg-test-case-1a"
436436
${BIN_DIR}/kpt live apply e2e/live/testdata/rg-test-case-1a > $OUTPUT_DIR/status 2>&1
437437
# The ResourceGroup inventory CRD is automatically installed on the initial apply.
438438
assertContains "installing inventory ResourceGroup CRD"
439-
assertContains "namespace/rg-test-namespace"
439+
assertContains "namespace/rg-test-namespace unchanged"
440+
assertContains "1 resource(s) applied. 0 created, 1 unchanged, 0 configured, 0 failed"
440441
assertContains "pod/pod-a created"
441442
assertContains "pod/pod-b created"
442443
assertContains "pod/pod-c created"
443-
assertContains "4 resource(s) applied. 3 created, 1 unchanged, 0 configured, 0 failed"
444-
assertContains "0 resource(s) pruned, 0 skipped, 0 failed"
444+
assertContains "3 resource(s) applied. 3 created, 0 unchanged, 0 configured, 0 failed"
445445
wait 2
446446
# Validate resources in the cluster
447447
# ConfigMap inventory with four inventory items.
@@ -450,11 +450,12 @@ assertRGInventory "rg-test-namespace" "4"
450450
# Apply again, but the ResourceGroup CRD is not re-installed.
451451
${BIN_DIR}/kpt live apply e2e/live/testdata/rg-test-case-1a > $OUTPUT_DIR/status 2>&1
452452
assertNotContains "installing inventory ResourceGroup CRD" # Not applied again
453-
assertContains "namespace/rg-test-namespace"
453+
assertContains "namespace/rg-test-namespace unchanged"
454+
assertContains "1 resource(s) applied. 0 created, 1 unchanged, 0 configured, 0 failed"
454455
assertContains "pod/pod-a unchanged"
455456
assertContains "pod/pod-b unchanged"
456457
assertContains "pod/pod-c unchanged"
457-
assertContains "4 resource(s) applied. 0 created, 4 unchanged, 0 configured, 0 failed"
458+
assertContains "3 resource(s) applied. 0 created, 3 unchanged, 0 configured, 0 failed"
458459
wait 2
459460

460461
printResult
@@ -529,11 +530,11 @@ echo "[ResourceGroup] Testing initial apply dry-run"
529530
echo "kpt live apply --dry-run e2e/live/testdata/rg-test-case-1a"
530531
${BIN_DIR}/kpt live apply --dry-run e2e/live/testdata/rg-test-case-1a > $OUTPUT_DIR/status
531532
assertContains "namespace/rg-test-namespace created (dry-run)"
533+
assertContains "1 resource(s) applied. 1 created, 0 unchanged, 0 configured, 0 failed (dry-run)"
532534
assertContains "pod/pod-a created (dry-run)"
533535
assertContains "pod/pod-b created (dry-run)"
534536
assertContains "pod/pod-c created (dry-run)"
535-
assertContains "4 resource(s) applied. 4 created, 0 unchanged, 0 configured, 0 failed"
536-
assertContains "0 resource(s) pruned, 0 skipped, 0 failed"
537+
assertContains "3 resource(s) applied. 3 created, 0 unchanged, 0 configured, 0 failed"
537538
printResult
538539

539540
# Test: Basic kpt live apply
@@ -543,12 +544,12 @@ echo "kpt live apply e2e/live/testdata/rg-test-case-1a"
543544
${BIN_DIR}/kpt live apply e2e/live/testdata/rg-test-case-1a > $OUTPUT_DIR/status
544545
# The ResourceGroup CRD is already installed.
545546
assertNotContains "installing inventory ResourceGroup CRD"
546-
assertContains "namespace/rg-test-namespace"
547+
assertContains "namespace/rg-test-namespace unchanged"
548+
assertContains "1 resource(s) applied. 0 created, 1 unchanged, 0 configured, 0 failed"
547549
assertContains "pod/pod-a created"
548550
assertContains "pod/pod-b created"
549551
assertContains "pod/pod-c created"
550-
assertContains "4 resource(s) applied. 3 created, 1 unchanged, 0 configured, 0 failed"
551-
assertContains "0 resource(s) pruned, 0 skipped, 0 failed"
552+
assertContains "3 resource(s) applied. 3 created, 0 unchanged, 0 configured, 0 failed"
552553
wait 2
553554
# Validate resources in the cluster
554555
# ConfigMap inventory with four inventory items.
@@ -562,10 +563,11 @@ echo "kpt live apply --dry-run e2e/live/testdata/rg-test-case-1b"
562563
cp -f e2e/live/testdata/rg-test-case-1a/Kptfile e2e/live/testdata/rg-test-case-1b
563564
${BIN_DIR}/kpt live apply --dry-run e2e/live/testdata/rg-test-case-1b > $OUTPUT_DIR/status
564565
assertContains "namespace/rg-test-namespace configured (dry-run)"
566+
assertContains "1 resource(s) applied. 0 created, 0 unchanged, 1 configured, 0 failed (dry-run)"
565567
assertContains "pod/pod-b configured (dry-run)"
566568
assertContains "pod/pod-c configured (dry-run)"
567569
assertContains "pod/pod-d created (dry-run)"
568-
assertContains "4 resource(s) applied. 1 created, 0 unchanged, 3 configured, 0 failed (dry-run)"
570+
assertContains "3 resource(s) applied. 1 created, 0 unchanged, 2 configured, 0 failed (dry-run)"
569571
assertContains "pod/pod-a pruned (dry-run)"
570572
assertContains "1 resource(s) pruned, 0 skipped, 0 failed (dry-run)"
571573
wait 2
@@ -584,10 +586,11 @@ echo "kpt live apply e2e/live/testdata/rg-test-case-1b"
584586
${BIN_DIR}/kpt live apply e2e/live/testdata/rg-test-case-1b > $OUTPUT_DIR/status
585587
assertNotContains "installing inventory ResourceGroup CRD" # CRD already installed
586588
assertContains "namespace/rg-test-namespace unchanged"
589+
assertContains "1 resource(s) applied. 0 created, 1 unchanged, 0 configured, 0 failed"
587590
assertContains "pod/pod-b unchanged"
588591
assertContains "pod/pod-c unchanged"
589592
assertContains "pod/pod-d created"
590-
assertContains "4 resource(s) applied. 1 created, 3 unchanged, 0 configured, 0 failed"
593+
assertContains "3 resource(s) applied. 1 created, 2 unchanged, 0 configured, 0 failed"
591594
assertContains "pod/pod-a pruned"
592595
assertContains "1 resource(s) pruned, 0 skipped, 0 failed"
593596
wait 2
@@ -607,8 +610,9 @@ ${BIN_DIR}/kpt live destroy --dry-run e2e/live/testdata/rg-test-case-1b > $OUTPU
607610
assertContains "pod/pod-d deleted (dry-run)"
608611
assertContains "pod/pod-c deleted (dry-run)"
609612
assertContains "pod/pod-b deleted (dry-run)"
613+
assertContains "3 resource(s) deleted, 0 skipped (dry-run)"
610614
assertContains "namespace/rg-test-namespace deleted (dry-run)"
611-
assertContains "4 resource(s) deleted, 0 skipped (dry-run)"
615+
assertContains "1 resource(s) deleted, 0 skipped (dry-run)"
612616
# Validate resources NOT DESTROYED in the cluster
613617
assertPodExists "pod-b" "rg-test-namespace"
614618
assertPodExists "pod-c" "rg-test-namespace"
@@ -623,8 +627,9 @@ ${BIN_DIR}/kpt live destroy e2e/live/testdata/rg-test-case-1b > $OUTPUT_DIR/stat
623627
assertContains "pod/pod-d deleted"
624628
assertContains "pod/pod-c deleted"
625629
assertContains "pod/pod-b deleted"
630+
assertContains "3 resource(s) deleted, 0 skipped"
626631
assertContains "namespace/rg-test-namespace deleted"
627-
assertContains "4 resource(s) deleted, 0 skipped"
632+
assertContains "1 resource(s) deleted, 0 skipped"
628633
# Validate resources NOT in the cluster
629634
assertPodNotExists "pod-b" "rg-test-namespace"
630635
assertPodNotExists "pod-c" "rg-test-namespace"
@@ -676,7 +681,6 @@ assertRGInventory "rbac-error" "1"
676681
assertContains "configmap/error-config-map apply failed"
677682
assertContains "configmap/valid-config-map created"
678683
assertContains "2 resource(s) applied. 1 created, 0 unchanged, 0 configured, 1 failed"
679-
assertContains "0 resource(s) pruned, 0 skipped, 0 failed"
680684
printResult
681685

682686
###########################################################
@@ -760,10 +764,11 @@ echo "kpt live apply e2e/live/testdata/migrate-case-1b"
760764
cp -f e2e/live/testdata/migrate-case-1a/Kptfile e2e/live/testdata/migrate-case-1b
761765
${BIN_DIR}/kpt live apply e2e/live/testdata/migrate-case-1b > $OUTPUT_DIR/status
762766
assertContains "namespace/test-rg-namespace unchanged"
767+
assertContains "1 resource(s) applied. 0 created, 1 unchanged, 0 configured, 0 failed"
763768
assertContains "pod/pod-b unchanged"
764769
assertContains "pod/pod-c unchanged"
765770
assertContains "pod/pod-d created"
766-
assertContains "4 resource(s) applied. 1 created, 3 unchanged, 0 configured, 0 failed"
771+
assertContains "3 resource(s) applied. 1 created, 2 unchanged, 0 configured, 0 failed"
767772
assertContains "pod/pod-a pruned"
768773
assertContains "1 resource(s) pruned, 0 skipped, 0 failed"
769774
wait 2

go.mod

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@ require (
1414
github.com/stretchr/testify v1.7.0
1515
github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca
1616
gotest.tools v2.2.0+incompatible
17+
k8s.io/api v0.21.1
1718
k8s.io/apiextensions-apiserver v0.21.1
1819
k8s.io/apimachinery v0.21.1
1920
k8s.io/cli-runtime v0.21.1
2021
k8s.io/client-go v0.21.1
2122
k8s.io/klog/v2 v2.9.0
2223
k8s.io/kubectl v0.21.1
23-
sigs.k8s.io/cli-utils v0.25.1-0.20210603052138-670dee18a123
24+
k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9
25+
sigs.k8s.io/cli-utils v0.25.1-0.20210702190410-c1a7c2d0409d
2426
sigs.k8s.io/kustomize/api v0.8.10 // indirect
2527
sigs.k8s.io/kustomize/kyaml v0.11.1-0.20210715213702-35d1c3f9b418
2628
)

go.sum

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -976,14 +976,15 @@ k8s.io/kubectl v0.21.1 h1:ySEusoeSgSDSiSBncDMsNrthSa3OSlXqT4R2rf1VFTw=
976976
k8s.io/kubectl v0.21.1/go.mod h1:PMYR88MqESuysBM/MX+Vu4JbX/50nY4d4kny+SPEI2U=
977977
k8s.io/metrics v0.21.1/go.mod h1:pyDVLsLe++FIGDBFU80NcW4xMFsuiVTWL8Zfi7+PpNo=
978978
k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
979-
k8s.io/utils v0.0.0-20210517184530-5a248b5acedc h1:cIS13bDBZaWqngldgGuDypv4z+zjcYgTKv72k6bMAn0=
980979
k8s.io/utils v0.0.0-20210517184530-5a248b5acedc/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
980+
k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9 h1:imL9YgXQ9p7xmPzHFm/vVd/cF78jad+n4wK1ABwYtMM=
981+
k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
981982
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
982983
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
983984
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
984985
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg=
985-
sigs.k8s.io/cli-utils v0.25.1-0.20210603052138-670dee18a123 h1:r4EB/9FG91VOKgZ0P1QWaqbRXy99YUuJq3OL7IsbFW0=
986-
sigs.k8s.io/cli-utils v0.25.1-0.20210603052138-670dee18a123/go.mod h1:I4jgHr6uRfX0CkOMECwSgg2J48rNzZE1+kDXj9SnJBc=
986+
sigs.k8s.io/cli-utils v0.25.1-0.20210702190410-c1a7c2d0409d h1:/JmSgB1dQKNcxbRviaIwTsoA4i0iLC9vJOsKMGSMG3w=
987+
sigs.k8s.io/cli-utils v0.25.1-0.20210702190410-c1a7c2d0409d/go.mod h1:uYYtfiY5dsWTRISBLwuSLGwbasAm/gc4K8yvN8eGbYw=
987988
sigs.k8s.io/controller-runtime v0.9.0-beta.5.0.20210524185538-7181f1162e79 h1:unv8eVaIbf/1vh/ewJfHns6ffKF69fwUxZZpaxQOb7g=
988989
sigs.k8s.io/controller-runtime v0.9.0-beta.5.0.20210524185538-7181f1162e79/go.mod h1:rgf+cBz72pYlKXDRNhI1WFQv/S86EMUV4/ySmsEYgHk=
989990
sigs.k8s.io/kustomize/api v0.8.8/go.mod h1:He1zoK0nk43Pc6NlV085xDXDXTNprtcyKZVm3swsdNY=

internal/cmdapply/cmdapply.go

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,21 @@ import (
3030
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3131
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
3232
"k8s.io/cli-runtime/pkg/genericclioptions"
33+
"k8s.io/kubectl/pkg/cmd/util"
3334
"sigs.k8s.io/cli-utils/pkg/apply"
3435
"sigs.k8s.io/cli-utils/pkg/common"
3536
"sigs.k8s.io/cli-utils/pkg/inventory"
36-
"sigs.k8s.io/cli-utils/pkg/provider"
37+
status "sigs.k8s.io/cli-utils/pkg/util/factory"
3738
)
3839

3940
// NewRunner returns a command runner
40-
func NewRunner(ctx context.Context, provider provider.Provider,
41+
func NewRunner(ctx context.Context, factory util.Factory,
4142
ioStreams genericclioptions.IOStreams) *Runner {
43+
4244
r := &Runner{
4345
ctx: ctx,
44-
Applier: apply.NewApplier(provider),
45-
provider: provider,
4646
ioStreams: ioStreams,
47+
factory: factory,
4748
applyRunner: runApply,
4849
}
4950
c := &cobra.Command{
@@ -82,9 +83,9 @@ func NewRunner(ctx context.Context, provider provider.Provider,
8283
return r
8384
}
8485

85-
func NewCommand(ctx context.Context, provider provider.Provider,
86+
func NewCommand(ctx context.Context, factory util.Factory,
8687
ioStreams genericclioptions.IOStreams) *cobra.Command {
87-
return NewRunner(ctx, provider, ioStreams).Command
88+
return NewRunner(ctx, factory, ioStreams).Command
8889
}
8990

9091
// Runner contains the run function
@@ -93,8 +94,7 @@ type Runner struct {
9394
Command *cobra.Command
9495
PreProcess func(info inventory.InventoryInfo, strategy common.DryRunStrategy) (inventory.InventoryPolicy, error)
9596
ioStreams genericclioptions.IOStreams
96-
Applier *apply.Applier
97-
provider provider.Provider
97+
factory util.Factory
9898

9999
installCRD bool
100100
serverSideOptions common.ServerSideOptions
@@ -136,7 +136,7 @@ func (r *Runner) preRunE(cmd *cobra.Command, _ []string) error {
136136
}
137137

138138
if !r.installCRD {
139-
err := cmdutil.VerifyResourceGroupCRD(r.provider.Factory())
139+
err := cmdutil.VerifyResourceGroupCRD(r.factory)
140140
if err != nil {
141141
return err
142142
}
@@ -154,7 +154,7 @@ func (r *Runner) runE(c *cobra.Command, args []string) error {
154154
args = append(args, cwd)
155155
}
156156

157-
objs, inv, err := live.Load(r.provider.Factory(), args[0], c.InOrStdin())
157+
objs, inv, err := live.Load(r.factory, args[0], c.InOrStdin())
158158
if err != nil {
159159
return err
160160
}
@@ -187,7 +187,7 @@ func (r *Runner) runE(c *cobra.Command, args []string) error {
187187
func runApply(r *Runner, invInfo inventory.InventoryInfo, objs []*unstructured.Unstructured,
188188
dryRunStrategy common.DryRunStrategy) error {
189189
if r.installCRD {
190-
f := r.provider.Factory()
190+
f := r.factory
191191
// Only install the ResourceGroup CRD if it is not already installed.
192192
if err := cmdutil.VerifyResourceGroupCRD(f); err != nil {
193193
err = cmdutil.InstallResourceGroupCRD(r.ctx, f)
@@ -199,10 +199,19 @@ func runApply(r *Runner, invInfo inventory.InventoryInfo, objs []*unstructured.U
199199

200200
// Run the applier. It will return a channel where we can receive updates
201201
// to keep track of progress and any issues.
202-
if err := r.Applier.Initialize(); err != nil {
202+
poller, err := status.NewStatusPoller(r.factory)
203+
if err != nil {
204+
return err
205+
}
206+
invClient, err := inventory.NewInventoryClient(r.factory, live.WrapInventoryObj, live.InvToUnstructuredFunc)
207+
if err != nil {
208+
return err
209+
}
210+
applier, err := apply.NewApplier(r.factory, invClient, poller)
211+
if err != nil {
203212
return err
204213
}
205-
ch := r.Applier.Run(r.ctx, invInfo, objs, apply.Options{
214+
ch := applier.Run(r.ctx, invInfo, objs, apply.Options{
206215
ServerSideOptions: r.serverSideOptions,
207216
PollInterval: r.period,
208217
ReconcileTimeout: r.reconcileTimeout,

internal/cmdapply/cmdapply_test.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"github.com/GoogleContainerTools/kpt/internal/testutil"
2323
kptfilev1 "github.com/GoogleContainerTools/kpt/pkg/api/kptfile/v1"
2424
"github.com/GoogleContainerTools/kpt/pkg/kptfile/kptfileutil"
25-
"github.com/GoogleContainerTools/kpt/pkg/live"
2625
"github.com/stretchr/testify/assert"
2726
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2827
"k8s.io/cli-runtime/pkg/genericclioptions"
@@ -137,9 +136,7 @@ func TestCmd(t *testing.T) {
137136
revert := testutil.Chdir(t, w.WorkspaceDirectory)
138137
defer revert()
139138

140-
rgProvider := live.NewResourceGroupProvider(tf)
141-
142-
runner := NewRunner(fake.CtxWithDefaultPrinter(), rgProvider, ioStreams)
139+
runner := NewRunner(fake.CtxWithDefaultPrinter(), tf, ioStreams)
143140
runner.Command.SetArgs(tc.args)
144141
runner.applyRunner = func(_ *Runner, inv inventory.InventoryInfo,
145142
_ []*unstructured.Unstructured, _ common.DryRunStrategy) error {

0 commit comments

Comments
 (0)