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