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

inventory/aws_ec2: allow multi-entries for one host #1026

Conversation

goneri
Copy link
Member

@goneri goneri commented Sep 15, 2022

Depends-On: #1066

Add an option to allow multiple duplicated entries for one single instance.

Closes: #950

@goneri goneri changed the title inventory/aws_ec2: allow multi-entries for one host WIP inventory/aws_ec2: allow multi-entries for one host Sep 15, 2022
@goneri goneri mentioned this pull request Sep 15, 2022
@github-actions
Copy link

github-actions bot commented Sep 15, 2022

Docs Build 📝

Thank you for contribution!✨

This PR has been merged and your docs changes will be incorporated when they are next published.

@ansibullbot ansibullbot added WIP Work in progress inventory inventory plugin needs_triage plugins plugin (any type) tests tests labels Sep 15, 2022
@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 5m 11s
✔️ build-ansible-collection SUCCESS in 5m 10s
ansible-test-sanity-aws-ansible-python38 FAILURE in 8m 50s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 12m 05s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 9m 12s
ansible-test-units-amazon-aws-python38 FAILURE in 5m 51s
ansible-test-units-amazon-aws-python39 FAILURE in 7m 07s
✔️ ansible-test-splitter SUCCESS in 2m 28s
integration-amazon.aws-1 FAILURE in 6m 32s
⚠️ 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 42s

alinabuzachis pushed a commit to alinabuzachis/amazon.aws that referenced this pull request Sep 16, 2022
…ns#1026)

Add AWSRetry.jittered_backoff to rds_instance_info

SUMMARY
Add AWSRetry.jittered_backoff to the rds_instance_info module.
When calling rds_instance_info we have been seeing API rate limit errors from AWS. When calling this module, it usually runs to about 90-150 times in a minute before we get rate limited.
Using jittered_backoff should significantly decrease the number of times we see API rate limits here.
02:20:36 An exception occurred during task execution. To see the full traceback, use -vvv. The error was: botocore.exceptions.ClientError: An error occurred (Throttling) when calling the DescribeDBInstances operation (reached max retries: 4): Rate exceeded
02:20:36 fatal: [polaris -> localhost]: FAILED! => {"boto3_version": "1.20.22", "botocore_version": "1.23.22", "changed": false, "error": {"code": "Throttling", "message": "Rate exceeded", "type": "Sender"}, "msg": "Couldn't get instance information: An error occurred (Throttling) when calling the DescribeDBInstances operation (reached max retries: 4): Rate exceeded", "response_metadata": {"http_headers": {"connection": "close", "content-length": "254", "content-type": "text/xml", "date": "Tue, 15 Mar 2022 09:20:34 GMT", "x-amzn-requestid": "5de8131e-3f59-4b04-af25-5f7083ee09b9"}, "http_status_code": 400, "max_attempts_reached": true, "request_id": "5de8131e-3f59-4b04-af25-5f7083ee09b9", "retry_attempts": 4}}

ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME

rds_instance_info

ADDITIONAL INFORMATION
Decorated rds_instance_info with AWSRetry.jittered_backoff

Reviewed-by: Mark Woolley <mw@marknet15.com>
Reviewed-by: Mark Chappell <None>

This commit was initially merged in https://github.com/ansible-collections/community.aws
See: ansible-collections/community.aws@6a2793a
@goneri goneri force-pushed the inventory-aws_ec2-allow-multi-entries-for-one-host_16612 branch from 8a374f2 to 9ffb35a Compare September 16, 2022 19:12
@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 03s
✔️ build-ansible-collection SUCCESS in 5m 01s
ansible-test-sanity-aws-ansible-python38 FAILURE in 11m 31s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 8m 55s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 8m 36s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 45s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 5m 36s
✔️ ansible-test-splitter SUCCESS in 2m 48s
integration-amazon.aws-1 FAILURE in 46m 50s
⚠️ 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 19s

@goneri goneri force-pushed the inventory-aws_ec2-allow-multi-entries-for-one-host_16612 branch 2 times, most recently from 71e22b6 to 299fd6c Compare September 19, 2022 19:11
@ansibullbot ansibullbot added the integration tests/integration label Sep 19, 2022
@goneri goneri changed the title WIP inventory/aws_ec2: allow multi-entries for one host inventory/aws_ec2: allow multi-entries for one host Sep 19, 2022
@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 09s
✔️ build-ansible-collection SUCCESS in 5m 28s
ansible-test-sanity-aws-ansible-python38 FAILURE in 8m 01s
ansible-test-sanity-aws-ansible-2.12-python38 FAILURE in 8m 20s
ansible-test-sanity-aws-ansible-2.13-python38 FAILURE in 9m 45s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 24s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 6m 21s
✔️ ansible-test-splitter SUCCESS in 2m 49s
✔️ integration-amazon.aws-1 SUCCESS in 52m 46s
⚠️ 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 18s

