summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryaacov <kobi.zamir@gmail.com>2017-09-26 02:52:10 +0300
committerRené Moser <mail@renemoser.net>2017-09-29 12:54:48 +0200
commit4db133e7255cd26ba8e323c3b97709ea596d1dc6 (patch)
tree6d1dcef0eb851c5712c32b76b7ee837c06716d7a
parent8b9c4de3b0df46b6f2bef369b9d45be2de82dc6e (diff)
downloadansible-4db133e7255cd26ba8e323c3b97709ea596d1dc6.tar.gz
add a state list option
-rw-r--r--lib/ansible/modules/remote_management/manageiq/manageiq_tags.py42
1 files changed, 32 insertions, 10 deletions
diff --git a/lib/ansible/modules/remote_management/manageiq/manageiq_tags.py b/lib/ansible/modules/remote_management/manageiq/manageiq_tags.py
index b459c03cfc..9dee0d3f27 100644
--- a/lib/ansible/modules/remote_management/manageiq/manageiq_tags.py
+++ b/lib/ansible/modules/remote_management/manageiq/manageiq_tags.py
@@ -29,15 +29,17 @@ description:
options:
state:
description:
- - absent - tags should not exist, present - tags should be.
+ - absent - tags should not exist,
+ - present - tags should be,
+ - list - list current tags.
required: False
- choices: ['absent', 'present']
+ choices: ['absent', 'present', 'list']
default: 'present'
tags:
description:
- tags - list of dictionaries, each includes 'name' and 'category' keys.
- - categories - tag categories.
- required: true
+ - required if state is present or absent.
+ required: false
default: null
resource_type:
description:
@@ -85,6 +87,17 @@ EXAMPLES = '''
username: 'admin'
password: 'smartvm'
verify_ssl: False
+
+- name: List current tags for a provider in ManageIQ
+ manageiq_tags:
+ state: list
+ resource_name: 'EngLab'
+ resource_type: 'provider'
+ manageiq_connection:
+ url: 'http://127.0.0.1:3000'
+ username: 'admin'
+ password: 'smartvm'
+ verify_ssl: False
'''
RETURN = '''
@@ -205,19 +218,23 @@ class ManageIQTags(object):
def main():
- actions = {'present': 'assign', 'absent': 'unassign'}
+ actions = {'present': 'assign', 'absent': 'unassign', 'list': 'list'}
module = AnsibleModule(
argument_spec=dict(
manageiq_connection=dict(required=True, type='dict',
options=manageiq_argument_spec()),
- tags=dict(required=True, type='list'),
+ tags=dict(type='list'),
resource_name=dict(required=True, type='str'),
resource_type=dict(required=True, type='str',
choices=manageiq_entities().keys()),
state=dict(required=False, type='str',
- choices=['present', 'absent'], default='present'),
- )
+ choices=['present', 'absent', 'list'], default='present'),
+ ),
+ required_if=[
+ ('state', 'present', ['tags']),
+ ('state', 'absent', ['tags'])
+ ],
)
tags = module.params['tags']
@@ -236,8 +253,13 @@ def main():
manageiq_tags = ManageIQTags(manageiq, resource_type, resource_id)
- # assign or unassign the tags
- res_args = manageiq_tags.assign_or_unassign_tags(tags, action)
+ if action == 'list':
+ # return a list of current tags for this object
+ current_tags = manageiq_tags.query_resource_tags()
+ res_args = dict(changed=False, tags=current_tags)
+ else:
+ # assign or unassign the tags
+ res_args = manageiq_tags.assign_or_unassign_tags(tags, action)
module.exit_json(**res_args)