From cb4493ad20b67732a68db60af89901f43b75bc75 Mon Sep 17 00:00:00 2001 From: Alina Buzachis Date: Thu, 7 Sep 2023 13:44:04 +0200 Subject: [PATCH] More fixes Signed-off-by: Alina Buzachis --- plugins/module_utils/ec2.py | 9 +++++---- plugins/modules/ec2_import_image.py | 18 ++++++++++-------- plugins/modules/ec2_import_image_info.py | 12 ++++++------ 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/plugins/module_utils/ec2.py b/plugins/module_utils/ec2.py index fa02d76bcaa..b110c9c4ee0 100644 --- a/plugins/module_utils/ec2.py +++ b/plugins/module_utils/ec2.py @@ -316,10 +316,11 @@ def helper_describe_import_image_tasks(client, module, **params): def ensure_ec2_import_image_result(module, import_image_info): - result = {"import_image": {}} + result = {"import_image": []} - import_image_info["Tags"] = boto3_tag_list_to_ansible_dict(import_image_info["Tags"]) - result["import_image"] = camel_dict_to_snake_dict(import_image_info) - result["import_image"]["task_name"] = module.params["task_name"] + if import_image_info: + for image in import_image_info: + image["Tags"] = boto3_tag_list_to_ansible_dict(image["Tags"]) + result["import_image"].append(camel_dict_to_snake_dict(image, ignore_list=['Tags'])) return result diff --git a/plugins/modules/ec2_import_image.py b/plugins/modules/ec2_import_image.py index 3683ee35b9a..f533f768ec3 100644 --- a/plugins/modules/ec2_import_image.py +++ b/plugins/modules/ec2_import_image.py @@ -258,6 +258,7 @@ from ansible_collections.amazon.aws.plugins.module_utils.tagging import boto3_tag_specifications from ansible_collections.amazon.aws.plugins.module_utils.ec2 import helper_describe_import_image_tasks from ansible_collections.amazon.aws.plugins.module_utils.ec2 import ensure_ec2_import_image_result +from ansible.module_utils.common.dict_transformations import snake_dict_to_camel_dict def absent(): @@ -267,7 +268,7 @@ def absent(): filters = { "Filters": [ - {"Name": "name", "Values": [module.params["task_name"]]}, + {"Name": "tag:Name", "Values": [module.params["task_name"]]}, {"Name": "task-state", "Values": ["active"]}, ] } @@ -293,7 +294,7 @@ def absent(): else: module.exit_json(changed=False, msg="The specified import task does not exist or it cannot be cancelled") - module.exit_json(changed=True, **ensure_ec2_import_image_result(module, result)) + module.exit_json(changed=True, **ensure_ec2_import_image_result(module, import_image_info)) def present(): @@ -304,11 +305,11 @@ def present(): if module.params.get("architecture"): params["Architecture"] = module.params["architecture"] if module.params.get("client_data"): - params["ClientData"] = module.params["client_data"] + params["ClientData"] = snake_dict_to_camel_dict(module.params["client_data"], capitalize_first=True) if module.params.get("description"): params["Description"] = module.params["description"] if module.params.get("disk_containers"): - params["DiskContainers"] = module.params["disk_containers"] + params["DiskContainers"] = snake_dict_to_camel_dict(module.params["disk_containers"], capitalize_first=True) if module.params.get("encrypted"): params["Encrypted"] = module.params["encrypted"] if module.params.get("hypervisor"): @@ -322,7 +323,7 @@ def present(): if module.params.get("role_name"): params["RoleName"] = module.params["role_name"] if module.params.get("license_specifications"): - params["LicenseSpecifications"] = module.params["license_specifications"] + params["LicenseSpecifications"] = snake_dict_to_camel_dict(module.params["license_specifications"], capitalize_first=True) if module.params.get("usage_operation"): params["UsageOperation"] = module.params["usage_operation"] if module.params.get("boot_mode"): @@ -334,18 +335,18 @@ def present(): filters = { "Filters": [ - {"Name": "name", "Values": [module.params["task_name"]]}, + {"Name": "tag:Name", "Values": [module.params["task_name"]]}, {"Name": "task-state", "Values": ["completed", "active", "deleting"]}, ] } import_image_info = helper_describe_import_image_tasks(client, module, **filters) if import_image_info: - # Import tasks cannot be modified + import_image_info[0]["TaskName"] = module.params["task_name"] module.exit_json( changed=False, msg="An import task with the specified name already exists", - **ensure_ec2_import_image_result(module, result), + **ensure_ec2_import_image_result(module, import_image_info), ) else: if module.check_mode: @@ -354,6 +355,7 @@ def present(): try: client.import_image(aws_retry=True, **params) import_image_info = helper_describe_import_image_tasks(client, module, **filters) + import_image_info[0]["TaskName"] = module.params["task_name"] except (botocore.exceptions.ClientError, botocore.exceptions.BotoCoreError) as e: module.fail_json_aws(e, msg="Failed to import the image") diff --git a/plugins/modules/ec2_import_image_info.py b/plugins/modules/ec2_import_image_info.py index e594bed41ca..1c918178fac 100644 --- a/plugins/modules/ec2_import_image_info.py +++ b/plugins/modules/ec2_import_image_info.py @@ -181,17 +181,17 @@ def main(): ) module = AnsibleAWSModule(argument_spec=argument_spec, supports_check_mode=True) - client = module.client("ec2", retry_decorator=AWSRetry.jittered_backoff()) + params = {} - params = { - "Filters": module.params["filters"], - "ImportTaskIds": module.params["import_task_ids"], - } + if module.params.get("filters"): + params["Filters"] = module.params["filters"] + if module.params.get("import_task_ids"): + params["ImportTaskIds"] = module.params["import_task_ids"] import_image_info = helper_describe_import_image_tasks(client, module, **params) - module.exit_json(import_image=ensure_ec2_import_image_result(import_image_info)) + module.exit_json(**ensure_ec2_import_image_result(module, import_image_info)) if __name__ == "__main__":