@ansibullbot ansibullbot added community_review and removed WIP Work in progress labels Sep 19, 2022
@goneri goneri force-pushed the inventory-aws_ec2-allow-multi-entries-for-one-host_16612 branch from 299fd6c to 3c26253 Compare September 20, 2022 14:31
@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 05s
✔️ build-ansible-collection SUCCESS in 5m 54s
✔️ ansible-test-sanity-aws-ansible-python38 SUCCESS in 8m 46s
✔️ ansible-test-sanity-aws-ansible-2.12-python38 SUCCESS in 10m 00s
✔️ ansible-test-sanity-aws-ansible-2.13-python38 SUCCESS in 9m 55s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 7m 04s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 6m 54s
✔️ ansible-test-splitter SUCCESS in 2m 48s
integration-amazon.aws-1 TIMED_OUT in 1h 00m 54s
⚠️ 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 FAILURE in 30m 30s
✔️ integration-community.aws-2 SUCCESS in 29m 21s
⚠️ 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 20s

Copy link
Contributor

@alinabuzachis alinabuzachis left a comment

Choose a reason for hiding this comment

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

@goneri Could you also please update the documentation with this option https://github.com/ansible-collections/amazon.aws/blob/main/docs/docsite/rst/aws_ec2_guide.rst ?

plugins/inventory/aws_ec2.py Show resolved Hide resolved
@softwarefactory-project-zuul
Copy link
Contributor

Build failed.

✔️ ansible-galaxy-importer SUCCESS in 4m 32s
✔️ build-ansible-collection SUCCESS in 5m 35s
✔️ ansible-test-sanity-aws-ansible-python38 SUCCESS in 10m 23s
✔️ ansible-test-sanity-aws-ansible-2.12-python38 SUCCESS in 9m 03s
✔️ ansible-test-sanity-aws-ansible-2.13-python38 SUCCESS in 8m 46s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 36s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 6m 35s
✔️ ansible-test-splitter SUCCESS in 2m 47s
integration-amazon.aws-1 FAILURE in 54m 45s
⚠️ 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 22s

goneri pushed a commit to alinabuzachis/amazon.aws that referenced this pull request Sep 21, 2022
…ns#1026)

Add AWSRetry.jittered_backoff to rds_instance_info

SUMMARY
Add AWSRetry.jittered_backoff to the rds_instance_info module.
When calling rds_instance_info we have been seeing API rate limit errors from AWS. When calling this module, it usually runs to about 90-150 times in a minute before we get rate limited.
Using jittered_backoff should significantly decrease the number of times we see API rate limits here.
02:20:36 An exception occurred during task execution. To see the full traceback, use -vvv. The error was: botocore.exceptions.ClientError: An error occurred (Throttling) when calling the DescribeDBInstances operation (reached max retries: 4): Rate exceeded
02:20:36 fatal: [polaris -> localhost]: FAILED! => {"boto3_version": "1.20.22", "botocore_version": "1.23.22", "changed": false, "error": {"code": "Throttling", "message": "Rate exceeded", "type": "Sender"}, "msg": "Couldn't get instance information: An error occurred (Throttling) when calling the DescribeDBInstances operation (reached max retries: 4): Rate exceeded", "response_metadata": {"http_headers": {"connection": "close", "content-length": "254", "content-type": "text/xml", "date": "Tue, 15 Mar 2022 09:20:34 GMT", "x-amzn-requestid": "5de8131e-3f59-4b04-af25-5f7083ee09b9"}, "http_status_code": 400, "max_attempts_reached": true, "request_id": "5de8131e-3f59-4b04-af25-5f7083ee09b9", "retry_attempts": 4}}

ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME

rds_instance_info

ADDITIONAL INFORMATION
Decorated rds_instance_info with AWSRetry.jittered_backoff

Reviewed-by: Mark Woolley <mw@marknet15.com>
Reviewed-by: Mark Chappell <None>

This commit was initially merged in https://github.com/ansible-collections/community.aws
See: ansible-collections/community.aws@6a2793a
@alinabuzachis
Copy link
Contributor

recheck

