Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor s3_object module to reduce complexity #1193

Conversation

GomathiselviS
Copy link
Contributor

Signed-off-by: GomathiselviS gomathiselvi@gmail.com

SUMMARY
ISSUE TYPE
  • Bugfix Pull Request
  • Docs Pull Request
  • Feature Pull Request
  • New Module Pull Request
COMPONENT NAME
ADDITIONAL INFORMATION

@GomathiselviS GomathiselviS marked this pull request as draft October 21, 2022 22:24
@softwarefactory-project-zuul
Copy link
Contributor

Merge Failed.

This change or one of its cross-repo dependencies was unable to be automatically merged with the current state of its repository. Please rebase the change and upload a new patchset.
Warning:
Error merging github.com/ansible-collections/amazon.aws for 1193,db03ba4024c31d8f3dbb64405bb1a618356a2d6b

@ansibullbot
Copy link

@ansibullbot ansibullbot added WIP Work in progress bug This issue/PR relates to a bug module module needs_rebase https://docs.ansible.com/ansible/devel/dev_guide/developing_rebasing.html needs_triage plugins plugin (any type) labels Oct 21, 2022
@ansibullbot ansibullbot added integration tests/integration tests tests and removed needs_rebase https://docs.ansible.com/ansible/devel/dev_guide/developing_rebasing.html labels Oct 24, 2022
@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 04s
✔️ build-ansible-collection SUCCESS in 5m 28s
ansible-test-sanity-aws-ansible-python38 FAILURE in 9m 37s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 8m 47s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 11m 01s
✔️ ansible-test-units-amazon-aws-python36 SUCCESS in 6m 10s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 23s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 7m 17s
✔️ cloud-tox-py3 SUCCESS in 3m 01s
✔️ ansible-test-splitter SUCCESS in 2m 32s
integration-amazon.aws-1 FAILURE in 6m 48s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-community.aws-1 SKIPPED
⚠️ integration-community.aws-2 SKIPPED
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
ansible-test-changelog FAILURE in 2m 20s

@GomathiselviS GomathiselviS marked this pull request as ready for review October 24, 2022 20:55
@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 30s
✔️ build-ansible-collection SUCCESS in 5m 34s
ansible-test-sanity-aws-ansible-python38 FAILURE in 8m 53s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 10m 18s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 10m 45s
✔️ ansible-test-units-amazon-aws-python36 SUCCESS in 7m 25s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 7m 36s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 5m 19s
✔️ cloud-tox-py3 SUCCESS in 4m 00s
✔️ ansible-test-splitter SUCCESS in 2m 54s
integration-amazon.aws-1 FAILURE in 13m 10s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-community.aws-1 SKIPPED
⚠️ integration-community.aws-2 SKIPPED
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
✔️ ansible-test-changelog SUCCESS in 2m 24s

plugins/modules/s3_object.py Outdated Show resolved Hide resolved
plugins/modules/s3_object.py Outdated Show resolved Hide resolved
Comment on lines 485 to 486
else:
local_last_modified = os.path.getmtime(local_file)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
else:
local_last_modified = os.path.getmtime(local_file)
local_last_modified = os.path.getmtime(local_file)

def s3_object_do_get(module, connection, s3_vars):

keyrtn = key_check(module, connection, s3_vars.bucket, s3_vars.object, version=s3_vars.version, validate=s3_vars.validate)
if keyrtn is False:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if keyrtn is False:
if not keyrtn:

Comment on lines 963 to 964
else:
module.fail_json(msg="Key %s does not exist." % s3_vars.object)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
else:
module.fail_json(msg="Key %s does not exist." % s3_vars.object)
module.fail_json(msg="Key %s does not exist." % s3_vars.object)

Comment on lines +1030 to +1380
else:
module.fail_json(msg="Bucket parameter is required.")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
else:
module.fail_json(msg="Bucket parameter is required.")
module.fail_json(msg="Bucket parameter is required.")

Comment on lines 1027 to 1029
if s3_vars.bucket:
if delete_key(module, connection, s3_vars.bucket, s3_vars.object):
module.exit_json(msg="Object deleted from bucket %s." % s3_vars.bucket, changed=True)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if s3_vars.bucket:
if delete_key(module, connection, s3_vars.bucket, s3_vars.object):
module.exit_json(msg="Object deleted from bucket %s." % s3_vars.bucket, changed=True)
if s3_vars.bucket and delete_key(module, connection, s3_vars.bucket, s3_vars.object):
module.exit_json(msg="Object deleted from bucket %s." % s3_vars.bucket, changed=True)

