@@ -82,7 +82,14 @@ func NewCmd(params *types.CmdParams) *cobra.Command {
8282
8383 // Call API
8484 req := buildRequest (ctx , model , apiClient )
85- err = req .Execute ()
85+ switch request := req .(type ) {
86+ case secretsmanager.ApiUpdateInstanceRequest :
87+ err = request .Execute ()
88+ case secretsmanager.ApiUpdateACLsRequest :
89+ err = request .Execute ()
90+ default :
91+ err = fmt .Errorf ("unknown request type" )
92+ }
8693 if err != nil {
8794 return fmt .Errorf ("update Secrets Manager instance: %w" , err )
8895 }
@@ -135,9 +142,32 @@ func parseInput(p *print.Printer, cmd *cobra.Command, inputArgs []string) (*inpu
135142 return & model , nil
136143}
137144
138- func buildRequest (ctx context.Context , model * inputModel , apiClient * secretsmanager.APIClient ) secretsmanager.ApiUpdateACLsRequest {
139- // TODO: implement API integration for KMS key updates.
145+ func buildRequest (ctx context.Context , model * inputModel , apiClient * secretsmanager.APIClient ) interface { Execute () error } {
146+ if model .KmsKeyId != nil {
147+ return buildUpdateInstanceRequest (ctx , model , apiClient )
148+ }
149+
150+ return buildUpdateACLsRequest (ctx , model , apiClient )
151+ }
152+
153+ func buildUpdateInstanceRequest (ctx context.Context , model * inputModel , apiClient * secretsmanager.APIClient ) secretsmanager.ApiUpdateInstanceRequest {
154+ req := apiClient .UpdateInstance (ctx , model .ProjectId , model .InstanceId )
155+
156+ payload := secretsmanager.UpdateInstancePayload {
157+ KmsKey : & secretsmanager.KmsKeyPayload {
158+ KeyId : model .KmsKeyId ,
159+ KeyRingId : model .KmsKeyringId ,
160+ KeyVersion : model .KmsKeyVersion ,
161+ ServiceAccountEmail : model .KmsServiceAccountEmail ,
162+ },
163+ }
164+
165+ req = req .UpdateInstancePayload (payload )
166+
167+ return req
168+ }
140169
170+ func buildUpdateACLsRequest (ctx context.Context , model * inputModel , apiClient * secretsmanager.APIClient ) secretsmanager.ApiUpdateACLsRequest {
141171 req := apiClient .UpdateACLs (ctx , model .ProjectId , model .InstanceId )
142172
143173 cidrs := []secretsmanager.UpdateACLPayload {}
0 commit comments