Skip to content

Commit 48ce803

Browse files
authored
Add sync functionality to re-queue until the Status is Active (#65)
Re-queue when function `State` is not `Active` By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
1 parent c84b72a commit 48ce803

File tree

5 files changed

+74
-2
lines changed

5 files changed

+74
-2
lines changed
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
ack_generate_info:
2-
build_date: "2022-11-04T23:25:04Z"
2+
build_date: "2022-11-16T21:25:40Z"
33
build_hash: 7cd74c3a855e38ea3fb5e1cf40b26fbe96283870
44
go_version: go1.19
55
version: v0.19.3-15-g7cd74c3-dirty
66
api_directory_checksum: f01a03847a7bb58e935fdca90ecfb910f645ea61
77
api_version: v1alpha1
88
aws_sdk_go_version: v1.44.93
99
generator_config_info:
10-
file_checksum: 8c3d1a125902512d09de13f6ff4337e07a5518f0
10+
file_checksum: ea74be1ffb53a2cc383f2a741d46c8facad26df0
1111
original_file_name: generator.yaml
1212
last_modification:
1313
reason: API generation

apis/v1alpha1/generator.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ ignore:
77
# FunctionUrlConfig
88
resources:
99
Function:
10+
synced:
11+
when:
12+
- path: Status.State
13+
in: [ "Active" ]
1014
fields:
1115
Code.S3Bucket:
1216
references:

generator.yaml

+4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ ignore:
77
# FunctionUrlConfig
88
resources:
99
Function:
10+
synced:
11+
when:
12+
- path: Status.State
13+
in: [ "Active" ]
1014
fields:
1115
Code.S3Bucket:
1216
references:

pkg/resource/function/manager.go

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/e2e/tests/test_function.py

+56
Original file line numberDiff line numberDiff line change
@@ -420,3 +420,59 @@ def test_function_package_type_image_with_signing_config(self, lambda_client):
420420

421421
# Check Lambda function doesn't exist
422422
assert not lambda_validator.function_exists(resource_name)
423+
424+
def test_function_is_synced(self, lambda_client):
425+
resource_name = random_suffix_name("lambda-function", 24)
426+
427+
resources = get_bootstrap_resources()
428+
logging.debug(resources)
429+
430+
replacements = REPLACEMENT_VALUES.copy()
431+
replacements["FUNCTION_NAME"] = resource_name
432+
replacements["BUCKET_NAME"] = resources.FunctionsBucket.name
433+
replacements["LAMBDA_ROLE"] = resources.BasicRole.arn
434+
replacements["LAMBDA_FILE_NAME"] = LAMBDA_FUNCTION_FILE_ZIP
435+
replacements["RESERVED_CONCURRENT_EXECUTIONS"] = "0"
436+
replacements["CODE_SIGNING_CONFIG_ARN"] = ""
437+
replacements["AWS_REGION"] = get_region()
438+
439+
# Load Lambda CR
440+
resource_data = load_lambda_resource(
441+
"function",
442+
additional_replacements=replacements,
443+
)
444+
logging.debug(resource_data)
445+
446+
# Create k8s resource
447+
ref = k8s.CustomResourceReference(
448+
CRD_GROUP, CRD_VERSION, RESOURCE_PLURAL,
449+
resource_name, namespace="default",
450+
)
451+
k8s.create_custom_resource(ref, resource_data)
452+
cr = k8s.wait_resource_consumed_by_controller(ref)
453+
454+
assert cr is not None
455+
assert k8s.get_resource_exists(ref)
456+
457+
time.sleep(CREATE_WAIT_AFTER_SECONDS*3)
458+
459+
cr = k8s.wait_resource_consumed_by_controller(ref)
460+
461+
lambda_validator = LambdaValidator(lambda_client)
462+
# Check Lambda function exists
463+
assert lambda_validator.function_exists(resource_name)
464+
465+
assert cr["status"]["state"] == "Active"
466+
467+
function = lambda_validator.get_function(resource_name)
468+
assert function is not None
469+
assert function["Configuration"]["State"] == "Active"
470+
471+
# Delete k8s resource
472+
_, deleted = k8s.delete_custom_resource(ref)
473+
assert deleted is True
474+
475+
time.sleep(DELETE_WAIT_AFTER_SECONDS)
476+
477+
# Check Lambda function doesn't exist
478+
assert not lambda_validator.function_exists(resource_name)

0 commit comments

Comments
 (0)