Comment on lines 1036 to 1038
if s3_vars.bucket:
if delete_bucket(module, connection, s3_vars.bucket):
module.exit_json(msg="Bucket %s and all keys have been deleted." % s3_vars.bucket, changed=True)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if s3_vars.bucket:
if delete_bucket(module, connection, s3_vars.bucket):
module.exit_json(msg="Bucket %s and all keys have been deleted." % s3_vars.bucket, changed=True)
if s3_vars.bucket and delete_bucket(module, connection, s3_vars.bucket):
module.exit_json(msg="Bucket %s and all keys have been deleted." % s3_vars.bucket, changed=True)

Comment on lines 1039 to 1385
else:
module.fail_json(msg="Bucket parameter is required.")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
else:
module.fail_json(msg="Bucket parameter is required.")
module.fail_json(msg="Bucket parameter is required.")

Comment on lines 1058 to 1061
else:
# only use valid bucket acls when creating the bucket
s3_vars.permission = s3_vars.bucket_acl
module.exit_json(msg="Bucket created successfully", changed=create_bucket(module, connection, s3_vars.bucket, s3_vars.location))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
else:
# only use valid bucket acls when creating the bucket
s3_vars.permission = s3_vars.bucket_acl
module.exit_json(msg="Bucket created successfully", changed=create_bucket(module, connection, s3_vars.bucket, s3_vars.location))
# only use valid bucket acls when creating the bucket
s3_vars.permission = s3_vars.bucket_acl
module.exit_json(msg="Bucket created successfully", changed=create_bucket(module, connection, s3_vars.bucket, s3_vars.location))

Copy link
Contributor

@tremble tremble left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking at the tox report there's still a fair bit of code which could do with being hacked apart. Generally liking the work so far though.

