mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Merge pull request #15183 from wimnat/feature/boto3_helpers
Some helper functions to work with boto3
This commit is contained in:
commit
bbbf7a558a
1 changed files with 92 additions and 0 deletions
|
@ -283,3 +283,95 @@ def camel_dict_to_snake_dict(camel_dict):
|
||||||
snake_dict[camel_to_snake(k)] = v
|
snake_dict[camel_to_snake(k)] = v
|
||||||
|
|
||||||
return snake_dict
|
return snake_dict
|
||||||
|
|
||||||
|
|
||||||
|
def ansible_dict_to_boto3_filter_list(filters_dict):
|
||||||
|
|
||||||
|
""" Convert an Ansible dict of filters to list of dicts that boto3 can use
|
||||||
|
Args:
|
||||||
|
filters_dict (dict): Dict of AWS filters.
|
||||||
|
Basic Usage:
|
||||||
|
>>> filters = {'some-aws-id', 'i-01234567'}
|
||||||
|
>>> ansible_dict_to_boto3_filter_list(filters)
|
||||||
|
{
|
||||||
|
'some-aws-id': 'i-01234567'
|
||||||
|
}
|
||||||
|
Returns:
|
||||||
|
List: List of AWS filters and their values
|
||||||
|
[
|
||||||
|
{
|
||||||
|
'Name': 'some-aws-id',
|
||||||
|
'Values': [
|
||||||
|
'i-01234567',
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
"""
|
||||||
|
|
||||||
|
filters_list = []
|
||||||
|
for k,v in filters_dict.iteritems():
|
||||||
|
filter_dict = {'Name': k}
|
||||||
|
if isinstance(v, basestring):
|
||||||
|
filter_dict['Values'] = [v]
|
||||||
|
else:
|
||||||
|
filter_dict['Values'] = v
|
||||||
|
|
||||||
|
filters_list.append(filter_dict)
|
||||||
|
|
||||||
|
return filters_list
|
||||||
|
|
||||||
|
|
||||||
|
def boto3_tag_list_to_ansible_dict(tags_list):
|
||||||
|
|
||||||
|
""" Convert a boto3 list of resource tags to a flat dict of key:value pairs
|
||||||
|
Args:
|
||||||
|
tags_list (list): List of dicts representing AWS tags.
|
||||||
|
Basic Usage:
|
||||||
|
>>> tags_list = [{'Key': 'MyTagKey', 'Value': 'MyTagValue'}]
|
||||||
|
>>> boto3_tag_list_to_ansible_dict(tags_list)
|
||||||
|
[
|
||||||
|
{
|
||||||
|
'Key': 'MyTagKey',
|
||||||
|
'Value': 'MyTagValue'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
Returns:
|
||||||
|
Dict: Dict of key:value pairs representing AWS tags
|
||||||
|
{
|
||||||
|
'MyTagKey': 'MyTagValue',
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
tags_dict = {}
|
||||||
|
for tag in tags_list:
|
||||||
|
tags_dict[tag['Key']] = tag['Value']
|
||||||
|
|
||||||
|
return tags_dict
|
||||||
|
|
||||||
|
|
||||||
|
def ansible_dict_to_boto3_tag_list(tags_dict):
|
||||||
|
|
||||||
|
""" Convert a flat dict of key:value pairs representing AWS resource tags to a boto3 list of dicts
|
||||||
|
Args:
|
||||||
|
tags_dict (dict): Dict representing AWS resource tags.
|
||||||
|
Basic Usage:
|
||||||
|
>>> tags_dict = {'MyTagKey': 'MyTagValue'}
|
||||||
|
>>> ansible_dict_to_boto3_tag_list(tags_dict)
|
||||||
|
{
|
||||||
|
'MyTagKey': 'MyTagValue'
|
||||||
|
}
|
||||||
|
Returns:
|
||||||
|
List: List of dicts containing tag keys and values
|
||||||
|
[
|
||||||
|
{
|
||||||
|
'Key': 'MyTagKey',
|
||||||
|
'Value': 'MyTagValue'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
"""
|
||||||
|
|
||||||
|
tags_list = []
|
||||||
|
for k,v in tags_dict.iteritems():
|
||||||
|
tags_list.append({'Key': k, 'Value': v})
|
||||||
|
|
||||||
|
return tags_list
|
||||||
|
|
Loading…
Reference in a new issue