@goneri goneri force-pushed the inventory-aws_ec2-allow-multi-entries-for-one-host_16612 branch from 2537a21 to 510d80f Compare September 27, 2022 13:23
Add an option to allow multiple duplicated entry for on single instance.

Closes: ansible-collections#950
This can happen is a host is found but doesnt match any of the `hostnames` rules.
@goneri goneri force-pushed the inventory-aws_ec2-allow-multi-entries-for-one-host_16612 branch from 510d80f to a200eee Compare September 27, 2022 13:27
@softwarefactory-project-zuul
Copy link
Contributor

Build succeeded.

✔️ ansible-galaxy-importer SUCCESS in 7m 44s
✔️ build-ansible-collection SUCCESS in 5m 19s
✔️ ansible-test-sanity-aws-ansible-python38 SUCCESS in 9m 32s
✔️ ansible-test-sanity-aws-ansible-2.12-python38 SUCCESS in 10m 06s
✔️ ansible-test-sanity-aws-ansible-2.13-python38 SUCCESS in 10m 33s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 43s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 7m 01s
✔️ ansible-test-splitter SUCCESS in 2m 34s
✔️ integration-amazon.aws-1 SUCCESS in 49m 27s
⚠️ 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 19s

plugins/inventory/aws_ec2.py Outdated Show resolved Hide resolved
@@ -176,6 +184,9 @@
separator: '-' # Hostname will be aws-test_literal
prefix: 'aws'

# Returns all the hostnames for a given instance
allow_duplicated_hosts: False
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
allow_duplicated_hosts: False
allow_duplicated_hosts: True

Copy link
Member Author

@goneri goneri Sep 27, 2022

Choose a reason for hiding this comment

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

My understanding was the the new behaviour is a bug and we would like to switch back to what we had in 4.0.0.

Copy link
Contributor

@alinabuzachis alinabuzachis Sep 28, 2022

Choose a reason for hiding this comment

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

The fix in this PR #862 should do this (that is how it should be, it's not a bug really).

  1. Fix returned hosts when
hostnames:
- tag:Tag1,Tag2
  1. Fix returned hosts when
hostnames:
- tag:Tag1
- tag:Tag2
  1. Fix returned hosts when
hostnames:
- tag:Tag1=Test1,Tag2=Test2

Given and EC2 instance with the following tags

tags:
  Tag1: Test1
  Tag2: Test2

Instead of only returning

"aws_ec2": {
    "hosts": [
        "Test1"
    ]
},
"tag_Name_instance_02": {
    "hosts": [
        "Test1"
    ]
},
"tag_Tag1_Test1": {
    "hosts": [
        "Test1"
    ]
},
"tag_Tag2_Test2": {
    "hosts": [
        "Test1"
    ]
}

It returns now

