Skip to content

Commit af895c9

Browse files
cguruprasad17100mik
authored andcommitted
kctrl: fix repo update bug when url is same but secret changes
Signed-off-by: cguruprasad <[email protected]>
1 parent c6dbae6 commit af895c9

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ func (o *AddOrUpdateOptions) Run(args []string) error {
196196
return err
197197
}
198198

199-
if o.URL != "" && o.URL == existingRepository.Spec.Fetch.ImgpkgBundle.Image {
199+
if o.URL == existingRepository.Spec.Fetch.ImgpkgBundle.Image &&
200+
(o.SecretRef == "" || (existingRepository.Spec.Fetch.ImgpkgBundle.SecretRef != nil && existingRepository.Spec.Fetch.ImgpkgBundle.SecretRef.Name == o.SecretRef)) {
200201
return NewRepoTailer(o.NamespaceFlags.Name, o.Name, o.ui, client, RepoTailerOpts{PrintCurrentState: true}).TailRepoStatus()
201202
}
202203

@@ -260,6 +261,7 @@ func (o *AddOrUpdateOptions) updateExistingPackageRepository(pkgr *kcpkg.Package
260261
ImgpkgBundle: &kappctrl.AppFetchImgpkgBundle{Image: o.URL},
261262
}
262263

264+
// the case where a user would want to update the pkgr to remove the secretRef is not supported
263265
if o.SecretRef != "" {
264266
pkgr.Spec.Fetch.ImgpkgBundle.SecretRef = &kappctrl.AppFetchLocalRef{Name: o.SecretRef}
265267
}

cli/test/e2e/package_repository_test.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44
package e2e
55

66
import (
7+
"encoding/json"
78
"fmt"
89
"testing"
910
"time"
1011

1112
uitest "github.com/cppforlife/go-cli-ui/ui/test"
1213
"github.com/stretchr/testify/require"
14+
kcpkg "github.com/vmware-tanzu/carvel-kapp-controller/pkg/apis/packaging/v1alpha1"
1315
)
1416

1517
func TestPackageRepository(t *testing.T) {
@@ -19,14 +21,17 @@ func TestPackageRepository(t *testing.T) {
1921
kubectl := Kubectl{t, env.Namespace, logger}
2022

2123
pkgrName := "test-package-repository"
24+
pkgrWithSecretName := "test-package-repository-with-secret"
2225
pkgrURL := `ghcr.io/carvel-dev/kc-e2e-test-repo:latest`
26+
pkgrSecretRef := "sample-registry-secret"
2327

2428
newRepoNamespace := "carvel-test-repo-a"
2529

2630
kind := "PackageRepository"
2731

2832
cleanUp := func() {
2933
RemoveClusterResource(t, kind, pkgrName, env.Namespace, kubectl)
34+
RemoveClusterResource(t, kind, pkgrWithSecretName, env.Namespace, kubectl)
3035
RemoveClusterResource(t, kind, pkgrName, newRepoNamespace, kubectl)
3136
}
3237

@@ -205,6 +210,45 @@ func TestPackageRepository(t *testing.T) {
205210
kubectl.Run([]string{"get", kind, pkgrName, "-n", env.Namespace})
206211
})
207212

213+
logger.Section("create a repository with secretRef", func() {
214+
_, _ = kappCtrl.RunWithOpts([]string{"package", "repository", "add", "-r", pkgrWithSecretName, "--url", pkgrURL, "--secret-ref", pkgrSecretRef}, RunOpts{
215+
AllowError: true})
216+
217+
pkgrYaml := kubectl.Run([]string{"get", kind, pkgrWithSecretName, "-ojson"})
218+
pkgr := &kcpkg.PackageRepository{}
219+
err := json.Unmarshal([]byte(pkgrYaml), pkgr)
220+
require.NoError(t, err)
221+
require.Equal(t, pkgrSecretRef, pkgr.Spec.Fetch.ImgpkgBundle.SecretRef.Name)
222+
223+
kappCtrl.Run([]string{"package", "repository", "delete", "-r", pkgrWithSecretName})
224+
})
225+
226+
logger.Section("updating a repository's secret with no change in url", func() {
227+
_, err := kappCtrl.RunWithOpts([]string{"package", "repository", "add", "-r", pkgrWithSecretName, "--url", pkgrURL}, RunOpts{
228+
AllowError: true})
229+
require.NoError(t, err)
230+
231+
kubectl.Run([]string{"get", kind, pkgrWithSecretName})
232+
233+
kappCtrl.RunWithOpts([]string{"package", "repository", "update", "-r", pkgrWithSecretName, "--url", pkgrURL, "--secret-ref", pkgrSecretRef}, RunOpts{
234+
AllowError: true})
235+
236+
pkgrYaml := kubectl.Run([]string{"get", kind, pkgrWithSecretName, "-ojson"})
237+
pkgr := &kcpkg.PackageRepository{}
238+
err = json.Unmarshal([]byte(pkgrYaml), pkgr)
239+
require.NoError(t, err)
240+
require.Equal(t, pkgrSecretRef, pkgr.Spec.Fetch.ImgpkgBundle.SecretRef.Name)
241+
242+
// update to a new secret
243+
kappCtrl.RunWithOpts([]string{"package", "repository", "update", "-r", pkgrWithSecretName, "--url", pkgrURL, "--secret-ref", pkgrSecretRef + "-2"}, RunOpts{
244+
AllowError: true})
245+
246+
pkgrYaml = kubectl.Run([]string{"get", kind, pkgrWithSecretName, "-ojson"})
247+
pkgr = &kcpkg.PackageRepository{}
248+
err = json.Unmarshal([]byte(pkgrYaml), pkgr)
249+
require.NoError(t, err)
250+
require.Equal(t, pkgrSecretRef+"-2", pkgr.Spec.Fetch.ImgpkgBundle.SecretRef.Name)
251+
})
208252
}
209253

210254
func TestPackageRepositoryTagSemver(t *testing.T) {

0 commit comments

Comments
 (0)