@@ -62,6 +62,7 @@ type runner struct {
62
62
ctx context.Context
63
63
cfg * genericclioptions.ConfigFlags
64
64
client rest.Interface
65
+ porchClient client.Client
65
66
Command * cobra.Command
66
67
67
68
// Flags
@@ -79,6 +80,12 @@ func (r *runner) preRunE(cmd *cobra.Command, args []string) error {
79
80
return errors .E (op , err )
80
81
}
81
82
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
82
89
return nil
83
90
}
84
91
@@ -89,14 +96,34 @@ func (r *runner) runE(cmd *cobra.Command, args []string) error {
89
96
namespace := * r .cfg .Namespace
90
97
91
98
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 {
93
101
Namespace : namespace ,
94
102
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 )
100
127
}
101
128
}
102
129
0 commit comments