{
"_meta": {
   "hostvars": {
         "Test1": {
                "ami_launch_index": 0,
                "ansible_host": "10.210.0.101",
                   ...},
         "Test2": {
                 "ami_launch_index": 0,
                 "ansible_host": "10.210.0.101",
                   ...},
    },
    "all": {
        "children": [
            "aws_ec2",
            "tag_Name_instance_02",
            "tag_Tag1_Test1",
            "tag_Tag2_Test2",
            "ungrouped"
        ]
    },
    "aws_ec2": {
        "hosts": [
            "Test1",
            "Test2"
        ]
    },
    "tag_Name_instance_02": {
        "hosts": [
            "Test1",
            "Test2"
        ]
    },
    "tag_Tag1_Test1": {
        "hosts": [
            "Test1",
            "Test2"
        ]
    },
    "tag_Tag2_Test2": {
        "hosts": [
            "Test1",
            "Test2"
        ]
    }
}

The problem is it altered the way the hosts were returned introducing a breaking change for the users unfortunately. So, for some users this behaviour is useful while for some others it is not. What about @tremble's suggestion here #862 (comment) ?

Copy link
Member Author

@goneri goneri Sep 28, 2022

Choose a reason for hiding this comment

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

This PR implements what @markuman describe here #862 (comment)

Copy link
Collaborator

Choose a reason for hiding this comment

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

I might just be confused. I would expect allow_duplicated_hosts: False to only return unique names. And I would expect what markuman suggested (unique_hostnames: true) to do the same thing.

In this example the comment reads:
# Returns all the hostnames for a given instance
But the example parameter is allow_duplicated_hosts: False - which I think would not return "all" hostnames, because it would only return unique / non-duplicate names.

Is my logic wrong?

@goneri goneri requested a review from jillr September 27, 2022 22:56
@softwarefactory-project-zuul

This comment was marked as resolved.

@goneri goneri changed the title inventory/aws_ec2: allow multi-entries for one host WIP: inventory/aws_ec2: allow multi-entries for one host Sep 28, 2022
@ansibullbot ansibullbot added the WIP Work in progress label Sep 28, 2022
@goneri goneri changed the title WIP: inventory/aws_ec2: allow multi-entries for one host inventory/aws_ec2: allow multi-entries for one host Sep 28, 2022
@ansibullbot ansibullbot removed the WIP Work in progress label Sep 28, 2022
Copy link
Contributor

@alinabuzachis alinabuzachis left a comment

Choose a reason for hiding this comment

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

Left one comment, otherwise, lgtm! Thank you @goneri

plugins/inventory/aws_ec2.py Show resolved Hide resolved
@softwarefactory-project-zuul
Copy link
Contributor

Build succeeded.

✔️ ansible-galaxy-importer SUCCESS in 4m 30s
✔️ build-ansible-collection SUCCESS in 5m 07s
✔️ ansible-test-sanity-aws-ansible-python38 SUCCESS in 9m 07s
✔️ ansible-test-sanity-aws-ansible-2.12-python38 SUCCESS in 10m 06s
✔️ ansible-test-sanity-aws-ansible-2.13-python38 SUCCESS in 10m 04s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 41s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 7m 20s
✔️ ansible-test-splitter SUCCESS in 2m 46s
✔️ integration-amazon.aws-1 SUCCESS in 57m 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-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 23s

Copy link
Collaborator

@jillr jillr left a comment

Choose a reason for hiding this comment

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

The code LGTM, just a little confused on the naming and default value. Thanks @goneri!

@goneri goneri added the mergeit Merge the PR (SoftwareFactory) label Sep 29, 2022
@softwarefactory-project-zuul
Copy link
Contributor

Build succeeded (gate pipeline).

✔️ ansible-galaxy-importer SUCCESS in 5m 04s
✔️ build-ansible-collection SUCCESS in 5m 13s
✔️ ansible-test-sanity-aws-ansible-python38 SUCCESS in 9m 19s
✔️ ansible-test-sanity-aws-ansible-2.12-python38 SUCCESS in 10m 50s
✔️ ansible-test-sanity-aws-ansible-2.13-python38 SUCCESS in 9m 22s
✔️ ansible-test-units-amazon-aws-python38 SUCCESS in 6m 04s
✔️ ansible-test-units-amazon-aws-python39 SUCCESS in 6m 44s
✔️ ansible-test-splitter SUCCESS in 2m 48s
✔️ integration-amazon.aws-1 SUCCESS in 57m 21s
✔️ integration-amazon.aws-2 SUCCESS in 7m 31s
⚠️ 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 SUCCESS in 26m 03s
✔️ integration-community.aws-2 SUCCESS in 44m 45s
✔️ integration-community.aws-3 SUCCESS in 41m 56s
✔️ integration-community.aws-4 SUCCESS in 33m 41s
✔️ integration-community.aws-5 SUCCESS in 13m 11s
⚠️ 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 31s

@softwarefactory-project-zuul softwarefactory-project-zuul bot merged commit ac3ccf5 into ansible-collections:main Sep 29, 2022
abikouo pushed a commit to abikouo/amazon.aws that referenced this pull request Sep 18, 2023
…ns#1026)

Add AWSRetry.jittered_backoff to rds_instance_info

SUMMARY
Add AWSRetry.jittered_backoff to the rds_instance_info module.
When calling rds_instance_info we have been seeing API rate limit errors from AWS. When calling this module, it usually runs to about 90-150 times in a minute before we get rate limited.
Using jittered_backoff should significantly decrease the number of times we see API rate limits here.
02:20:36 An exception occurred during task execution. To see the full traceback, use -vvv. The error was: botocore.exceptions.ClientError: An error occurred (Throttling) when calling the DescribeDBInstances operation (reached max retries: 4): Rate exceeded
02:20:36 fatal: [polaris -> localhost]: FAILED! => {"boto3_version": "1.20.22", "botocore_version": "1.23.22", "changed": false, "error": {"code": "Throttling", "message": "Rate exceeded", "type": "Sender"}, "msg": "Couldn't get instance information: An error occurred (Throttling) when calling the DescribeDBInstances operation (reached max retries: 4): Rate exceeded", "response_metadata": {"http_headers": {"connection": "close", "content-length": "254", "content-type": "text/xml", "date": "Tue, 15 Mar 2022 09:20:34 GMT", "x-amzn-requestid": "5de8131e-3f59-4b04-af25-5f7083ee09b9"}, "http_status_code": 400, "max_attempts_reached": true, "request_id": "5de8131e-3f59-4b04-af25-5f7083ee09b9", "retry_attempts": 4}}

ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME

rds_instance_info

ADDITIONAL INFORMATION
Decorated rds_instance_info with AWSRetry.jittered_backoff

Reviewed-by: Mark Woolley <mw@marknet15.com>
Reviewed-by: Mark Chappell <None>
abikouo pushed a commit to abikouo/amazon.aws that referenced this pull request Sep 18, 2023
…ns#1026)

Add AWSRetry.jittered_backoff to rds_instance_info

SUMMARY
Add AWSRetry.jittered_backoff to the rds_instance_info module.
When calling rds_instance_info we have been seeing API rate limit errors from AWS. When calling this module, it usually runs to about 90-150 times in a minute before we get rate limited.
Using jittered_backoff should significantly decrease the number of times we see API rate limits here.
02:20:36 An exception occurred during task execution. To see the full traceback, use -vvv. The error was: botocore.exceptions.ClientError: An error occurred (Throttling) when calling the DescribeDBInstances operation (reached max retries: 4): Rate exceeded
02:20:36 fatal: [polaris -> localhost]: FAILED! => {"boto3_version": "1.20.22", "botocore_version": "1.23.22", "changed": false, "error": {"code": "Throttling", "message": "Rate exceeded", "type": "Sender"}, "msg": "Couldn't get instance information: An error occurred (Throttling) when calling the DescribeDBInstances operation (reached max retries: 4): Rate exceeded", "response_metadata": {"http_headers": {"connection": "close", "content-length": "254", "content-type": "text/xml", "date": "Tue, 15 Mar 2022 09:20:34 GMT", "x-amzn-requestid": "5de8131e-3f59-4b04-af25-5f7083ee09b9"}, "http_status_code": 400, "max_attempts_reached": true, "request_id": "5de8131e-3f59-4b04-af25-5f7083ee09b9", "retry_attempts": 4}}

ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME

rds_instance_info

ADDITIONAL INFORMATION
Decorated rds_instance_info with AWSRetry.jittered_backoff

Reviewed-by: Mark Woolley <mw@marknet15.com>
Reviewed-by: Mark Chappell <None>
abikouo pushed a commit to abikouo/amazon.aws that referenced this pull request Oct 24, 2023
…ns#1026)

Add AWSRetry.jittered_backoff to rds_instance_info

SUMMARY
Add AWSRetry.jittered_backoff to the rds_instance_info module.
When calling rds_instance_info we have been seeing API rate limit errors from AWS. When calling this module, it usually runs to about 90-150 times in a minute before we get rate limited.
Using jittered_backoff should significantly decrease the number of times we see API rate limits here.
02:20:36 An exception occurred during task execution. To see the full traceback, use -vvv. The error was: botocore.exceptions.ClientError: An error occurred (Throttling) when calling the DescribeDBInstances operation (reached max retries: 4): Rate exceeded
02:20:36 fatal: [polaris -> localhost]: FAILED! => {"boto3_version": "1.20.22", "botocore_version": "1.23.22", "changed": false, "error": {"code": "Throttling", "message": "Rate exceeded", "type": "Sender"}, "msg": "Couldn't get instance information: An error occurred (Throttling) when calling the DescribeDBInstances operation (reached max retries: 4): Rate exceeded", "response_metadata": {"http_headers": {"connection": "close", "content-length": "254", "content-type": "text/xml", "date": "Tue, 15 Mar 2022 09:20:34 GMT", "x-amzn-requestid": "5de8131e-3f59-4b04-af25-5f7083ee09b9"}, "http_status_code": 400, "max_attempts_reached": true, "request_id": "5de8131e-3f59-4b04-af25-5f7083ee09b9", "retry_attempts": 4}}

ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME

rds_instance_info

ADDITIONAL INFORMATION
Decorated rds_instance_info with AWSRetry.jittered_backoff

Reviewed-by: Mark Woolley <mw@marknet15.com>
Reviewed-by: Mark Chappell <None>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
community_review docs has_issue integration tests/integration inventory inventory plugin mergeit Merge the PR (SoftwareFactory) plugins plugin (any type) tests tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.

aws_ec2 inventory running against the same host multiple times
5 participants