Commit Graph

1167 Commits (c216473c82a0b0fbd62cff1b05ab45b1b9803063)

Author SHA1 Message Date
Matt Martz 99d4f5bab4 Remove uses of assert in production code (#32079)
* Remove uses of assert in production code

* Fix assertion

* Add code smell test for assertions, currently limited to lib/ansible

* Fix assertion

* Add docs for no-assert

* Remove new assert from enos

* Fix assert in module_utils.connection
2017-11-13 11:51:18 -05:00
Prasad Katti 306c3508b2 Deprecate ec2_ami_find (#32501) 2017-11-09 11:38:05 +10:00
Sloane Hertel 134b9f50c3 Do not set a default value for description in the iam_role module. (#32629) 2017-11-07 20:14:13 -05:00
Sloane Hertel 680d06d1ab [cloud] remove ec2_asg usage of Python base logging - fixes #32476 (#32508)
* replace logging with module.debug in ec2_asg

* Make module global in ec2_asg.

* Fix the debug messages

* pep8
2017-11-07 16:46:49 -05:00
Will Thames c93ddf5473 Move profile and region checking to module_utils.ec2 (#31921)
* Move profile and region checking to module_utils.ec2

Remove ProfileNotFound checking from individual modules

There are plenty of `if not region:` checks that could be removed,
once more thorough testing of this change has occured

The ec2_asg, iam_managed_policy and ec2_vpc_subnet_facts modules
would also benefit from this change but as they do not have tests
and are marked stableinterface, they do not get this change.
2017-11-07 13:56:17 -05:00
Rob 8b3ca4c537 Fix returning module parameters for iam_role (#30669)
* remove iam_role= from module.exit_json() to match return docs.

* Add back old iam_role= for backwards compat
2017-11-06 16:34:51 -05:00
Dan O'Brien a026d64c08 [cloud] Option to add description to iam_role (#32582)
* Option to add description to role

* set default to remove conditional
2017-11-06 15:12:12 -05:00
Will Thames 6b9faaf90e [cloud][docs] Improve exception handling guidelines for AWS modules(#30745)
Better document what exceptions to handle, when and why.
Describe how to handle client auth exceptions, and that
AWSRetry retries on `XYZNotFound` exceptions.
2017-11-06 15:05:32 -05:00
Sloane Hertel 9cfd0a58b0
Use region derived from get_aws_connection_info() in dynamodb_table to fix tagging bug (#32557) 2017-11-03 16:15:53 -04:00
Bryan Weber 6bc3f98eee Adding missing arguments: 'values' and adding default value for 'tags' argument in AWS Data Pipeline (#32517) 2017-11-03 10:05:23 -04:00
patlachance 45e35be4c1 iam.py: return iam.role dict when creating roles (#28964) 2017-11-03 09:55:27 -04:00
Jonathan Nuñez 67b1d0f274 CloudFormation module: get StackEvents when ClientRequestToken is not used (#32434)
* When getting the stack events we need to consider the case where we don't have ClientRequestToken fixes #32396

* Adding tests for the case when the ClientRequestToken is not present in the stack creation.

* Renaming the stack that the test for Client Request Token requires so it won't cause collisions with the basic test.
2017-11-02 11:41:49 -04:00
Prasad Katti 86141c3e03 [ec2_ami_facts] new boto3-based module as a replacement for ec2_ami_find (#32252)
* [ec2_ami_facts] new boto3-based module as a replacement for ec2_ami_find

- new boto3-based module to gather facts about ec2 images
- intended to replace ec2_ami_find which uses boto
- an ami find task (using new module) added to the ec2_ami integration test

* [ec2_ami_facts] Use AnsibleAWSModule. Catch BotoCoreError.

* add ec2_ami_facts alias to tests

* [ec2_ami_facts] return ami launch permissions as well
2017-11-02 08:56:58 +10:00
Will Thames 0405edcac8 Improve efs_facts (#31817)
Avoid an infinite loop when no EFS resources are present

Use standard ansible approaches to pagination, retries,
exception handling, tag processing
2017-11-01 10:05:14 -04:00
Toshio Kuratomi 42655f737a
Clarify the release and maintenance cycle (#32402)
* Clarify the release and maintenance cycle
* Namespace refs a little
* Fix an unrelated problem with plugin return docs to fix docs build
2017-10-31 22:08:14 -07:00
David Kretch 312155a641 Add ec2_vpc_route_table example, fix typo (#32415)
* Add an example in the `ec2_vpc_route_table` module of deleting a
route table.
* Fix a typo in the AWS development guidelines, from `fail_json.aws()` to
`fail_json_aws()`.
2017-11-01 12:34:34 +10:00
Will Thames 710d1f074e Allow health_check_port to be a string (#32228)
Setting health_check_port to 'traffic-port' allows the health
check to use the target's traffic port.
2017-10-31 10:27:12 -04:00
Prasad Katti a2e4196c11 [aws] Document boto3 requirement (#32329) 2017-10-31 09:49:30 +10:00
Joseph S. Tate 77061f5521 ec2_lc - cast volume_size for an EBS volume to an int (#32291) 2017-10-30 14:41:40 -04:00
Prasad Katti f78f93e646 Added some more info about the aws_s3 module's overwrite option (#31819) 2017-10-30 11:22:05 -04:00
Willem van Ketwich 310eb833a4 EC2 AMI boto3 modifications (#28506)
Migrate ec2_ami module to boto3
2017-10-30 10:20:27 +10:00
Will Thames 08d81b970d
Amazon kms_facts module (#26733)
* Amazon kms_facts module

Facts module for Amazon's Key Management Service

* kms_facts provide aliases

Return aliases for keys
Provide `alias` as a filter
Cope when tags can't be listed
Ensure everything is properly snake cased

* Rename kms_facts to aws_kms_facts

There may be conflicting KMS modules for other providers otherwise.

* Fix documentation, add aliases cache

Aliases are called many times, so add a cache

* Reduce amount of info on deleted keys

Getting info on a key is costly (2s) per key, so reduce
info on deleted keys.

* Add policy information to facts

* aws_kms_facts version update

Fix ridiculously long RETURN line

* Remove dangerous-default-value from aws_kms_facts
2017-10-30 09:10:11 +10:00
Sloane Hertel 27b2c3bd25 lambda: fix undefined variable and initially define account_id as None (#32249) 2017-10-27 09:40:01 -04:00
Prasad Katti 033a6a1560 [ec2_ami_copy] Add return documentation (#32012) 2017-10-27 09:05:50 -04:00
Prasad Katti d088b7ab93 Route53 return values (#31962) 2017-10-27 13:27:01 +10:00
Prasad Katti a199d9d91e [ec2_vpc_nacl_id] Add nacl_id alias for nacl_ids option (#32223) 2017-10-27 13:21:53 +10:00
Sloane Hertel c714da7fac cloudformation_facts: don't fail on nonexistent stack - fixes #23419 (#23758)
* Allow cloudformation_facts to exit gracefully if stack does not exist

make cloudformation_facts pep8

remove from legacy files

remove unnecessary if statement

Allow cloudformation_facts to exit gracefully if stack does not exist version 2

fix documentation errors

add an example for a hard-fail if a stack doesn't exist

* Remove extra whitespace

* Use the .response attribute since .message isn't present with Python 3

* Don't fail if no stack name is provided and no stacks exist.
2017-10-26 15:18:31 -04:00
Ted Timmons 9322486ac3 Exclude stack policy when running in check mode. (#31940)
Fixes #31931
2017-10-26 12:32:48 -04:00
Marc Mercer 17a008654a Cast target port to an int in elb_target_group. Fixes #32098 (#32202) 2017-10-26 12:09:49 -04:00
Ted Timmons 8ab4412684 aws_kms: handle updated policy format+cleanup (#30728)
* aws_kms: handle updated policy format+cleanup

- create slightly updated policy in that handles lists instead of a single string; the previous version's policy was being rejected if the key was new enough to have the updated base policy.
- removed `dry_run` conditionals, not committing the policy anyhow.
- return the policy in the return data. Leaving undocumented for now.
- update exception handling: don't rethrow in `do_grant`, don't pass anything to `format_exc`.

* whitespace/indent fail

* fix list-plus-brackets

* str and list fixes for ryansb

* port changes from #31667 over, better listification
2017-10-26 09:13:29 -04:00
Prasad Katti 13807e7ee8 [cloud][docs] Add a cloudformation_facts example (#31964) 2017-10-26 08:29:10 -04:00
Ryan Brown 838c1ba6c7 [cloud] Bugfix for aws_s3 empty directory creation (#32169)
* [cloud] Bugfix for aws_s3 empty directory creation

* Update integration tests
2017-10-26 08:17:13 -04:00
Prasad Katti 0b357ba223 [ec2] Move note about state=restarted (#31961) 2017-10-26 21:37:33 +10:00
Prasad Katti 91b5a9b868 [ec2-ami] make examples less verbose; fix default values in docs (#32008)
* make ec2-ami examples less verbose

* Fix default values in docs to be the actual default values

Fix default values for `architecture`, `virtualization_type` and
`wait_timeout` in docs to be the actual default values.

* Added note about examples not containing auth details
2017-10-26 21:33:39 +10:00
Prasad Katti 3e0f67786f [ec2_vpc_subnet_facts] Add subnet_id alias for subnet_ids options (#32023) 2017-10-26 21:32:46 +10:00
Prasad Katti 61554143d0 Document return values of ec2_eip (#32018)
- added RETURN value for ec2_eip
- removed note about what is returned
- removed a duplicate example
2017-10-26 21:31:57 +10:00
dgilbert82 78347e12a3 No need to set a default tenancy and it prevents the creation of spot lcs (#31270)
The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_82dk2ynr/ansible_module_ec2_lc.py", line 317, in create_launch_config
    connection.create_launch_configuration(**launch_config)
  File "/usr/lib/python3.6/site-packages/botocore/client.py", line 312, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/lib/python3.6/site-packages/botocore/client.py", line 601, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (ValidationError) when calling the CreateLaunchConfiguration operation: Placement tenancy is not supported for spot instances.

fatal: [localhost]: FAILED! => {
    "changed": false, 
    "error": {
        "code": "ValidationError", 
        "message": "Placement tenancy is not supported for spot instances.", 
        "type": "Sender"
    }, 
    "failed": true,
2017-10-26 05:43:38 -04:00
awkspace 87989b5c63 Fix ec2_lc failing to create multi-volume configurations (#32163) 2017-10-26 15:21:47 +10:00
Daniel Shepherd 8aeb239f73 [cloud] Update ec2_vpc_net_facts to use Boto3 (#25375)
* update ec2_vpc_net_facts module to boto3

updated with RETURN values and other requested changes

removed errant extra blank line

another errant extra line removed...auto-linter not working apparently

updates per review

fix typo in RETURN docs

* fix trailing whitespace issue
2017-10-25 13:26:16 -04:00
Sloane Hertel 1dd55acbc2 ec2_group: add rule description support - fixes #29040 (#30273)
* ec2_group: add support for rule descriptions.

* Document rule description feature and add an example using it.

* Fix removing rule descriptions.

* Add integration tests to verify adding/modifying/removing rule descriptions works as expected.

* Add permissions to hacking/aws_config/testing_policies/ec2-policy.json for updating ingress and egress rule descriptions.

* ec2_group: add backwards compatibility with older versions of botocore for rule descriptions.

* Add compatibility with older version of botocore for ec2_group integration tests.

* ec2_group: move HAS_RULE_DESCRIPTION to be checked first.

* Make requested change

* Pass around a variable instead of client

* Make sure has_rule_description defaults to None

* Fail if rule_desc is in any ingress/egress rules and the the botocore version < 1.7.2

* Remove unnecessary variable

* Fix indentation for changed=True when updating rule descriptions.

* minor refactor to remove duplicate code

* add missing parameter

* Fix pep8

* Update test policy.
2017-10-24 21:18:56 -04:00
Prasad Katti 8a9a9b84dd [ec2-ami] Use required_if with state parameter (#32009)
* [ec2-ami] Use required_if with state parameter

* Update failure msg on delete ami with no image_id task in integration test
2017-10-24 16:01:33 -04:00
Ryan Brown 11c225e039 Start using ClientRequestTokens in event lists (#31997)
* Start using ClientRequestTokens in event lists

* Include request token in all reqs that support it (basically all but check mode/changeset)

* Update placebo recordings

* Add comments for CRQ popping
2017-10-23 14:39:13 -04:00
Ted Timmons d2e01477eb add root_device_type filter. (#31911)
* add root_device_type filter.

This module is due for a refactor, but I'm piling on.

* add version added
2017-10-19 14:59:15 -04:00
Sloane Hertel 73abce83a9 iam_managed_policy: use python 3 compatible policy comparison - fixes #31474 (#31535)
* Move compare_policies and hashable_policy functions into module_utils/ec2

* Use compare_policies which is compatible with python 2 and 3.

* rename function to indicate internal use

* s3_bucket: don't set changed to false if it has had the chance to be changed to true already.
2017-10-19 08:55:45 +10:00
Marek Nogacki b9223cdc89 ec2_group: do not fail on description mismatch (#31704) (#31734)
* ec2_group: do not fail on description mismatch (#31704)

* ec2_group: do not fail on description mismatch (#31704) - fix test case
2017-10-18 09:21:55 -04:00
Sloane Hertel 1b63885fc5 [cloud] Check instance public-IP property before transforming to dict (#31849) 2017-10-18 09:17:06 -04:00
Johannes Weißl 269672faf1 [cloud] Add CAA record type to route53 (#29178)
The CAA record type is supported in Amazon Route 53 since Aug 21, 2017. Tested manually.

- https://aws.amazon.com/about-aws/whats-new/2017/08/amazon-route-53-now-supports-caa-records/
- http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html#CAAFormat
- https://tools.ietf.org/html/rfc6844
2017-10-18 12:48:04 +10:00
Michael Fenn eab9ca9a00 ec2_vpc_endpoint: make policy_path usable (#31801)
The current code flow precludes the use of the policy_path module
parameter that's documented.  It's actually called policy_file in the
code.

What's worse is that the policy_file branch actually tries to open the
file named by the policy parameter, even though policy and policy_file
are marked as mutually-exclusive.

This change fixes the logic bug in policy_file and updates the
documentation to reference policy_file.  The old parameter policy_path
is provided as an alias
2017-10-17 14:34:29 -04:00
adambanker ee4e1be7cd Fixed redshift_subnet_group typo (#31836) 2017-10-17 09:16:59 -04:00
Prasad Katti b9e15d0df1 Support 'termination protection' for cloudformation stacks (#31675)
* Support 'termination protection' for cloudformation stacks

- Pass in the stack_name and desired termination protection state to update_termination_protection

* Fix for failing cloudformation unit test

* Check if cfn has update_termination_protection attr

* Use hasattr to test if cfn supports update_termination_protection

* termination_protection shouldn't prevent update_stack call for existing stacks
2017-10-17 08:34:45 -04:00
Takuya Sato a8bc6f69d9 skip check environment parameter if has no containers. (#31083)
* skip check environment parameter if has no containers.

* optimize code
2017-10-17 08:30:32 -04:00
Javier Cortejoso 844e58aedb Define new_target_group before. Fixes #31378 (#31379) 2017-10-16 14:33:47 -04:00
John Kerkstra 1e85facf36 add note to ec2_vpc_route_table that purge_subnets option is contingent subnets option (#31749) 2017-10-16 13:35:59 -04:00
Will Thames 03abce2d39 Add pagination for IAM group API calls (#31554)
get_group and list_attached_policies_for_groups can be paginated
so add pagination handling.

Fixes #31545
2017-10-16 09:42:43 -04:00
Prasad Katti 30fd1870f3 [docs] Clean up the cloudformation examples (#31770)
- added `role_arn` to the "role example" example
- removed the irrelevant parameters to the "role example" example
- updated comment on one of the examples
- removed the last example as it was a duplicate of "role example" example
- some other minor changes
2017-10-16 08:53:10 -04:00
Sloane Hertel 53e476ad4e [cloud] Only enforce state (running/stopped/etc) in EC2 "exact_count" when state is specified (#31648)
fix issue in ec2 module where exact count would create new instances if the instane state is stopped or terminated
2017-10-13 14:11:07 -04:00
Sloane Hertel 90b6178e61 [cloud] Don't try to deregister an instance that isn't in the load balancer (#31660) 2017-10-13 13:59:24 -04:00
Sloane Hertel 34e2019251 [cloud] Require src parameter when aws_s3 is used with mode 'put' (#31657) 2017-10-13 13:57:40 -04:00
Sloane Hertel e26955fc9a [cloud] Document alias for aws_s3 'overwrite' option. (#31638) 2017-10-13 13:55:24 -04:00
Kenny Gillen 1234a79349 Fix gender pronouns and the odd typo (#31709) 2017-10-13 13:52:38 -04:00
Ryan Brown e0c2b6bbb4 Rename ssm_parameter_store module and ssm lookup to be prefixed with aws (#31662) 2017-10-13 13:52:10 +10:00
Samprita Hegde 6d16739926 [cloud] Support changeset_name parameter on CloudFormation stack create (#31436) 2017-10-12 15:44:06 -04:00
Ted Timmons bc1e3d22c2 [cloud][docs] Document default/required 'state' in CloudFormation module (#31642)
* fix documentation to match default/required status of 'state'

* add 'choices'
2017-10-12 15:31:42 -04:00
Pilou 840a57a4ed s3_sync: fix broken import (#31460) 2017-10-12 20:48:05 +02:00
Prasad Katti 03ec3cd572 [aws_s3] different fail msg depending on whether version is specified (#31598) 2017-10-12 12:12:55 +10:00
Sloane Hertel 89d09bae21 [cloud] Fix ec2_group when security group lacks a VPC (#31526) 2017-10-10 13:15:11 -04:00
Sloane Hertel 6fee6f71f7 aws_s3: fix upload_file's ExtraArgs - fixes #31232 (#31487)
* Module option metadata are extra arguments rather than S3 object metadata: update ExtraArgs variable.

* Remove hyphens from ExtraArgs to maintain backwards compatibility

* Map lowercase extra args to CamelCase

* Maintain backwards compatibility by guessing at content type rather than always defaulting to binary/octet-stream.

* Fix ExtraArgs for non-hyphenated options

* Simplify logic
2017-10-10 13:12:58 -04:00
arnonki a48532de5f Use default values for object returned from aws to prevent TypeError (#31455)
* Use default values for object returned from aws to prevent TypeError
NoneType exception fixes #31454
2017-10-10 10:08:06 -04:00
Toshio Kuratomi 75eed6a51a Port arg specs from type='str' to type='path' 2017-10-09 21:15:56 -07:00
Prasad Katti 0c64bbcd6f Document return values for aws_s3 (#31158)
* Document return values for aws_s3
2017-10-10 09:26:42 +10:00
Bill Wang 91a36faddb New module: Add module for Amazon Systems Manager Parameter Store (cloud/amazon/ssm_parameter_store) (#23460)
- new module: ssm_parameter_store
- new lookup: ssm

* lookup module ssm - adjust error message

* Pacify pylint erroring on botocore not found

* adjust to version 2.5
2017-10-10 09:04:40 +10:00
Rob 1353aae456 [cloud] Fix #31271 - cast all tag values as strings (#31272)
* Fix #31271 - cast all tag values as strings

* Replace `str` with `to_native`
2017-10-09 17:10:54 -04:00
Ryan Fitzpatrick 2ba5998c94 [cloud] Ensure absence of public_dns_name doesn't halt ec2 module (#31476) 2017-10-09 17:04:25 -04:00
Toshio Kuratomi 9c81257ce3 Remove wildcard imports from amazon modules (#31451)
* Remove wildcard imports from amazon modules
* Remove files from legacy pep8 that now pass
2017-10-09 07:38:41 -07:00
Pilou 870974e0be ec2_vpc_route_table: fix broken import (#31459) 2017-10-09 20:20:31 +10:00
Pilou 0be8ac6797 ec2_vpc_igw: fix broken import (#31458) 2017-10-09 15:36:12 +10:00
Kaz Cheng 044dd699c2 Addition of TCP protocol to ELB target group (#31228)
* Addition of TCP protocol to ELB target group as target groups support HTTP/S and TCP now

* Fixup stickiness type so that it checks if the current_tg has the stickiness_type key in the dict, as TCP ones do not
2017-10-06 00:27:30 -04:00
Jean-Frédéric d332367018 Allow an Elastic IP to be re-associated in ec2_eip (#27389)
Trying to associate an already-associated ElasticIP was failing.

This is however supported by the `boto` method that is used
under the hood, `associate_address`:

To quote `boto` documentation:
```
This option to allow an Elastic IP address that is already
associated with another networkinterface or instance to be
re-associated with the specified instance or interface.
```

This defaults to False, both per backwards-compatibility
and to mirror the boto default value.

Fixes #27385
2017-10-06 09:51:36 +10:00
Sloane Hertel efe3c94b1b [cloud] ec2.py: warn that removing a public ipv4 address is not permitted - fixes #30679 (#30952)
* Add a warning to ec2.py if assign_public_ip is different from the matching instance(s) since it isn't a modifiable attribute.

* remove comments
2017-10-05 15:32:52 -04:00
Bradford Dabbs f219d6b96d [cloud] EC2_ASG Set desired capacity to min_size if no instances exist (#30987)
* Set desired capacity to min_size if no instances exist

* Improve readability of if/then clause

* Only update null desired_capacity to min_size on initial create

Any future updates to the ASG will be able to reference the existing
capacity.
2017-10-05 14:56:46 -04:00
Rob 2804a2663a [cloud] Only get rules if listener in elb_application_lb been identified in compare_rules (#30604)
* Only get rules if listener has been identified in compare_rules

* Always cast the listener port to an integer.
2017-10-02 16:57:41 -04:00
Dave Grochowski a7229df469 [cloud] Fix handling of `encrypt` option in aws_s3 module (#30822) 2017-10-02 13:18:47 -04:00
Prasad Katti 3b1376ad09 [cloud] add boto3 requirement to `cloudformation` module docs (#31135) 2017-10-02 09:25:12 -04:00
jonjozwiak 74f950936a Fix ec2_win_password to allow blank key_passphrase (#28791) 2017-09-28 21:21:59 -04:00
Will Thames 371c6dba8b Fix aws_s3 connection exception handling (#30955)
`ProfileNotFound` does not have a `response` attribute, and
`NoCredentialsError` does not occur at connection creation time.
2017-09-28 16:20:10 -04:00
Will Thames c5971047a4 [cloud] Support reuse of unallocated Elastic IP's. (#30322)
* Return correct changed status when EIP is reused

When reusing an existing EIP, the changed status
should be False, not True.

* If public_ip is given and it exists, return it

Ensure EIP allocation returns existing public_ip correctly
2017-09-28 10:29:51 -04:00
Gustavo Maia 4f67e855ed Added ecs_taskdefinition_facts module (#30752)
* Added ecs_taskdefinition_facts module

* Expanding documentation
Now includes all possible return values

* Fixed boto dependency

* Converting results to snake case.

* Remove EcsTaskManager class, move to main()
Remove unnecessary `except` block

* Change botocore import method
Also make Profile exception message less redundant

* Changing case conversion of the results
Now converts only the root level keys
Commented is a version that would not convert only container_definitions
2017-09-28 08:48:57 -04:00
Will Thames 5900fee67a Fix ec2_snapshot_facts for python3
Avoid the following seen when running ec2_ami tests on python3,
presumably because the return type of `map` is different between
python2 and python3.

```
Traceback (most recent call last):
  File "/tmp/ansible_e44v27uj/ansible_module_ec2_snapshot_facts.py", line 242, in <module>
    main()
  File "/tmp/ansible_e44v27uj/ansible_module_ec2_snapshot_facts.py", line 238, in main
    list_ec2_snapshots(connection, module)
  File "/tmp/ansible_e44v27uj/ansible_module_ec2_snapshot_facts.py", line 193, in list_ec2_snapshots
    snapshots = connection.describe_snapshots(SnapshotIds=snapshot_ids, OwnerIds=owner_ids, RestorableByUserIds=restorable_by_user_ids, Filters=filters)
  File "/usr/local/lib/python3.5/dist-packages/botocore/client.py", line 312, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python3.5/dist-packages/botocore/client.py", line 575, in _make_api_call
    api_params, operation_model, context=request_context)
  File "/usr/local/lib/python3.5/dist-packages/botocore/client.py", line 630, in _convert_to_request_dict
    api_params, operation_model)
  File "/usr/local/lib/python3.5/dist-packages/botocore/validate.py", line 291, in serialize_to_request
    raise ParamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid type for parameter OwnerIds, value: <map object at 0x7ff577511048>, type: <class 'map'>, valid types: <class 'list'>, <class 'tuple'>
```

https://github.com/ansible/ansible/pull/30435#issuecomment-330750498
2017-09-27 20:38:39 -07:00
Prasad Katti b672fd1f45 ec2_instance_facts: requires boto3 and botocore 2017-09-27 09:12:46 +10:00
Will Thames ce2f5d26ab Improve cloudwatchevent_rule exception handling (#30823)
* Fix cloudwatchevent_rule exception handling

Where it is currently present, this change fixes the exception handling.
However, there are many places that it is lacking.

Fixes #30806

* Add new exception handling for cloudwatchevent_rule

Ensure all API calls are wrapped with exception handling

* PEP8 tidy up

* Remove unnecessary HAS_BOTO3 import and checks

Tidy up documentation so that NO_QA can be removed
2017-09-26 12:47:24 -04:00
Will Thames 4553ec5cc5 [cloud] Ensure target group ARNs are passed as a list in `ec2_asg` (#30905)
While sets are useful for comparing whether target groups
need modifying, the AWS API expects a list or tuple, not a set
2017-09-26 10:25:49 -04:00
Will Thames b863d072c2 [cloud] Don't remove profile, security_token by default in `aws_s3` (#30902)
Comment above suggests only removing it for non-S3 services,
so let's actually enforce that.
2017-09-26 10:18:30 -04:00
Reid Wahl a22d7513a7 Remove invalid e.response from BotoCoreErrors in ec2_asg.py (#30121) (#30495) 2017-09-21 13:10:05 -04:00
Toshio Kuratomi 46e5c48f03 Split ec2_elb_* modules in service of rename/interface changes (#30532)
* Undeprecate ec2_elb_*
* Make ec2_elb* full fledged modules rather than aliases
* Split tests for ec2_elb_lb and elb_classicb_lb
* Change names in documentation of old and new elb modules

Add tests for ec2_elb_lb
2017-09-21 13:06:14 -04:00
Will Thames 685267df73 Improve error handling for IdempotentParamaterMismatch (#30324)
Ensure all the return variables are correctly populated
and return more info in the error message
2017-09-20 16:42:13 -04:00
Vladimir Utenkov 875153d503 [cloud][py3] Fix AttributeError in iam_policy on python3 (#30551) 2017-09-20 15:14:09 -04:00
Will Thames d871964aca Ensure region is set in ec2_vpc_subnet_facts (#30399)
Make requested change in #30370
2017-09-20 11:23:48 -04:00
Will Thames 18582295e3 Fix broken LimitExceeded check in iam_managed_policy (#30537)
When policy versions exceed 5, we hit LimitExceeded. However,
the exception checking should use `e.response['Error']['Code']`
2017-09-20 09:27:45 -04:00
Willem van Ketwich 92426840d6 fix for unrequired parameter 2017-09-19 21:37:42 -07:00
s-hertel b3273223db Previously to use the modes put or get the object had to be specified with a leading /. Since the boto call doesn't take an object like that this was overlooked and removed. Added a check to remove that leading character. 2017-09-19 21:21:02 -07:00
Will Thames 31daeb4b85 New module for querying ACM certificates (#29430)
Not using AnsibleAWSModule so that it can be dropped into
a module library of Ansible 2.3
2017-09-19 19:10:39 -04:00
Matt Clay 7714dcd04e Enable more pylint rules and fix reported issues. (#30539)
* Enable pylint unreachable test.
* Enable pylint suppressed-message test.
* Enable pylint redundant-unittest-assert test.
* Enable pylint bad-open-mode test.
* Enable pylint signature-differs test.
* Enable pylint unnecessary-pass test.
* Enable pylint unnecessary-lambda test.
* Enable pylint raising-bad-type test.
* Enable pylint logging-not-lazy test.
* Enable pylint logging-format-interpolation test.
* Enable pylint useless-else-on-loop test.
2017-09-18 23:20:32 -07:00
Wolfgang Felbermeier f3865e370c Fix tags in ec2_instance_facts (#30333)
* Fix tags in ec2_instance_facts
The method boto3_tag_list_to_ansible_dict in module_utils/ec2.py changed
and does no longer check whether the returned result of boto3 uses
"key" or "Key" as the tag key identifier.
This fixes ec2_instance_facts to make this check in its own, since boto3
may return "key" instead of "Key"

* Since the indices for the tags are already formatted to lowercase
by the snaking, we can assume, that the index for the tags are already
formatted
2017-09-19 10:09:56 +10:00
KrdLab a6c8978b74 Fix RETURN section document in lambda.py (#28333)
* Fix RETURN section document in lambda.py

* Fix typo
2017-09-15 05:08:15 -04:00
Sloane Hertel bdbe5337c6 s3 integration tests (#28396)
* Replace pause in integration tests with until.

Use resource prefix instead of generating a random number

Only try to delete keys if they exist

* Add alias to tests
2017-09-15 05:08:09 -04:00
KrdLab e0a5b7d7ea Fix RETURN section document in iam_role.py (#28430) 2017-09-15 04:21:27 -04:00
Stepan Stipl 4ec91491e2 Pass region and ec2_url to boto3 connection (#30370)
fixes ansible/ansible#30368
2017-09-15 13:54:29 +10:00
Abhijit Menon-Sen 524c5dcfef Avoid KeyError when subnet['Tags'] doesn't exist (#30349)
The problem was introduced in 2cdf31d3.
2017-09-14 21:30:09 +10:00
Will Thames fd18d7ebb5 [cloud] Don't alter dictionary during iteration in elb_target_group_facts, avoiding RuntimeError (#30247)
Don't update the target_group_attributes dict
while iterating over it.

Fixes #30190
2017-09-13 14:34:26 -04:00
Sloane Hertel 4bc4abfe1b [cloud] ec2_group: Handle duplicate names between EC2 classic and VPC groups (#28931)
* ec2_group: Handle name conflict with empty vpc_id.

If several groups exist with the same name (and vpc_id is None) then
treat the group outside the vpc as preferred (same as it would for a vpc
group with vpc_id specified). Also don't run the egress rules code in
that case.

* Handle lack of `IpPermissionsEgress` attribute on EC2 classic groups

In EC2 classic groups, the `while True` loop checking for egress
permissions will continue infinitely.

* Handle incompatible combinations of EC2 Classic + VPC groups

* Fix integration tests in accounts lacking EC2 classic

This change checks against the security group created, instead of the
module parameters, for VPC ID. This means that new accounts with a
default VPC will still wait properly for the first egress rule to
populate.

* Fix conditional for storing described groups with preference for matching VPC IDs

* Revert `vpc_id is None` on conditional to allow for default VPCs
2017-09-13 14:19:05 -04:00
Matt Clay 442af3744e Miscellaneous pylint fixes.
The following rules are no longer disabled:

- bad-format-string
- duplicate-key
- lost-exception
- trailing-newlines
- unexpected-keyword-arg
- useless-suppression
- using-constant-test
2017-09-13 01:53:08 -07:00
Daniel Shepherd 2cdf31d3a2 Update ec2_vpc_subnet_facts to use Boto3 (#25374)
* update ec2_vpc_subnet_facts module to use boto3 and support gathering updated fact items from AWS API

add version_added to new parameter

added return docs and other requested changes

removed errant extra blank line

updates per review

* update per review: fix AWSRetry backoff implementation and fix example that was not correct
2017-09-13 10:17:17 +10:00
Sloane Hertel b02937f3c3 [cloud] Document requirements for ec2_asg. (#30057) 2017-09-12 11:26:35 -04:00
Will Thames 0566d4672d [cloud] Add documentation around backoff and pagination for AWS module authors (#29883)
We field a lot of PRs that could be improved through use
of built in pagination and retry capabilities.
2017-09-12 09:29:04 -04:00
Matt Clay 68aeaa58a8 Fix dangerous default args. (#29839) 2017-09-12 00:11:13 -07:00
Sloane Hertel 9bc330c89b ec2: fixes #19521, fixes #29456 - create instance-store AMI instances with correct shutdown behavior (#28885)
* Create instance-store AMI instances with 'terminate' as the shutdown behavior since it is required.

* Match on the error code instead of searching for a string in the message.

* Narrow conditional to only fix shutdown behavior if fixing it would help

* Fix pep8.
2017-09-12 11:16:00 +10:00
Sloane Hertel 942b6fb9bc ec2_vol: wait for delete_on_termination to be set to the correct value. Fixes #22534. (#28848)
wait for delete_on_termination to be set to the correct value, it can take some time to correctly reflect the setting sent in the API call.
2017-09-11 16:52:06 -04:00
Lorin Hochstein 362a2e523a Document return values for ec2_vpc_net.py (#21294)
* Document return values for ec2_vpc_net.py

* Prepend "vpc" to return values
2017-09-11 16:10:36 -04:00
Abhijeet Kasurde 8f6626bd8f Misc typo corrections
Fix adds correction for typos

* Anisble to Ansible
* Fasle to False

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2017-09-09 10:25:50 -07:00
s-hertel 0ac4a82f3b ec2_group: unnest variable assignment. Fixes #29113. 2017-09-09 10:20:08 -07:00
s-hertel 6ae201d3b1 cloudtrail: import botocore.exceptions in a try/except. 2017-09-09 10:10:21 -07:00
Antoine Rouaze f57d51d92c Fixes #22374: fix route table update in ec2_vpc_route_table module (#27234)
The ec2_vpc_route_table module notifies about a change on the route table when the instance Id of the NAT instance has changed, but in fact, nothing changes. The module call the create_route function the AWS SDK to add a new route with the same cidr. The AWS SDK should return an error instead of nothing.

Call replace_route function instead of create_route when a route table with the same cidr but with different target destination is present.
2017-09-08 19:27:08 -04:00
Ross Williams 39e46437bf Fixes #19666 Correct AMI information output by ec2_ami module (#27021)
Add AMI name and platform to outputs on AMI creation
2017-09-08 16:30:08 -04:00
Willem van Ketwich f58bd4f392 [cloud] EC2 AutoScaling fix for respecting zero as the desired, min&max size values (#27870) 2017-09-08 12:30:35 -04:00
Joel Thompson 4e759a9cce sns_topic: Fix unreferenced variable (#29117)
Not sure how this ever worked.

Fixes #29102
2017-09-07 21:46:30 -04:00
Tomaž Šifrer 3bd89f8298 Fix: modifying existing application lb using certificates now properly sets certificates (#28217) 2017-09-07 08:23:17 -04:00
Ryan Brown d02bea75d3 Move selected AWS modules from community/certified to core support (#28617) 2017-09-06 11:15:41 -04:00
Markus Juopperi d343a3abd1 elb_application_lb: when purging rules make deletion the first step (#28749)
This prevents errors when adding new rules that conflict with existing
ones that will be deleted. For example this allows adding a new rule
with the same priority of a rule that will be purged.
2017-09-05 13:47:33 -04:00
mikedlr 506a30cf3e lambda - more limited exception trap when doing get_function for better errors (#28918) 2017-09-01 09:25:54 -04:00
Sloane Hertel cef40cb54a [cloud] ec2_group: Allow rule source to be a security group in a peered VPC. (#28876) 2017-08-31 15:27:05 -04:00
Sloane Hertel 70e20bb571 [cloud] cloudformation: create changeset when stack is in ROLLBACK_COMPLETE. Fixes #27853 (#28832)
Fix appearance of failure when creating a cloudformation changeset after a rollback. When creating a cloudformation changeset it shouldn't matter if the last event was. 

_ROLLBACK_COMPLETE since creating a changeset is not an event. Fixes #27853.
2017-08-30 15:27:48 -04:00
Deepakkothandan 8222662d55 added module ec2_snapshot_copy (#26578)
* added module ec2_snapshot_copy

* added RETURN documentation

* Fix copyright for ec2_snapshot_copy and make requested changes.
2017-08-29 18:11:21 -04:00
James Kassemi 48c5b9665a s3_sync: add delete option - fixes #25884 (#28249)
* s3_sync: add delete option - fixes #25884

Add `delete` option. Maintain existing upload strategies. When delete
is requested files present on remote that are not in source list are
removed after upload.

* S3_sync: Delete objects in chunks of 1000 instead of one at a time.
2017-08-29 17:25:30 -04:00
jacky.chen 75998d3ca3 [cloud] Add the ability to modify shard count to kinesis_stream module (#24805)
* Add the ability to modify shard count to kinesis_stream module

* Fixed an issue in kinesis_stream where update() reports not changed when it is changed

* Remove unreachable message and make the try and catch block shorter
2017-08-29 17:13:46 -04:00
opapy 38a5033b48 support ecs task resource for cloudwatchevent_rule (#28495)
* add support ecs

* add role_arn parameters
2017-08-29 16:13:12 -04:00
Ryan S. Brown 9647a4c94f Fix silent kinesis_stream error
In cases where the boto3 call to create a Kinesis stream failed, the
error message was silently ignored because the error message wasn't
returned out of `stream_action`

Also switch `str` calls to `to_native`
2017-08-29 15:31:26 -04:00
Sloane Hertel e05eebcb50 [cloud] Remove custom pagination function in ec2_launchconfig module (#28574) 2017-08-29 13:52:45 -04:00
mestudd 7b8f113ceb Check for Rules before removing. (#28731) 2017-08-29 12:07:07 -04:00
René Moser c97f4653be fix typos in various modules and docsite (#28747) 2017-08-29 17:59:41 +02:00
Constantin 11b1ad0928 [cloud] Handle client-error exceptions in s3_bucket (#26044)
* Handle exception when capital letter used in S3 bucket name.

* Fix whitespace for PEP8
2017-08-29 11:11:27 -04:00
Michael De La Rue fbec5ab12d [cloud] new module lambda_policy (PR #24951)
- Fixes to lambda
- reformatting + tests for lambda_facts
- lambda module integration test
- switch lambda and lambda_facts to AnsibleAwsModule
- Get the account ID from STS, GetUser, and finally error message
2017-08-28 16:45:53 -04:00
Will Thames 63df0adc17 [cloud] Update RDS parameter group for boto3 (#25345)
* Update RDS parameter group for boto3

* Update to boto3
* Update to latest ansible standards
* Remove choices list for valid engines (See #19221 for context)
* Allow tagging
* Return some useful information, and document that information

* Add tests for rds_param_group

* Improve testing of rds_param_group

* Add purge_tags option for rds_param_group

* Fix remaining broken rds_param_group tests

* Ensure the group name is lowercased. Fixes integration tests when run on OSX
2017-08-28 12:52:22 -04:00
Radu Epure 54c295699e [cloud] Add DBName to RDS Facts if it exists (#27121)
* + Add DBName in RDS Facts if it's not null

* - remove 2 offending lines for automatic tests

* Syntax change for shorter code and improved readability
2017-08-28 08:33:34 -04:00
banzo 3302248616 [cloud] Amazon Redshift module cluster deletion fix (#25164)
* Fix typo (#25161)

* Fixed cluster deletion: added final snapshot management

This adds 2 new options to the module API (only for the "delete" command):

* skip_final_cluster_snapshot: skip a final snapshot before deleting the cluster
* final_cluster_snapshot_identifier: identifier of the final snapshot to be created before deleting the cluster

Ref: http://boto.cloudhackers.com/en/latest/ref/redshift.html

* Fixed cluster deletion: added final snapshot management

This adds 2 new options to the module API (only for the "delete" command):

* skip_final_cluster_snapshot: skip a final snapshot before deleting the cluster
* final_cluster_snapshot_identifier: identifier of the final snapshot to be created before deleting the cluster

Ref: http://boto.cloudhackers.com/en/latest/ref/redshift.html

* add version_added information

* Review corrections:

* used required_if instead of checking parameters compatibility inside the code
* renamed aliases to be more explicit

Also added an example for the "delete" command

* Review corrections correction - make "delete" command specific parameters mandatory only when the command is "delete"

* updated doc with aliases

* Fix YAML docs syntax

* Set default to match API for skip_final_cluster_snapshot.
2017-08-24 16:41:32 -04:00
Joel Kaasinen fc7301671e [cloud] Add check mode for cloudformation module (#23483)
* cloudformation: dummy check mode

* cloudformation: use changesets to implement check mode

* cloudformation: wait at most 5min for change set

* cloudformation: handle stack creation and deletion in check mode

* cloudformation: standardize output format in check mode

msg is a string, meta is a list

* cloudformation: use same naming convention in get_changeset as create_changeset

also add comment about code duplication between said functions

* Remove unused imports

* PEP8 whitespace fix

* Fix CI, convert success=True check to for/else
2017-08-24 14:07:48 -04:00
Sloane Hertel cf1a9d4d22 New module: Add ec2 Vpn Connection module and tests (cloud/amazon/ec2_vpc_vpn) (#24385)
* Add VPN module and unittests

* remove unnecessary imports

* fix documentation

* raise custom exception rather than passing module everywhere

* remove recordings

Rerecord tests

Fix docs

Ensure vpn_connection_id is a list of strings when checking if it exists

* fix check mode

* Rerecord tests

* remove superfluous code and comments and make exception handling uniform

fix docs

* Fix ec2_vpc_vpn documentation

* make ec2_vpc_vpn compatible with python 2.6 and make check mode logic more succinct

* fix comparison of list of dicts

* Fix typos and docstrings

make requested changes for imports

make code clearer

* Fix copyright and metadata version.
2017-08-24 12:18:40 -04:00
Matt 9407a17c40 Fix example
change count_tags to count_tag
2017-08-23 17:56:38 -04:00
Will Thames fbfa5624c3 [cloud] New module: aws_waf_facts module (#26671)
Initial implementation of waf_facts module

* Enhance waf_facts module to provide more info

Support check_mode trivially
Enhance rule and predicate information
Use AWSretry and wrap proper exception handling
Finish documentation
Remove arbitrary limits
Meet latest ansible standards.

* Rename module to use aws_ prefix.

Fix copyright.

Fix metadata version.
2017-08-23 15:09:27 -04:00
Patrick Murray b828b5d33b Fixing Issue #27270 - EFS TypeError (#27318)
* Fixing Issue #27270 regarding a TypeError invoked by the addition of a Filter type and List type.

* Fix SecurityGroup from always being reported as changed on PY3

On Python3, filter returns a generator.  This causes us to report that
security groups are always defined on Python3 even when there are none.

Also change filter() calls into list comprehensions.
2017-08-23 11:43:09 -07:00
Michael Tinning 282e743eb0 elb_application_lb: fix issue with boto parameter validation on Rules (#27333) 2017-08-23 13:49:52 -04:00