1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Extending manageiq modules with parameter resource_id (#719)

* Extending modules with resource_id

* Added documentation

* Fixed syntax
Changed resource_type back to required true
Added description identifier

* Added changelog fragment.

* fixed syntax

* Improved changelog fragment content.

* Updated description

* Changed if statement

* Changed changelog fragement filename

* version bump

* removed duplicate type

* Apply suggestions from code review

* Update plugins/modules/remote_management/manageiq/manageiq_tags.py

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
phospi 2021-03-08 06:56:34 +01:00 committed by GitHub
parent ff4e4c055c
commit a013e69d67
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 10 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- manageiq_tags and manageiq_policies - added new parameter ``resource_id``. This parameter can be used instead of parameter ``resource_name`` (https://github.com/ansible-collections/community.general/pull/719).

View file

@ -37,7 +37,7 @@ options:
resource_type: resource_type:
type: str type: str
description: description:
- the type of the resource to which the profile should be [un]assigned - The type of the resource to which the profile should be [un]assigned.
required: true required: true
choices: ['provider', 'host', 'vm', 'blueprint', 'category', 'cluster', choices: ['provider', 'host', 'vm', 'blueprint', 'category', 'cluster',
'data store', 'group', 'resource pool', 'service', 'service template', 'data store', 'group', 'resource pool', 'service', 'service template',
@ -45,8 +45,14 @@ options:
resource_name: resource_name:
type: str type: str
description: description:
- the name of the resource to which the profile should be [un]assigned - The name of the resource to which the profile should be [un]assigned.
required: true - Must be specified if I(resource_id) is not set. Both options are mutually exclusive.
resource_id:
type: int
description:
- The ID of the resource to which the profile should be [un]assigned.
- Must be specified if I(resource_name) is not set. Both options are mutually exclusive.
version_added: 2.2.0
''' '''
EXAMPLES = ''' EXAMPLES = '''
@ -296,7 +302,8 @@ def main():
actions = {'present': 'assign', 'absent': 'unassign', 'list': 'list'} actions = {'present': 'assign', 'absent': 'unassign', 'list': 'list'}
argument_spec = dict( argument_spec = dict(
policy_profiles=dict(type='list'), policy_profiles=dict(type='list'),
resource_name=dict(required=True, type='str'), resource_id=dict(required=False, type='int'),
resource_name=dict(required=False, type='str'),
resource_type=dict(required=True, type='str', resource_type=dict(required=True, type='str',
choices=list(manageiq_entities().keys())), choices=list(manageiq_entities().keys())),
state=dict(required=False, type='str', state=dict(required=False, type='str',
@ -307,6 +314,8 @@ def main():
module = AnsibleModule( module = AnsibleModule(
argument_spec=argument_spec, argument_spec=argument_spec,
mutually_exclusive=[["resource_id", "resource_name"]],
required_one_of=[["resource_id", "resource_name"]],
required_if=[ required_if=[
('state', 'present', ['policy_profiles']), ('state', 'present', ['policy_profiles']),
('state', 'absent', ['policy_profiles']) ('state', 'absent', ['policy_profiles'])
@ -314,6 +323,7 @@ def main():
) )
policy_profiles = module.params['policy_profiles'] policy_profiles = module.params['policy_profiles']
resource_id = module.params['resource_id']
resource_type_key = module.params['resource_type'] resource_type_key = module.params['resource_type']
resource_name = module.params['resource_name'] resource_name = module.params['resource_name']
state = module.params['state'] state = module.params['state']
@ -325,7 +335,8 @@ def main():
manageiq = ManageIQ(module) manageiq = ManageIQ(module)
# query resource id, fail if resource does not exist # query resource id, fail if resource does not exist
resource_id = manageiq.find_collection_resource_or_fail(resource_type, name=resource_name)['id'] if resource_id is None:
resource_id = manageiq.find_collection_resource_or_fail(resource_type, name=resource_name)['id']
manageiq_policies = ManageIQPolicies(manageiq, resource_type, resource_id) manageiq_policies = ManageIQPolicies(manageiq, resource_type, resource_id)

View file

@ -37,7 +37,7 @@ options:
resource_type: resource_type:
type: str type: str
description: description:
- the relevant resource type in manageiq - The relevant resource type in manageiq.
required: true required: true
choices: ['provider', 'host', 'vm', 'blueprint', 'category', 'cluster', choices: ['provider', 'host', 'vm', 'blueprint', 'category', 'cluster',
'data store', 'group', 'resource pool', 'service', 'service template', 'data store', 'group', 'resource pool', 'service', 'service template',
@ -45,8 +45,14 @@ options:
resource_name: resource_name:
type: str type: str
description: description:
- the relevant resource name in manageiq - The name of the resource at which tags will be controlled.
required: true - Must be specified if I(resource_id) is not set. Both options are mutually exclusive.
resource_id:
description:
- The ID of the resource at which tags will be controlled.
- Must be specified if I(resource_name) is not set. Both options are mutually exclusive.
type: int
version_added: 2.2.0
''' '''
EXAMPLES = ''' EXAMPLES = '''
@ -65,6 +71,21 @@ EXAMPLES = '''
password: 'smartvm' password: 'smartvm'
validate_certs: False validate_certs: False
- name: Create new tags for a provider in ManageIQ
community.general.manageiq_tags:
resource_id: 23000000790497
resource_type: 'provider'
tags:
- category: environment
name: prod
- category: owner
name: prod_ops
manageiq_connection:
url: 'http://127.0.0.1:3000'
username: 'admin'
password: 'smartvm'
validate_certs: False
- name: Remove tags for a provider in ManageIQ - name: Remove tags for a provider in ManageIQ
community.general.manageiq_tags: community.general.manageiq_tags:
state: absent state: absent
@ -241,7 +262,8 @@ def main():
actions = {'present': 'assign', 'absent': 'unassign', 'list': 'list'} actions = {'present': 'assign', 'absent': 'unassign', 'list': 'list'}
argument_spec = dict( argument_spec = dict(
tags=dict(type='list'), tags=dict(type='list'),
resource_name=dict(required=True, type='str'), resource_id=dict(required=False, type='int'),
resource_name=dict(required=False, type='str'),
resource_type=dict(required=True, type='str', resource_type=dict(required=True, type='str',
choices=list(manageiq_entities().keys())), choices=list(manageiq_entities().keys())),
state=dict(required=False, type='str', state=dict(required=False, type='str',
@ -252,6 +274,8 @@ def main():
module = AnsibleModule( module = AnsibleModule(
argument_spec=argument_spec, argument_spec=argument_spec,
mutually_exclusive=[["resource_id", "resource_name"]],
required_one_of=[["resource_id", "resource_name"]],
required_if=[ required_if=[
('state', 'present', ['tags']), ('state', 'present', ['tags']),
('state', 'absent', ['tags']) ('state', 'absent', ['tags'])
@ -259,6 +283,7 @@ def main():
) )
tags = module.params['tags'] tags = module.params['tags']
resource_id = module.params['resource_id']
resource_type_key = module.params['resource_type'] resource_type_key = module.params['resource_type']
resource_name = module.params['resource_name'] resource_name = module.params['resource_name']
state = module.params['state'] state = module.params['state']
@ -270,7 +295,8 @@ def main():
manageiq = ManageIQ(module) manageiq = ManageIQ(module)
# query resource id, fail if resource does not exist # query resource id, fail if resource does not exist
resource_id = query_resource_id(manageiq, resource_type, resource_name) if resource_id is None:
resource_id = query_resource_id(manageiq, resource_type, resource_name)
manageiq_tags = ManageIQTags(manageiq, resource_type, resource_id) manageiq_tags = ManageIQTags(manageiq, resource_type, resource_id)