diff --git a/pkg/tags/sync.go b/pkg/tags/sync.go index c3cb621..2a7fef1 100644 --- a/pkg/tags/sync.go +++ b/pkg/tags/sync.go @@ -86,7 +86,7 @@ func SyncTags( } } - for k, _ := range existingTags { + for k := range existingTags { if _, found := desiredTags[k]; !found { deleteKey := k toDelete = append(toDelete, deleteKey) @@ -136,7 +136,7 @@ func addTags( exit := rlog.Trace("rm.addTag") defer func() { exit(err) }() - sdkTags := []svcsdktypes.Tag{} + sdkTags := toSdkTags(tags) input := &svcsdk.TagResourceInput{ ResourceId: &resourceID, Tags: sdkTags, @@ -166,3 +166,11 @@ func removeTags( mr.RecordAPICall("UPDATE", "UntagResource", err) return err } + +func toSdkTags(tags map[string]*string) []svcsdktypes.Tag { + sdkTags := []svcsdktypes.Tag{} + for key, val := range tags { + sdkTags = append(sdkTags, svcsdktypes.Tag{Key: &key, Value: val}) + } + return sdkTags +} diff --git a/test/e2e/tests/test_file_system.py b/test/e2e/tests/test_file_system.py index 6c8f749..95a7e5e 100644 --- a/test/e2e/tests/test_file_system.py +++ b/test/e2e/tests/test_file_system.py @@ -20,6 +20,7 @@ import json from acktest.resources import random_suffix_name +from acktest import tags from acktest.k8s import resource as k8s from e2e import service_marker, CRD_GROUP, CRD_VERSION, load_efs_resource @@ -179,4 +180,37 @@ def test_update_lifecycle_policies(self, efs_client, simple_file_system): lfps = validator.get_file_system_lifecycle_policy(file_system_id) assert lfps is not None - assert lfps[0]['TransitionToIA'] == "AFTER_30_DAYS" \ No newline at end of file + assert lfps[0]['TransitionToIA'] == "AFTER_30_DAYS" + + def test_update_tags(self, efs_client, simple_file_system): + (ref, _, file_system_id) = simple_file_system + assert file_system_id is not None + + validator = EFSValidator(efs_client) + assert validator.file_system_exists(file_system_id) + + desired_tags = [{ + "key": "Name", + "value": "foobar" + }] + updates = { + "spec": { + "tags": desired_tags, + }, + } + k8s.patch_custom_resource(ref, updates) + time.sleep(UPDATE_WAIT_AFTER_SECONDS) + + fs = validator.get_file_system(file_system_id) + assert fs is not None + latest_tags = fs['FileSystems'][0]["Tags"] + + tags.assert_ack_system_tags( + tags=latest_tags + ) + + desired_tags = [{"Key": d["key"], "Value": d["value"]} for d in desired_tags] + tags.assert_equal_without_ack_tags( + expected=desired_tags, + actual=latest_tags + ) \ No newline at end of file