From 4c7da02efaa0a82ee04e4d3e87c5a7cf510d9d09 Mon Sep 17 00:00:00 2001 From: Larry Huang Date: Wed, 29 Mar 2023 22:29:07 +0800 Subject: [PATCH 1/8] Add version_description to ec2_launch_template --- plugins/modules/ec2_launch_template.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plugins/modules/ec2_launch_template.py b/plugins/modules/ec2_launch_template.py index 17f345a2f7e..8f77bee9b08 100644 --- a/plugins/modules/ec2_launch_template.py +++ b/plugins/modules/ec2_launch_template.py @@ -38,6 +38,11 @@ - Which version should be the default when users spin up new instances based on this template? By default, the latest version will be made the default. type: str default: latest + version_description: + description: + - The description of a launch template version. + default: "" + type: str state: description: - Whether the launch template should exist or not. @@ -586,6 +591,7 @@ def create_or_update(module, template_options): LaunchTemplateId=template['LaunchTemplateId'], LaunchTemplateData=lt_data, ClientToken=uuid4().hex, + VersionDescription=str(module.params['version_description']), aws_retry=True, ) elif module.params.get('source_version') == 'latest': @@ -594,6 +600,7 @@ def create_or_update(module, template_options): LaunchTemplateData=lt_data, ClientToken=uuid4().hex, SourceVersion=str(most_recent['VersionNumber']), + VersionDescription=str(module.params['version_description']), aws_retry=True, ) else: @@ -610,6 +617,7 @@ def create_or_update(module, template_options): LaunchTemplateData=lt_data, ClientToken=uuid4().hex, SourceVersion=str(source_version['VersionNumber']), + VersionDescription=str(module.params['version_description']), aws_retry=True, ) @@ -786,7 +794,8 @@ def main(): template_name=dict(aliases=['name']), template_id=dict(aliases=['id']), default_version=dict(default='latest'), - source_version=dict(default='latest') + source_version=dict(default='latest'), + version_description=dict(default=''), ) arg_spec.update(template_options) From d704be327460528c3a22251dbfe7b98c67acf4bc Mon Sep 17 00:00:00 2001 From: Larry Huang Date: Sun, 2 Apr 2023 01:41:51 +0800 Subject: [PATCH 2/8] Add changelogs --- .../1763-ec2-launch-template-add-version-description.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 changelogs/fragments/1763-ec2-launch-template-add-version-description.yml diff --git a/changelogs/fragments/1763-ec2-launch-template-add-version-description.yml b/changelogs/fragments/1763-ec2-launch-template-add-version-description.yml new file mode 100644 index 00000000000..da83732ee11 --- /dev/null +++ b/changelogs/fragments/1763-ec2-launch-template-add-version-description.yml @@ -0,0 +1,2 @@ +minor_changes: + - ec2_launch_template - Add argument to config `VersionDescription` of a EC2 launch template. From 36a2bbedd2dc9b280501472e7d9f112cee14f993 Mon Sep 17 00:00:00 2001 From: Larry Huang Date: Sun, 2 Apr 2023 02:27:43 +0800 Subject: [PATCH 3/8] Add test --- .../ec2_launch_template/tasks/versions.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/integration/targets/ec2_launch_template/tasks/versions.yml b/tests/integration/targets/ec2_launch_template/tasks/versions.yml index e666b64e4b2..a9e40cd0843 100644 --- a/tests/integration/targets/ec2_launch_template/tasks/versions.yml +++ b/tests/integration/targets/ec2_launch_template/tasks/versions.yml @@ -69,6 +69,21 @@ - lt.latest_version == 4 - lt.latest_template.launch_template_data.instance_type == "c4.large" + - name: update simple instance template + ec2_launch_template: + name: "{{ resource_prefix }}-simple" + version_description: "Fix something." + register: lt + + - name: instance with cpu_options created with the right options + assert: + that: + - lt is success + - lt is changed + - lt.default_version == 5 + - lt.latest_version == 5 + - lt.latest_template.version_description == "Fix something." + always: - name: delete the template ec2_launch_template: From aa05413d4515a933392779a0d585d60f2d9ed9c6 Mon Sep 17 00:00:00 2001 From: Larry Huang Date: Sun, 2 Apr 2023 02:28:22 +0800 Subject: [PATCH 4/8] Compare version_description with previous version --- plugins/modules/ec2_launch_template.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/modules/ec2_launch_template.py b/plugins/modules/ec2_launch_template.py index 8f77bee9b08..f2e01fc74e8 100644 --- a/plugins/modules/ec2_launch_template.py +++ b/plugins/modules/ec2_launch_template.py @@ -582,7 +582,7 @@ def create_or_update(module, template_options): out['changed'] = True elif template and template_versions: most_recent = sorted(template_versions, key=lambda x: x['VersionNumber'])[-1] - if lt_data == most_recent['LaunchTemplateData']: + if lt_data == most_recent['LaunchTemplateData'] and module.params['version_description'] == most_recent['VersionDescription']: out['changed'] = False return out try: From 6117d14b4111aa08a5f7128badf2e8a985e980cc Mon Sep 17 00:00:00 2001 From: Larry Huang Date: Sun, 2 Apr 2023 13:53:42 +0800 Subject: [PATCH 5/8] Fix VersionDescription not existed --- plugins/modules/ec2_launch_template.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/plugins/modules/ec2_launch_template.py b/plugins/modules/ec2_launch_template.py index f2e01fc74e8..9942c2e800b 100644 --- a/plugins/modules/ec2_launch_template.py +++ b/plugins/modules/ec2_launch_template.py @@ -582,7 +582,10 @@ def create_or_update(module, template_options): out['changed'] = True elif template and template_versions: most_recent = sorted(template_versions, key=lambda x: x['VersionNumber'])[-1] - if lt_data == most_recent['LaunchTemplateData'] and module.params['version_description'] == most_recent['VersionDescription']: + if ( + lt_data == most_recent['LaunchTemplateData'] + and module.params['version_description'] == most_recent.get('VersionDescription', '') + ): out['changed'] = False return out try: From 9e5278d687315dd0629801a0bd4cdc27950b5d43 Mon Sep 17 00:00:00 2001 From: Markus Bergholz Date: Mon, 3 Apr 2023 09:37:14 +0200 Subject: [PATCH 6/8] Update plugins/modules/ec2_launch_template.py --- plugins/modules/ec2_launch_template.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/modules/ec2_launch_template.py b/plugins/modules/ec2_launch_template.py index 9942c2e800b..525b82dfd09 100644 --- a/plugins/modules/ec2_launch_template.py +++ b/plugins/modules/ec2_launch_template.py @@ -39,6 +39,7 @@ type: str default: latest version_description: + version_added: 5.5.0 description: - The description of a launch template version. default: "" From 3d937c8642b7c0f80dcbb38ddf5f1cb02705b2ee Mon Sep 17 00:00:00 2001 From: Markus Bergholz Date: Mon, 3 Apr 2023 09:39:16 +0200 Subject: [PATCH 7/8] Update changelogs/fragments/1763-ec2-launch-template-add-version-description.yml --- .../1763-ec2-launch-template-add-version-description.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelogs/fragments/1763-ec2-launch-template-add-version-description.yml b/changelogs/fragments/1763-ec2-launch-template-add-version-description.yml index da83732ee11..000c5994f42 100644 --- a/changelogs/fragments/1763-ec2-launch-template-add-version-description.yml +++ b/changelogs/fragments/1763-ec2-launch-template-add-version-description.yml @@ -1,2 +1,2 @@ minor_changes: - - ec2_launch_template - Add argument to config `VersionDescription` of a EC2 launch template. + - ec2_launch_template - Add parameter ``version_description`` (https://github.com/ansible-collections/community.aws/pull/1763). From 5cc56feb8dac251ab538a6efb0e342e92077a781 Mon Sep 17 00:00:00 2001 From: Larry Huang Date: Tue, 4 Apr 2023 17:09:29 +0800 Subject: [PATCH 8/8] Lint code by darker --- plugins/modules/ec2_launch_template.py | 29 +++++++++++++------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/plugins/modules/ec2_launch_template.py b/plugins/modules/ec2_launch_template.py index 525b82dfd09..b807d3aa09f 100644 --- a/plugins/modules/ec2_launch_template.py +++ b/plugins/modules/ec2_launch_template.py @@ -582,10 +582,9 @@ def create_or_update(module, template_options): template, template_versions = existing_templates(module) out['changed'] = True elif template and template_versions: - most_recent = sorted(template_versions, key=lambda x: x['VersionNumber'])[-1] - if ( - lt_data == most_recent['LaunchTemplateData'] - and module.params['version_description'] == most_recent.get('VersionDescription', '') + most_recent = sorted(template_versions, key=lambda x: x["VersionNumber"])[-1] + if lt_data == most_recent["LaunchTemplateData"] and module.params["version_description"] == most_recent.get( + "VersionDescription", "" ): out['changed'] = False return out @@ -595,7 +594,7 @@ def create_or_update(module, template_options): LaunchTemplateId=template['LaunchTemplateId'], LaunchTemplateData=lt_data, ClientToken=uuid4().hex, - VersionDescription=str(module.params['version_description']), + VersionDescription=str(module.params["version_description"]), aws_retry=True, ) elif module.params.get('source_version') == 'latest': @@ -603,8 +602,8 @@ def create_or_update(module, template_options): LaunchTemplateId=template['LaunchTemplateId'], LaunchTemplateData=lt_data, ClientToken=uuid4().hex, - SourceVersion=str(most_recent['VersionNumber']), - VersionDescription=str(module.params['version_description']), + SourceVersion=str(most_recent["VersionNumber"]), + VersionDescription=str(module.params["version_description"]), aws_retry=True, ) else: @@ -620,8 +619,8 @@ def create_or_update(module, template_options): LaunchTemplateId=template['LaunchTemplateId'], LaunchTemplateData=lt_data, ClientToken=uuid4().hex, - SourceVersion=str(source_version['VersionNumber']), - VersionDescription=str(module.params['version_description']), + SourceVersion=str(source_version["VersionNumber"]), + VersionDescription=str(module.params["version_description"]), aws_retry=True, ) @@ -794,12 +793,12 @@ def main(): ) arg_spec = dict( - state=dict(choices=['present', 'absent'], default='present'), - template_name=dict(aliases=['name']), - template_id=dict(aliases=['id']), - default_version=dict(default='latest'), - source_version=dict(default='latest'), - version_description=dict(default=''), + state=dict(choices=["present", "absent"], default="present"), + template_name=dict(aliases=["name"]), + template_id=dict(aliases=["id"]), + default_version=dict(default="latest"), + source_version=dict(default="latest"), + version_description=dict(default=""), ) arg_spec.update(template_options)