@@ -680,14 +701,15 @@ def upload_s3file(module, s3, bucket, obj, expiry, metadata, encrypt, headers, s

if 'ContentType' not in extra:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This stanza is a good candidate for breaking out into its own function

def upload_s3file(
module, s3, bucket, obj, expiry, metadata, encrypt, headers,
src=None, content=None, acl_disabled=False
):
Copy link
Contributor

@tremble tremble Oct 25, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lines 680 through 683 look to be repeated in a couple of places, they'd be a good candidate for pulling out into their own function (generating the common encryption params)

Same goes for lines 684 through 693 (generating the metadata params)

Comment on lines 621 to 705
for acl in module.params.get('permission'):
s3.put_object_acl(ACL=acl, Bucket=bucket, Key=obj)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This little for loop is repeated in multiple places, it, and its try/except is_boto3_error_code('AccessControlListNotSupported'): would be good candidates to pull out into their own little function

Comment on lines 641 to 642

url = put_download_url(module, s3, bucket, obj, expiry)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This call duplicates the try/except block above it. The try/except block above (lines 635 through 640) should probably be removed

@GomathiselviS GomathiselviS changed the title WIP: Refactor s3_object module to reduce complexity Refactor s3_object module to reduce complexity Oct 25, 2022
@ansibullbot ansibullbot added community_review and removed WIP Work in progress labels Oct 25, 2022
plugins/modules/s3_object.py Outdated Show resolved Hide resolved
except botocore.exceptions.EndpointConnectionError as e: # pylint: disable=duplicate-except
module.fail_json_aws(e, msg="Invalid endpoint provided")
except (botocore.exceptions.BotoCoreError, botocore.exceptions.ClientError) as e: # pylint: disable=duplicate-except
module.fail_json_aws(e, msg="Failed while looking up bucket (during bucket_check) %s." % bucket)
module.fail_json_aws(e,
msg="Failed while looking up bucket (during bucket_check) %s." % bucket)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

exists is never changed. You can just drop the variable and end with return True.

@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 12s
✔️ build-ansible-collection SUCCESS in 4m 53s
ansible-test-sanity-aws-ansible-python38 FAILURE in 9m 00s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 10m 23s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 10m 45s
ansible-test-units-amazon-aws-python36 FAILURE in 7m 02s
ansible-test-units-amazon-aws-python38 FAILURE in 5m 50s
ansible-test-units-amazon-aws-python39 FAILURE in 5m 57s
✔️ cloud-tox-py3 SUCCESS in 3m 04s
✔️ ansible-test-splitter SUCCESS in 2m 45s
integration-amazon.aws-1 FAILURE in 8m 36s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-community.aws-1 SKIPPED
⚠️ integration-community.aws-2 SKIPPED
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
✔️ ansible-test-changelog SUCCESS in 2m 15s

@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 42s
✔️ build-ansible-collection SUCCESS in 5m 20s
ansible-test-sanity-aws-ansible-python38 FAILURE in 9m 43s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 10m 26s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 9m 39s
ansible-test-sanity-aws-ansible-2.14 FAILURE in 9m 11s
✔️ ansible-test-units-amazon-aws-python36 SUCCESS in 7m 11s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 09s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 6m 42s
✔️ cloud-tox-py3 SUCCESS in 3m 06s
✔️ ansible-test-splitter SUCCESS in 2m 31s
integration-amazon.aws-1 FAILURE in 15m 42s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-community.aws-1 SKIPPED
⚠️ integration-community.aws-2 SKIPPED
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
✔️ ansible-test-changelog SUCCESS in 3m 03s

Copy link
Member

@goneri goneri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor comments

@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 12s
✔️ build-ansible-collection SUCCESS in 5m 00s
ansible-test-sanity-aws-ansible-python38 FAILURE in 10m 04s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 10m 34s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 9m 45s
ansible-test-sanity-aws-ansible-2.14 FAILURE in 9m 08s
✔️ ansible-test-units-amazon-aws-python36 SUCCESS in 6m 28s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 5m 30s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 6m 01s
✔️ cloud-tox-py3 SUCCESS in 4m 14s
✔️ ansible-test-splitter SUCCESS in 2m 36s
✔️ integration-amazon.aws-1 SUCCESS in 11m 00s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-amazon.aws-19 SKIPPED
⚠️ integration-amazon.aws-20 SKIPPED
⚠️ integration-amazon.aws-21 SKIPPED
⚠️ integration-amazon.aws-22 SKIPPED
⚠️ integration-community.aws-1 SKIPPED
⚠️ integration-community.aws-2 SKIPPED
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
⚠️ integration-community.aws-19 SKIPPED
⚠️ integration-community.aws-20 SKIPPED
⚠️ integration-community.aws-21 SKIPPED
⚠️ integration-community.aws-22 SKIPPED
✔️ ansible-test-changelog SUCCESS in 2m 27s

@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 3m 43s
✔️ build-ansible-collection SUCCESS in 5m 56s
ansible-test-sanity-aws-ansible-python38 FAILURE in 9m 13s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 10m 20s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 9m 12s
ansible-test-sanity-aws-ansible-2.14 FAILURE in 9m 47s
✔️ ansible-test-units-amazon-aws-python36 SUCCESS in 8m 07s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 12s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 7m 24s
✔️ cloud-tox-py3 SUCCESS in 4m 18s
✔️ ansible-test-splitter SUCCESS in 3m 02s
✔️ integration-amazon.aws-1 SUCCESS in 9m 52s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-amazon.aws-19 SKIPPED
⚠️ integration-amazon.aws-20 SKIPPED
⚠️ integration-amazon.aws-21 SKIPPED
⚠️ integration-amazon.aws-22 SKIPPED
⚠️ integration-community.aws-1 SKIPPED
⚠️ integration-community.aws-2 SKIPPED
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
⚠️ integration-community.aws-19 SKIPPED
⚠️ integration-community.aws-20 SKIPPED
⚠️ integration-community.aws-21 SKIPPED
⚠️ integration-community.aws-22 SKIPPED
✔️ ansible-test-changelog SUCCESS in 2m 24s

@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 6m 54s
✔️ build-ansible-collection SUCCESS in 8m 20s
ansible-test-sanity-aws-ansible-python38 FAILURE in 10m 58s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 11m 23s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 12m 22s
ansible-test-sanity-aws-ansible-2.14 FAILURE in 11m 18s
✔️ ansible-test-units-amazon-aws-python36 SUCCESS in 6m 57s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 47s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 7m 05s
✔️ cloud-tox-py3 SUCCESS in 4m 22s
✔️ ansible-test-splitter SUCCESS in 5m 41s
✔️ integration-amazon.aws-1 SUCCESS in 10m 06s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-amazon.aws-19 SKIPPED
⚠️ integration-amazon.aws-20 SKIPPED
⚠️ integration-amazon.aws-21 SKIPPED
⚠️ integration-amazon.aws-22 SKIPPED
✔️ integration-community.aws-1 SUCCESS in 24m 12s
⚠️ integration-community.aws-2 SKIPPED
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
⚠️ integration-community.aws-19 SKIPPED
⚠️ integration-community.aws-20 SKIPPED
⚠️ integration-community.aws-21 SKIPPED
⚠️ integration-community.aws-22 SKIPPED
✔️ ansible-test-changelog SUCCESS in 5m 16s

@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 17s
✔️ build-ansible-collection SUCCESS in 4m 54s
ansible-test-sanity-aws-ansible-python38 FAILURE in 9m 53s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 10m 22s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 9m 57s
ansible-test-sanity-aws-ansible-2.14 FAILURE in 9m 49s
✔️ ansible-test-units-amazon-aws-python36 SUCCESS in 6m 06s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 22s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 8m 19s
✔️ cloud-tox-py3 SUCCESS in 3m 03s
✔️ ansible-test-splitter SUCCESS in 3m 09s
✔️ integration-amazon.aws-1 SUCCESS in 12m 03s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-amazon.aws-19 SKIPPED
⚠️ integration-amazon.aws-20 SKIPPED
⚠️ integration-amazon.aws-21 SKIPPED
⚠️ integration-amazon.aws-22 SKIPPED
⚠️ integration-community.aws-1 SKIPPED
⚠️ integration-community.aws-2 SKIPPED
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
⚠️ integration-community.aws-19 SKIPPED
⚠️ integration-community.aws-20 SKIPPED
⚠️ integration-community.aws-21 SKIPPED
⚠️ integration-community.aws-22 SKIPPED
✔️ ansible-test-changelog SUCCESS in 2m 15s

return content_type


def get_extra_params(module, encrypt, metadata=None):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You pass the whole module object just to access module.params['encryption_mode'] and module.params['encryption_kms_key_id']. I think it would be more elegant to just pass these 2 keys through the function arguments. This way you've got a better control on your function inputs.

Copy link
Member

@goneri goneri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job, thanks! This being said, the PR is rather long and a second review is welcome.

Signed-off-by: GomathiselviS <gomathiselvi@gmail.com>

Separate functions for each action

removed unwanted file

try/except block refactor

 Address review comments

Fixed indentation

Fix pep8 failures

Unit tests

Added more unit tests

Formatted

Fixed whitespace error
@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 07s
✔️ build-ansible-collection SUCCESS in 5m 18s
ansible-test-sanity-aws-ansible-python38 FAILURE in 9m 10s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 10m 19s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 8m 30s
ansible-test-sanity-aws-ansible-2.14 FAILURE in 9m 13s
✔️ ansible-test-units-amazon-aws-python36 SUCCESS in 5m 54s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 10s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 6m 08s
✔️ cloud-tox-py3 SUCCESS in 3m 12s
✔️ ansible-test-splitter SUCCESS in 2m 48s
✔️ integration-amazon.aws-1 SUCCESS in 10m 21s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-amazon.aws-19 SKIPPED
⚠️ integration-amazon.aws-20 SKIPPED
⚠️ integration-amazon.aws-21 SKIPPED
⚠️ integration-amazon.aws-22 SKIPPED
✔️ integration-community.aws-1 SUCCESS in 7m 46s
✔️ integration-community.aws-2 SUCCESS in 22m 45s
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
⚠️ integration-community.aws-19 SKIPPED
⚠️ integration-community.aws-20 SKIPPED
⚠️ integration-community.aws-21 SKIPPED
⚠️ integration-community.aws-22 SKIPPED
✔️ ansible-test-changelog SUCCESS in 2m 22s

@softwarefactory-project-zuul
Copy link
Contributor

Build succeeded.

✔️ ansible-galaxy-importer SUCCESS in 4m 27s
✔️ build-ansible-collection SUCCESS in 5m 06s
✔️ ansible-test-sanity-aws-ansible-python38 SUCCESS in 9m 07s
✔️ ansible-test-sanity-aws-ansible-2.12-python38 SUCCESS in 8m 58s
✔️ ansible-test-sanity-aws-ansible-2.13-python38 SUCCESS in 9m 33s
✔️ ansible-test-sanity-aws-ansible-2.14 SUCCESS in 8m 54s
✔️ ansible-test-units-amazon-aws-python36 SUCCESS in 6m 24s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 48s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 6m 00s
✔️ cloud-tox-py3 SUCCESS in 3m 21s
✔️ ansible-test-splitter SUCCESS in 2m 45s
✔️ integration-amazon.aws-1 SUCCESS in 11m 05s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-amazon.aws-19 SKIPPED
⚠️ integration-amazon.aws-20 SKIPPED
⚠️ integration-amazon.aws-21 SKIPPED
⚠️ integration-amazon.aws-22 SKIPPED
✔️ integration-community.aws-1 SUCCESS in 7m 50s
✔️ integration-community.aws-2 SUCCESS in 21m 54s
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
⚠️ integration-community.aws-19 SKIPPED
⚠️ integration-community.aws-20 SKIPPED
⚠️ integration-community.aws-21 SKIPPED
⚠️ integration-community.aws-22 SKIPPED
✔️ ansible-test-changelog SUCCESS in 2m 23s

Copy link
Member

@gravesm gravesm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work!

@GomathiselviS GomathiselviS dismissed abikouo’s stale review November 3, 2022 19:13

Since there are 2 approvals, the PR is ready to merge. And the change that was requested has been done.

@GomathiselviS GomathiselviS added the mergeit Merge the PR (SoftwareFactory) label Nov 3, 2022
@softwarefactory-project-zuul
Copy link
Contributor

Build succeeded (gate pipeline).

✔️ ansible-galaxy-importer SUCCESS in 4m 33s
✔️ build-ansible-collection SUCCESS in 5m 46s
✔️ ansible-test-sanity-aws-ansible-python38 SUCCESS in 9m 25s
✔️ ansible-test-sanity-aws-ansible-2.12-python38 SUCCESS in 10m 05s
✔️ ansible-test-sanity-aws-ansible-2.13-python38 SUCCESS in 9m 36s
✔️ ansible-test-sanity-aws-ansible-2.14 SUCCESS in 12m 22s
✔️ ansible-test-units-amazon-aws-python36 SUCCESS in 6m 21s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 29s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 6m 35s
✔️ cloud-tox-py3 SUCCESS in 3m 15s
✔️ ansible-test-splitter SUCCESS in 2m 36s
✔️ integration-amazon.aws-1 SUCCESS in 10m 39s
⚠️ integration-amazon.aws-2 SKIPPED
⚠️ integration-amazon.aws-3 SKIPPED
⚠️ integration-amazon.aws-4 SKIPPED
⚠️ integration-amazon.aws-5 SKIPPED
⚠️ integration-amazon.aws-6 SKIPPED
⚠️ integration-amazon.aws-7 SKIPPED
⚠️ integration-amazon.aws-8 SKIPPED
⚠️ integration-amazon.aws-9 SKIPPED
⚠️ integration-amazon.aws-10 SKIPPED
⚠️ integration-amazon.aws-11 SKIPPED
⚠️ integration-amazon.aws-12 SKIPPED
⚠️ integration-amazon.aws-13 SKIPPED
⚠️ integration-amazon.aws-14 SKIPPED
⚠️ integration-amazon.aws-15 SKIPPED
⚠️ integration-amazon.aws-16 SKIPPED
⚠️ integration-amazon.aws-17 SKIPPED
⚠️ integration-amazon.aws-18 SKIPPED
⚠️ integration-amazon.aws-19 SKIPPED
⚠️ integration-amazon.aws-20 SKIPPED
⚠️ integration-amazon.aws-21 SKIPPED
⚠️ integration-amazon.aws-22 SKIPPED
⚠️ integration-community.aws-1 SKIPPED
⚠️ integration-community.aws-2 SKIPPED
⚠️ integration-community.aws-3 SKIPPED
⚠️ integration-community.aws-4 SKIPPED
⚠️ integration-community.aws-5 SKIPPED
⚠️ integration-community.aws-6 SKIPPED
⚠️ integration-community.aws-7 SKIPPED
⚠️ integration-community.aws-8 SKIPPED
⚠️ integration-community.aws-9 SKIPPED
⚠️ integration-community.aws-10 SKIPPED
⚠️ integration-community.aws-11 SKIPPED
⚠️ integration-community.aws-12 SKIPPED
⚠️ integration-community.aws-13 SKIPPED
⚠️ integration-community.aws-14 SKIPPED
⚠️ integration-community.aws-15 SKIPPED
⚠️ integration-community.aws-16 SKIPPED
⚠️ integration-community.aws-17 SKIPPED
⚠️ integration-community.aws-18 SKIPPED
⚠️ integration-community.aws-19 SKIPPED
⚠️ integration-community.aws-20 SKIPPED
⚠️ integration-community.aws-21 SKIPPED
⚠️ integration-community.aws-22 SKIPPED
✔️ ansible-test-changelog SUCCESS in 2m 27s

@softwarefactory-project-zuul softwarefactory-project-zuul bot merged commit a28e30b into ansible-collections:main Nov 3, 2022
Comment on lines +845 to +847
extra["ContentType"] = get_content_type(
src, present=extra.get("ContentType")
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changes the effect of the previous code and replaces the contents of extra["ContentType"] with the return value of get_content_type, which if extra already has "ContentType" (ie. present is truthy) returns None.

I think we should remove the present argument from get_content_type and then only call it if it's not present:

if "ContentType"  not in extra:
  extra["ContentType"] = get_content_type(src)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug This issue/PR relates to a bug community_review integration tests/integration mergeit Merge the PR (SoftwareFactory) module module needs_maintainer needs_triage new_plugin New plugin plugins plugin (any type) tests tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants