@@ -24,6 +24,8 @@ import (
2424	svcapitypes "github.com/aws-controllers-k8s/lambda-controller/apis/v1alpha1" 
2525)
2626
27+ // syncEventInvokeConfig calls `PutFunctionEventInvokeConfig` to update the fields 
28+ // or `DeleteFunctionEventInvokeConfig` if users removes the fields 
2729func  (rm  * resourceManager ) syncEventInvokeConfig (
2830	ctx  context.Context ,
2931	r  * resource ,
@@ -32,42 +34,55 @@ func (rm *resourceManager) syncEventInvokeConfig(
3234	exit  :=  rlog .Trace ("rm.syncEventInvokeConfig" )
3335	defer  exit (err )
3436
37+ 	// Check if the user deleted the 'FunctionEventInvokeConfig' configuration 
38+ 	// If yes, delete FunctionEventInvokeConfig 
39+ 	if  r .ko .Spec .FunctionEventInvokeConfig  ==  nil  {
40+ 		input_delete  :=  & svcsdk.DeleteFunctionEventInvokeConfigInput {
41+ 			FunctionName : aws .String (* r .ko .Spec .FunctionName ),
42+ 			Qualifier :    aws .String (* r .ko .Spec .Name ),
43+ 		}
44+ 		_ , err  =  rm .sdkapi .DeleteFunctionEventInvokeConfigWithContext (ctx , input_delete )
45+ 		rm .metrics .RecordAPICall ("DELETE" , "DeleteFunctionEventInvokeConfig" , err )
46+ 		if  err  !=  nil  {
47+ 			return  nil , err 
48+ 		}
49+ 		return  r , nil 
50+ 	}
51+ 
3552	dspec  :=  r .ko .Spec 
3653	input  :=  & svcsdk.PutFunctionEventInvokeConfigInput {
3754		FunctionName : aws .String (* dspec .FunctionName ),
3855		Qualifier :    aws .String (* dspec .Name ),
3956	}
4057
41- 	if  r .ko .Spec .FunctionEventInvokeConfig  !=  nil  {
42- 		if  r .ko .Spec .FunctionEventInvokeConfig .DestinationConfig  !=  nil  {
43- 			destinations  :=  & svcsdk.DestinationConfig {}
44- 			if  r .ko .Spec .FunctionEventInvokeConfig .DestinationConfig .OnFailure  !=  nil  {
45- 				destinations .OnFailure  =  & svcsdk.OnFailure {}
46- 				if  r .ko .Spec .FunctionEventInvokeConfig .DestinationConfig .OnFailure .Destination  !=  nil  {
47- 					destinations .OnFailure .Destination  =  aws .String (* r .ko .Spec .FunctionEventInvokeConfig .DestinationConfig .OnFailure .Destination )
48- 				}
49- 			}
50- 			if  r .ko .Spec .FunctionEventInvokeConfig .DestinationConfig .OnSuccess  !=  nil  {
51- 				destinations .OnSuccess  =  & svcsdk.OnSuccess {}
52- 				if  r .ko .Spec .FunctionEventInvokeConfig .DestinationConfig .OnSuccess .Destination  !=  nil  {
53- 					destinations .OnSuccess .Destination  =  aws .String (* r .ko .Spec .FunctionEventInvokeConfig .DestinationConfig .OnSuccess .Destination )
54- 				}
58+ 	if  dspec .FunctionEventInvokeConfig .DestinationConfig  !=  nil  {
59+ 		destinations  :=  & svcsdk.DestinationConfig {}
60+ 		if  dspec .FunctionEventInvokeConfig .DestinationConfig .OnFailure  !=  nil  {
61+ 			destinations .OnFailure  =  & svcsdk.OnFailure {}
62+ 			if  dspec .FunctionEventInvokeConfig .DestinationConfig .OnFailure .Destination  !=  nil  {
63+ 				destinations .OnFailure .Destination  =  aws .String (* dspec .FunctionEventInvokeConfig .DestinationConfig .OnFailure .Destination )
5564			}
56- 			input .DestinationConfig  =  destinations 
5765		}
58- 		if  r . ko . Spec . FunctionEventInvokeConfig .MaximumEventAgeInSeconds  !=  nil  {
59- 			input . MaximumEventAgeInSeconds  =  aws . Int64 ( * r . ko . Spec . FunctionEventInvokeConfig . MaximumEventAgeInSeconds ) 
60- 		} 
61- 		if   r . ko . Spec . FunctionEventInvokeConfig . MaximumRetryAttempts   !=   nil  { 
62- 			input . MaximumRetryAttempts   =   aws . Int64 ( * r . ko . Spec . FunctionEventInvokeConfig . MaximumRetryAttempts ) 
66+ 		if  dspec . FunctionEventInvokeConfig .DestinationConfig . OnSuccess  !=  nil  {
67+ 			destinations . OnSuccess  =  & svcsdk. OnSuccess {} 
68+ 			 if   dspec . FunctionEventInvokeConfig . DestinationConfig . OnSuccess . Destination   !=   nil  { 
69+ 				 destinations . OnSuccess . Destination   =   aws . String ( * dspec . FunctionEventInvokeConfig . DestinationConfig . OnSuccess . Destination ) 
70+ 			} 
6371		}
72+ 		input .DestinationConfig  =  destinations 
6473	}
74+ 	if  dspec .FunctionEventInvokeConfig .MaximumEventAgeInSeconds  !=  nil  {
75+ 		input .MaximumEventAgeInSeconds  =  aws .Int64 (* dspec .FunctionEventInvokeConfig .MaximumEventAgeInSeconds )
76+ 	}
77+ 	if  dspec .FunctionEventInvokeConfig .MaximumRetryAttempts  !=  nil  {
78+ 		input .MaximumRetryAttempts  =  aws .Int64 (* dspec .FunctionEventInvokeConfig .MaximumRetryAttempts )
79+ 	}
80+ 
6581	_ , err  =  rm .sdkapi .PutFunctionEventInvokeConfigWithContext (ctx , input )
6682	rm .metrics .RecordAPICall ("UPDATE" , "SyncEventInvokeConfig" , err )
6783	if  err  !=  nil  {
6884		return  nil , err 
6985	}
70- 
7186	return  r , nil 
7287}
7388
@@ -148,12 +163,33 @@ func (rm *resourceManager) setProvisionedConcurrencyConfig(
148163	return  nil 
149164}
150165
151- // getFunctionEventInvokeConfig will describe the fields that are 
152- // custom to the Alias resource 
153- func  (rm  * resourceManager ) getFunctionEventInvokeConfig (
166+ func  (rm  * resourceManager ) setFunctionEventInvokeConfigFromResponse (
167+ 	ko  * svcapitypes.Alias ,
168+ 	getFunctionEventInvokeConfigOutput  * svcsdk.GetFunctionEventInvokeConfigOutput ,
169+ ) {
170+ 	// creating FunctionEventInvokeConfig object to store the values returned from `Get` call 
171+ 	cloudFunctionEventInvokeConfig  :=  & svcapitypes.PutFunctionEventInvokeConfigInput {}
172+ 	cloudFunctionEventInvokeConfig .DestinationConfig  =  & svcapitypes.DestinationConfig {}
173+ 	cloudFunctionEventInvokeConfig .DestinationConfig .OnFailure  =  & svcapitypes.OnFailure {}
174+ 	cloudFunctionEventInvokeConfig .DestinationConfig .OnSuccess  =  & svcapitypes.OnSuccess {}
175+ 	cloudFunctionEventInvokeConfig .DestinationConfig .OnFailure .Destination  =  getFunctionEventInvokeConfigOutput .DestinationConfig .OnFailure .Destination 
176+ 	cloudFunctionEventInvokeConfig .DestinationConfig .OnSuccess .Destination  =  getFunctionEventInvokeConfigOutput .DestinationConfig .OnSuccess .Destination 
177+ 	cloudFunctionEventInvokeConfig .MaximumEventAgeInSeconds  =  getFunctionEventInvokeConfigOutput .MaximumEventAgeInSeconds 
178+ 	cloudFunctionEventInvokeConfig .MaximumRetryAttempts  =  getFunctionEventInvokeConfigOutput .MaximumRetryAttempts 
179+ 	ko .Spec .FunctionEventInvokeConfig  =  cloudFunctionEventInvokeConfig 
180+ 
181+ }
182+ 
183+ // setFunctionEventInvokeConfig sets the fields to set asynchronous invocation 
184+ // for Function's Alias 
185+ func  (rm  * resourceManager ) setFunctionEventInvokeConfig (
154186	ctx  context.Context ,
155187	ko  * svcapitypes.Alias ,
156188) (err  error ) {
189+ 	rlog  :=  ackrtlog .FromContext (ctx )
190+ 	exit  :=  rlog .Trace ("rm.setFunctionEventInvokeConfig" )
191+ 	defer  exit (err )
192+ 
157193	var  getFunctionEventInvokeConfigOutput  * svcsdk.GetFunctionEventInvokeConfigOutput 
158194	getFunctionEventInvokeConfigOutput , err  =  rm .sdkapi .GetFunctionEventInvokeConfigWithContext (
159195		ctx ,
@@ -162,7 +198,6 @@ func (rm *resourceManager) getFunctionEventInvokeConfig(
162198			Qualifier :    ko .Spec .Name ,
163199		},
164200	)
165- 
166201	rm .metrics .RecordAPICall ("GET" , "GetFunctionEventInvokeConfig" , err )
167202
168203	if  err  !=  nil  {
@@ -172,30 +207,7 @@ func (rm *resourceManager) getFunctionEventInvokeConfig(
172207			return  err 
173208		}
174209	} else  {
175- 		if  getFunctionEventInvokeConfigOutput .DestinationConfig  !=  nil  {
176- 			if  getFunctionEventInvokeConfigOutput .DestinationConfig .OnFailure  !=  nil  {
177- 				if  getFunctionEventInvokeConfigOutput .DestinationConfig .OnFailure .Destination  !=  nil  {
178- 					ko .Spec .FunctionEventInvokeConfig .DestinationConfig .OnFailure .Destination  =  getFunctionEventInvokeConfigOutput .DestinationConfig .OnFailure .Destination 
179- 				}
180- 			}
181- 			if  getFunctionEventInvokeConfigOutput .DestinationConfig .OnSuccess  !=  nil  {
182- 				if  getFunctionEventInvokeConfigOutput .DestinationConfig .OnSuccess .Destination  !=  nil  {
183- 					ko .Spec .FunctionEventInvokeConfig .DestinationConfig .OnSuccess .Destination  =  getFunctionEventInvokeConfigOutput .DestinationConfig .OnSuccess .Destination 
184- 				}
185- 			}
186- 		} else  {
187- 			ko .Spec .FunctionEventInvokeConfig .DestinationConfig  =  nil 
188- 		}
189- 		if  getFunctionEventInvokeConfigOutput .MaximumEventAgeInSeconds  !=  nil  {
190- 			ko .Spec .FunctionEventInvokeConfig .MaximumEventAgeInSeconds  =  getFunctionEventInvokeConfigOutput .MaximumEventAgeInSeconds 
191- 		} else  {
192- 			ko .Spec .FunctionEventInvokeConfig .MaximumEventAgeInSeconds  =  nil 
193- 		}
194- 		if  getFunctionEventInvokeConfigOutput .DestinationConfig  !=  nil  {
195- 			ko .Spec .FunctionEventInvokeConfig .MaximumRetryAttempts  =  getFunctionEventInvokeConfigOutput .MaximumRetryAttempts 
196- 		} else  {
197- 			ko .Spec .FunctionEventInvokeConfig .MaximumRetryAttempts  =  nil 
198- 		}
210+ 		rm .setFunctionEventInvokeConfigFromResponse (ko , getFunctionEventInvokeConfigOutput )
199211	}
200212
201213	return  nil 
@@ -212,9 +224,9 @@ func (rm *resourceManager) setResourceAdditionalFields(
212224	defer  exit (err )
213225
214226	// To set Asynchronous Invocations for the function's alias 
215- 	eic_err   : =rm .getFunctionEventInvokeConfig (ctx , ko )
216- 	if  eic_err  !=  nil  {
217- 		return  eic_err 
227+ 	err   =  rm .setFunctionEventInvokeConfig (ctx , ko )
228+ 	if  err  !=  nil  {
229+ 		return  err 
218230	}
219231
220232	// To set Provisioned Concurrency for the function's alias 
0 commit comments