Skip to content

Commit 5a7e65f

Browse files
authored
porch cli: 'rpkg reject' should also reject proposals for deletion (#3761)
1 parent 1cb21f9 commit 5a7e65f

File tree

2 files changed

+75
-6
lines changed

2 files changed

+75
-6
lines changed

commands/alpha/rpkg/reject/command.go

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ type runner struct {
6262
ctx context.Context
6363
cfg *genericclioptions.ConfigFlags
6464
client rest.Interface
65+
porchClient client.Client
6566
Command *cobra.Command
6667

6768
// Flags
@@ -79,6 +80,12 @@ func (r *runner) preRunE(cmd *cobra.Command, args []string) error {
7980
return errors.E(op, err)
8081
}
8182
r.client = client
83+
84+
porchClient, err := porch.CreateClientWithFlags(r.cfg)
85+
if err != nil {
86+
return errors.E(op, err)
87+
}
88+
r.porchClient = porchClient
8289
return nil
8390
}
8491

@@ -89,14 +96,34 @@ func (r *runner) runE(cmd *cobra.Command, args []string) error {
8996
namespace := *r.cfg.Namespace
9097

9198
for _, name := range args {
92-
if err := porch.UpdatePackageRevisionApproval(r.ctx, r.client, client.ObjectKey{
99+
pr := &v1alpha1.PackageRevision{}
100+
if err := r.porchClient.Get(r.ctx, client.ObjectKey{
93101
Namespace: namespace,
94102
Name: name,
95-
}, v1alpha1.PackageRevisionLifecycleDraft); err != nil {
96-
messages = append(messages, err.Error())
97-
fmt.Fprintf(r.Command.ErrOrStderr(), "%s failed (%s)\n", name, err)
98-
} else {
99-
fmt.Fprintf(r.Command.OutOrStderr(), "%s rejected\n", name)
103+
}, pr); err != nil {
104+
return errors.E(op, err)
105+
}
106+
switch pr.Spec.Lifecycle {
107+
case v1alpha1.PackageRevisionLifecycleProposed:
108+
if err := porch.UpdatePackageRevisionApproval(r.ctx, r.client, client.ObjectKey{
109+
Namespace: namespace,
110+
Name: name,
111+
}, v1alpha1.PackageRevisionLifecycleDraft); err != nil {
112+
messages = append(messages, err.Error())
113+
fmt.Fprintf(r.Command.ErrOrStderr(), "%s failed (%s)\n", name, err)
114+
} else {
115+
fmt.Fprintf(r.Command.OutOrStderr(), "%s rejected\n", name)
116+
}
117+
case v1alpha1.PackageRevisionLifecycleDeletionProposed:
118+
pr.Spec.Lifecycle = v1alpha1.PackageRevisionLifecyclePublished
119+
if err := r.porchClient.Update(r.ctx, pr); err != nil {
120+
messages = append(messages, err.Error())
121+
fmt.Fprintf(r.Command.ErrOrStderr(), "%s failed (%s)\n", name, err)
122+
} else {
123+
fmt.Fprintf(r.Command.OutOrStderr(), "%s no longer proposed for deletion\n", name)
124+
}
125+
default:
126+
fmt.Fprintf(r.Command.ErrOrStderr(), "cannot reject %s with lifecycle '%s'\n", name, pr.Spec.Lifecycle)
100127
}
101128
}
102129

e2e/testdata/porch/rpkg-lifecycle/config.yaml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,48 @@ commands:
142142
stdout: |
143143
NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY
144144
git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034 lifecycle-package lifecycle v1 true DeletionProposed git
145+
- args:
146+
- alpha
147+
- rpkg
148+
- reject
149+
- git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034
150+
- --namespace=rpkg-lifecycle
151+
stderr: |
152+
git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034 no longer proposed for deletion
153+
- args:
154+
- alpha
155+
- rpkg
156+
- reject
157+
- git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034
158+
- --namespace=rpkg-lifecycle
159+
stderr: |
160+
cannot reject git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034 with lifecycle 'Published'
161+
- args:
162+
- alpha
163+
- rpkg
164+
- get
165+
- git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034
166+
- --namespace=rpkg-lifecycle
167+
stdout: |
168+
NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY
169+
git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034 lifecycle-package lifecycle v1 true Published git
170+
- args:
171+
- alpha
172+
- rpkg
173+
- propose-delete
174+
- git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034
175+
- --namespace=rpkg-lifecycle
176+
stderr: |
177+
git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034 proposed for deletion
178+
- args:
179+
- alpha
180+
- rpkg
181+
- get
182+
- git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034
183+
- --namespace=rpkg-lifecycle
184+
stdout: |
185+
NAME PACKAGE WORKSPACENAME REVISION LATEST LIFECYCLE REPOSITORY
186+
git-017a8366a5e0d9b35ae6dc489d4d3f68046d6034 lifecycle-package lifecycle v1 true DeletionProposed git
145187
- args:
146188
- alpha
147189
- rpkg

0 commit comments

Comments
 (0)