Skip to content

Commit 8a9b3f7

Browse files
kctrl: Add secret flag for package repo add/update (#1612)
* Add secret flag for PackageRepository CRD in cli Signed-off-by: Devanshu <[email protected]> * Removed whitespace check Signed-off-by: Devanshu <[email protected]> * Changed flagname to secretref also added a shorthand for secretref flag Signed-off-by: Devanshu <[email protected]> * Add hyphen(-) in flag name, remove shorthand Signed-off-by: Devanshu <[email protected]> * Add dry-run test for secret-ref flag Signed-off-by: Devanshu <[email protected]> --------- Signed-off-by: Devanshu <[email protected]>
1 parent 2a68e24 commit 8a9b3f7

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

cli/pkg/kctrl/cmd/package/repository/add_or_update.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ type AddOrUpdateOptions struct {
3737
URL string
3838
SemverTagConstraints string
3939
CreateNamespace bool
40+
SecretRef string
4041

4142
DryRun bool
4243

@@ -78,6 +79,7 @@ func NewAddCmd(o *AddOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *cobra.
7879
// TODO consider how to support other repository types
7980
cmd.Flags().StringVar(&o.URL, "url", "", "OCI registry url for package repository bundle (required)")
8081
cmd.Flags().StringVar(&o.SemverTagConstraints, "semver-tag-constraints", "", "tag/semver constraint when tag is not present in URL (If both tags and semver are present, then tag gets precedence)")
82+
cmd.Flags().StringVar(&o.SecretRef, "secret-ref", "", "SecretRef name for imgpkgbundle, optional")
8183
cmd.Flags().BoolVar(&o.DryRun, "dry-run", false, "Print YAML for resources being applied to the cluster without applying them, optional")
8284

8385
cmd.Flags().BoolVar(&o.CreateNamespace, "create-namespace", false, "Create the package repository namespace if not present (default false)")
@@ -119,6 +121,7 @@ func NewUpdateCmd(o *AddOrUpdateOptions, flagsFactory cmdcore.FlagsFactory) *cob
119121

120122
cmd.Flags().StringVarP(&o.URL, "url", "", "", "OCI registry url for package repository bundle (required)")
121123
cmd.Flags().StringVarP(&o.SemverTagConstraints, "semver-tag-constraints", "", "", "tag/semver constraint when tag is not present in URL (If both tags and semver are present, then tag gets precedence)")
124+
cmd.Flags().StringVarP(&o.SecretRef, "secret-ref", "", "", "SecretRef name for imgpkgbundle, optional")
122125

123126
o.WaitFlags.Set(cmd, flagsFactory, &cmdcore.WaitFlagsOpts{
124127
AllowDisableWait: true,
@@ -257,6 +260,10 @@ func (o *AddOrUpdateOptions) updateExistingPackageRepository(pkgr *kcpkg.Package
257260
ImgpkgBundle: &kappctrl.AppFetchImgpkgBundle{Image: o.URL},
258261
}
259262

263+
if o.SecretRef != "" {
264+
pkgr.Spec.Fetch.ImgpkgBundle.SecretRef = &kappctrl.AppFetchLocalRef{Name: o.SecretRef}
265+
}
266+
260267
ref, err := name.ParseReference(o.URL, name.WeakValidation)
261268
if err != nil {
262269
return pkgr, fmt.Errorf("Parsing OCI registry URL: %s", err)
@@ -316,6 +323,10 @@ func (o AddOrUpdateOptions) dryRun() error {
316323
},
317324
}
318325

326+
if o.SecretRef != "" {
327+
packageRepo.Spec.Fetch.ImgpkgBundle.SecretRef = &kappctrl.AppFetchLocalRef{Name: o.SecretRef}
328+
}
329+
319330
ref, err := name.ParseReference(o.URL, name.WeakValidation)
320331
if err != nil {
321332
return fmt.Errorf("Parsing OCI registry URL: %s", err)

cli/test/e2e/package_repo_dry_run_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,32 @@ status:
7171
require.Contains(t, tagSemverOutput, tagSemverExpectedOutput)
7272
})
7373
}
74+
75+
func TestPackageRepoSecretRefDryRun(t *testing.T) {
76+
env := BuildEnv(t)
77+
logger := Logger{}
78+
kappCtrl := Kctrl{t, env.Namespace, env.KctrlBinaryPath, logger}
79+
80+
logger.Section("dry-run package repo add", func() {
81+
expectedOutput := `apiVersion: packaging.carvel.dev/v1alpha1
82+
kind: PackageRepository
83+
metadata:
84+
creationTimestamp: null
85+
name: test-repo
86+
namespace: kctrl-test
87+
spec:
88+
fetch:
89+
imgpkgBundle:
90+
image: registry.carvel.dev/project/repo:1.0.0
91+
secretRef:
92+
name: regcred
93+
status:
94+
conditions: null
95+
friendlyDescription: ""
96+
observedGeneration: 0`
97+
98+
output := kappCtrl.Run([]string{"package", "repo", "add", "-r", "test-repo", "--url",
99+
"registry.carvel.dev/project/repo:1.0.0", "--semver-tag-constraints", "1.0.0", "--secret-ref", "regcred", "--dry-run"})
100+
require.Contains(t, output, expectedOutput)
101+
})
102+
}

0 commit comments

Comments
 (0)