[aws][docs] Add AnsibleAWSModule features to AWS developer guidelines (#38978)

pull/39267/merge
Ryan Brown 6 years ago committed by GitHub
parent cd39b8263d
commit 33f358383a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -43,6 +43,30 @@ Few other changes are required. One possible issue that you might encounter is t
does not inherit methods from AnsibleModule by default, but most useful methods does not inherit methods from AnsibleModule by default, but most useful methods
are included. If you do find an issue, please raise a bug report. are included. If you do find an issue, please raise a bug report.
When porting, keep in mind that AnsibleAWSModule also will add the default ec2
argument spec by default. In pre-port modules, you should see common arguments
specfied with:
```
def main():
argument_spec = ec2_argument_spec()
argument_spec.update(dict(
state=dict(default='present', choices=['present', 'absent', 'enabled', 'disabled']),
name=dict(default='default'),
# ... and so on ...
))
module = AnsibleModule(argument_spec=argument_spec, ...)
# can be replaced with
def main():
argument_spec = dict(
state=dict(default='present', choices=['present', 'absent', 'enabled', 'disabled']),
name=dict(default='default'),
# ... and so on ...
)
module = AnsibleAWSModule(argument_spec=argument_spec, ...)
```
## Bug fixing ## Bug fixing
Bug fixes to code that relies on boto will still be accepted. When possible, the code should be Bug fixes to code that relies on boto will still be accepted. When possible, the code should be
@ -350,6 +374,32 @@ def describe_some_resource(client, module):
module.fail_json_aws(e, msg="Could not describe resource %s" % name) module.fail_json_aws(e, msg="Could not describe resource %s" % name)
``` ```
To make use of AWSRetry easier, it can now be wrapped around a client returned
by `AnsibleAWSModule`. any call from a client. To add retries to a client,
create a client:
```
module.client('ec2', retry_decorator=AWSRetry.jittered_backoff(retries=10))
```
Any calls from that client can be made to use the decorator passed at call-time
using the `aws_retry` argument. By default, no retries are used.
```
ec2 = module.client('ec2', retry_decorator=AWSRetry.jittered_backoff(retries=10))
ec2.describe_instances(InstanceIds=['i-123456789'], aws_retry=True)
# equivalent with normal AWSRetry
@AWSRetry.jittered_backoff(retries=10)
def describe_instances(client, **kwargs):
return ec2.describe_instances(**kwargs)
describe_instances(module.client('ec2'), InstanceIds=['i-123456789'])
```
The call will be retried the specified number of times, so the calling functions
don't need to be wrapped in the backoff decorator.
### Returning Values ### Returning Values
When you make a call using boto3, you will probably get back some useful information that you When you make a call using boto3, you will probably get back some useful information that you

Loading…
Cancel
Save