Skip to content

Commit e4b4822

Browse files
cguruprasad17100mik
authored andcommitted
kctrl: ensure secretRef is intact when only url is updated for pkgr
Signed-off-by: cguruprasad <[email protected]>
1 parent af895c9 commit e4b4822

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,13 +254,17 @@ func (o *AddOrUpdateOptions) newPackageRepository() (*kcpkg.PackageRepository, e
254254
}
255255

256256
func (o *AddOrUpdateOptions) updateExistingPackageRepository(pkgr *kcpkg.PackageRepository) (*kcpkg.PackageRepository, error) {
257-
258257
pkgr = pkgr.DeepCopy()
259258

260-
pkgr.Spec.Fetch = &kcpkg.PackageRepositoryFetch{
259+
fetch := &kcpkg.PackageRepositoryFetch{
261260
ImgpkgBundle: &kappctrl.AppFetchImgpkgBundle{Image: o.URL},
262261
}
263262

263+
if pkgr.Spec.Fetch != nil && pkgr.Spec.Fetch.ImgpkgBundle != nil {
264+
fetch.ImgpkgBundle.SecretRef = pkgr.Spec.Fetch.ImgpkgBundle.SecretRef
265+
}
266+
pkgr.Spec.Fetch = fetch
267+
264268
// the case where a user would want to update the pkgr to remove the secretRef is not supported
265269
if o.SecretRef != "" {
266270
pkgr.Spec.Fetch.ImgpkgBundle.SecretRef = &kappctrl.AppFetchLocalRef{Name: o.SecretRef}

cli/test/e2e/package_repository_test.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,9 @@ func TestPackageRepository(t *testing.T) {
214214
_, _ = kappCtrl.RunWithOpts([]string{"package", "repository", "add", "-r", pkgrWithSecretName, "--url", pkgrURL, "--secret-ref", pkgrSecretRef}, RunOpts{
215215
AllowError: true})
216216

217-
pkgrYaml := kubectl.Run([]string{"get", kind, pkgrWithSecretName, "-ojson"})
217+
pkgrJson := kubectl.Run([]string{"get", kind, pkgrWithSecretName, "-ojson"})
218218
pkgr := &kcpkg.PackageRepository{}
219-
err := json.Unmarshal([]byte(pkgrYaml), pkgr)
219+
err := json.Unmarshal([]byte(pkgrJson), pkgr)
220220
require.NoError(t, err)
221221
require.Equal(t, pkgrSecretRef, pkgr.Spec.Fetch.ImgpkgBundle.SecretRef.Name)
222222

@@ -233,22 +233,35 @@ func TestPackageRepository(t *testing.T) {
233233
kappCtrl.RunWithOpts([]string{"package", "repository", "update", "-r", pkgrWithSecretName, "--url", pkgrURL, "--secret-ref", pkgrSecretRef}, RunOpts{
234234
AllowError: true})
235235

236-
pkgrYaml := kubectl.Run([]string{"get", kind, pkgrWithSecretName, "-ojson"})
236+
pkgrJson := kubectl.Run([]string{"get", kind, pkgrWithSecretName, "-ojson"})
237237
pkgr := &kcpkg.PackageRepository{}
238-
err = json.Unmarshal([]byte(pkgrYaml), pkgr)
238+
err = json.Unmarshal([]byte(pkgrJson), pkgr)
239239
require.NoError(t, err)
240240
require.Equal(t, pkgrSecretRef, pkgr.Spec.Fetch.ImgpkgBundle.SecretRef.Name)
241241

242242
// update to a new secret
243243
kappCtrl.RunWithOpts([]string{"package", "repository", "update", "-r", pkgrWithSecretName, "--url", pkgrURL, "--secret-ref", pkgrSecretRef + "-2"}, RunOpts{
244244
AllowError: true})
245245

246-
pkgrYaml = kubectl.Run([]string{"get", kind, pkgrWithSecretName, "-ojson"})
246+
pkgrJson = kubectl.Run([]string{"get", kind, pkgrWithSecretName, "-ojson"})
247247
pkgr = &kcpkg.PackageRepository{}
248-
err = json.Unmarshal([]byte(pkgrYaml), pkgr)
248+
err = json.Unmarshal([]byte(pkgrJson), pkgr)
249249
require.NoError(t, err)
250250
require.Equal(t, pkgrSecretRef+"-2", pkgr.Spec.Fetch.ImgpkgBundle.SecretRef.Name)
251251
})
252+
253+
logger.Section("updating just the url of a repository with secret", func() {
254+
// update just the url, secret should be intact
255+
kappCtrl.RunWithOpts([]string{"package", "repository", "update", "-r", pkgrWithSecretName, "--url", pkgrURL + "-new"}, RunOpts{
256+
AllowError: true})
257+
258+
pkgrJson := kubectl.Run([]string{"get", kind, pkgrWithSecretName, "-ojson"})
259+
pkgr := &kcpkg.PackageRepository{}
260+
err := json.Unmarshal([]byte(pkgrJson), pkgr)
261+
require.NoError(t, err)
262+
require.Equal(t, pkgrURL+"-new", pkgr.Spec.Fetch.ImgpkgBundle.Image)
263+
require.Equal(t, pkgrSecretRef+"-2", pkgr.Spec.Fetch.ImgpkgBundle.SecretRef.Name)
264+
})
252265
}
253266

254267
func TestPackageRepositoryTagSemver(t *testing.T) {

0 commit comments

Comments
 (0)