Skip to content

Commit 6cd3204

Browse files
authored
fix: check lambda Function latest status in sdkupdate (#174)
Issue [#2433](aws-controllers-k8s/community#2433) Description of changes: This change ensures the Lambda Function does not get stuck in `pending`. This issue occurs because we check the desired Status, which is not in sync with the latest Status in AWS. By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent 8b46ca9 commit 6cd3204

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

pkg/resource/function/hooks.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,36 +69,38 @@ func (rm *resourceManager) customUpdateFunction(
6969
exit := rlog.Trace("rm.customUpdateFunction")
7070
defer exit(err)
7171

72-
if isFunctionPending(desired) {
73-
return nil, requeueWaitWhilePending
72+
updatedStatusResource := rm.concreteResource(desired.DeepCopy())
73+
updatedStatusResource.SetStatus(latest)
74+
if isFunctionPending(latest) {
75+
return updatedStatusResource, requeueWaitWhilePending
7476
}
7577

7678
if delta.DifferentAt("Spec.Tags") {
7779
err = rm.updateFunctionTags(ctx, latest, desired)
7880
if err != nil {
79-
return nil, err
81+
return updatedStatusResource, err
8082
}
8183
}
8284
if delta.DifferentAt("Spec.ReservedConcurrentExecutions") {
8385
err = rm.updateFunctionConcurrency(ctx, desired)
8486
if err != nil {
85-
return nil, err
87+
return updatedStatusResource, err
8688
}
8789
}
8890
if delta.DifferentAt("Spec.FunctionEventInvokeConfig") {
8991
err = rm.syncFunctionEventInvokeConfig(ctx, desired)
9092
if err != nil {
91-
return nil, err
93+
return updatedStatusResource, err
9294
}
9395
}
9496
if delta.DifferentAt("Spec.CodeSigningConfigARN") {
9597
if desired.ko.Spec.PackageType != nil && *desired.ko.Spec.PackageType == "Image" &&
9698
desired.ko.Spec.CodeSigningConfigARN != nil && *desired.ko.Spec.CodeSigningConfigARN != "" {
97-
return nil, ackerr.NewTerminalError(ErrCannotSetFunctionCSC)
99+
return updatedStatusResource, ackerr.NewTerminalError(ErrCannotSetFunctionCSC)
98100
} else {
99101
err = rm.updateFunctionCodeSigningConfig(ctx, desired)
100102
if err != nil {
101-
return nil, err
103+
return updatedStatusResource, err
102104
}
103105
}
104106
}
@@ -112,9 +114,9 @@ func (rm *resourceManager) customUpdateFunction(
112114
err = rm.updateFunctionCode(ctx, desired, delta, latest)
113115
if err != nil {
114116
if strings.Contains(err.Error(), "Provide a valid source image.") {
115-
return nil, requeueWaitWhileSourceImageDoesNotExist
117+
return updatedStatusResource, requeueWaitWhileSourceImageDoesNotExist
116118
} else {
117-
return nil, err
119+
return updatedStatusResource, err
118120
}
119121
}
120122
case delta.DifferentExcept(
@@ -125,13 +127,13 @@ func (rm *resourceManager) customUpdateFunction(
125127
"Spec.CodeSigningConfigARN"):
126128
err = rm.updateFunctionConfiguration(ctx, desired, delta)
127129
if err != nil {
128-
return nil, err
130+
return updatedStatusResource, err
129131
}
130132
}
131133

132134
readOneLatest, err := rm.ReadOne(ctx, desired)
133135
if err != nil {
134-
return nil, err
136+
return updatedStatusResource, err
135137
}
136138
return rm.concreteResource(readOneLatest), nil
137139
}

pkg/resource/function/sdk.go

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

templates/hooks/function/sdk_read_one_post_set_output.go.tpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,5 @@
5151
ko.Spec.Tags = expectedOutput
5252
}
5353
if err := rm.setResourceAdditionalFields(ctx, ko); err != nil {
54-
return nil, err
55-
}
54+
return &resource{ko}, err
55+
}

0 commit comments

Comments
 (0)