@@ -80,20 +80,29 @@ func (rm *resourceManager) updateProvisionedConcurrency(
80
80
exit := rlog .Trace ("rm.updateProvisionedConcurrency" )
81
81
defer exit (err )
82
82
83
+ // Check if the user deleted the 'ProvisionedConcurrency' configuration
84
+ // If yes, delete ProvisionedConcurrencyConfig
85
+ if desired .ko .Spec .ProvisionedConcurrencyConfig == nil {
86
+ input_delete := & svcsdk.DeleteProvisionedConcurrencyConfigInput {
87
+ FunctionName : aws .String (* desired .ko .Spec .FunctionName ),
88
+ Qualifier : aws .String (* desired .ko .Spec .Name ),
89
+ }
90
+ _ , err = rm .sdkapi .DeleteProvisionedConcurrencyConfigWithContext (ctx , input_delete )
91
+ rm .metrics .RecordAPICall ("DELETE" , "DeleteProvisionedConcurrency" , err )
92
+ if err != nil {
93
+ return err
94
+ }
95
+ return nil
96
+ }
97
+
83
98
dspec := desired .ko .Spec
84
99
input := & svcsdk.PutProvisionedConcurrencyConfigInput {
85
100
FunctionName : aws .String (* dspec .FunctionName ),
86
101
Qualifier : aws .String (* dspec .Name ),
87
102
}
88
103
89
- if desired .ko .Spec .ProvisionedConcurrencyConfig != nil {
90
- if desired .ko .Spec .ProvisionedConcurrencyConfig .ProvisionedConcurrentExecutions != nil {
91
- input .ProvisionedConcurrentExecutions = aws .Int64 (* desired .ko .Spec .ProvisionedConcurrencyConfig .ProvisionedConcurrentExecutions )
92
- } else {
93
- input .ProvisionedConcurrentExecutions = aws .Int64 (0 )
94
- }
95
- } else {
96
- input .ProvisionedConcurrentExecutions = aws .Int64 (0 )
104
+ if dspec .ProvisionedConcurrencyConfig .ProvisionedConcurrentExecutions != nil {
105
+ input .ProvisionedConcurrentExecutions = aws .Int64 (* dspec .ProvisionedConcurrencyConfig .ProvisionedConcurrentExecutions )
97
106
}
98
107
99
108
_ , err = rm .sdkapi .PutProvisionedConcurrencyConfigWithContext (ctx , input )
@@ -104,7 +113,9 @@ func (rm *resourceManager) updateProvisionedConcurrency(
104
113
return nil
105
114
}
106
115
107
- func (rm * resourceManager ) getProvisionedConcurrencyConfig (
116
+ // getProvisionedConcurrencyConfig will describe the fields that are
117
+ // custom to the Alias resource
118
+ func (rm * resourceManager ) setProvisionedConcurrencyConfig (
108
119
ctx context.Context ,
109
120
ko * svcapitypes.Alias ,
110
121
) (err error ) {
@@ -126,12 +137,17 @@ func (rm *resourceManager) getProvisionedConcurrencyConfig(
126
137
return err
127
138
}
128
139
} else {
129
- ko .Spec .ProvisionedConcurrencyConfig .ProvisionedConcurrentExecutions = getProvisionedConcurrencyConfigOutput .RequestedProvisionedConcurrentExecutions
140
+ // creating ProvisionedConcurrency object to store the values returned from `Get` call
141
+ cloudProvisionedConcurrency := & svcapitypes.PutProvisionedConcurrencyConfigInput {}
142
+ cloudProvisionedConcurrency .ProvisionedConcurrentExecutions = getProvisionedConcurrencyConfigOutput .RequestedProvisionedConcurrentExecutions
143
+ ko .Spec .ProvisionedConcurrencyConfig = cloudProvisionedConcurrency
130
144
}
131
145
132
146
return nil
133
147
}
134
148
149
+ // getFunctionEventInvokeConfig will describe the fields that are
150
+ // custom to the Alias resource
135
151
func (rm * resourceManager ) getFunctionEventInvokeConfig (
136
152
ctx context.Context ,
137
153
ko * svcapitypes.Alias ,
@@ -183,6 +199,8 @@ func (rm *resourceManager) getFunctionEventInvokeConfig(
183
199
return nil
184
200
}
185
201
202
+ // setResourceAdditionalFields will describe the fields that are not return by the
203
+ // getFunctionConfiguration API call
186
204
func (rm * resourceManager ) setResourceAdditionalFields (
187
205
ctx context.Context ,
188
206
ko * svcapitypes.Alias ,
@@ -191,14 +209,16 @@ func (rm *resourceManager) setResourceAdditionalFields(
191
209
exit := rlog .Trace ("rm.setResourceAdditionalFields" )
192
210
defer exit (err )
193
211
212
+ // To set Asynchronous Invocations for the function's alias
194
213
eic_err := rm .getFunctionEventInvokeConfig (ctx , ko )
195
214
if eic_err != nil {
196
215
return eic_err
197
216
}
198
217
199
- pc_err := rm .getProvisionedConcurrencyConfig (ctx , ko )
200
- if pc_err != nil {
201
- return pc_err
218
+ // To set Provisioned Concurrency for the function's alias
219
+ err = rm .setProvisionedConcurrencyConfig (ctx , ko )
220
+ if err != nil {
221
+ return err
202
222
}
203
223
204
224
return nil
0 commit comments