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:
parent
ff4e4c055c
commit
a013e69d67
3 changed files with 49 additions and 10 deletions
2
changelogs/fragments/719-manageiq-resource_id.yml
Normal file
2
changelogs/fragments/719-manageiq-resource_id.yml
Normal 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).
|
|
@ -37,7 +37,7 @@ options:
|
|||
resource_type:
|
||||
type: str
|
||||
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
|
||||
choices: ['provider', 'host', 'vm', 'blueprint', 'category', 'cluster',
|
||||
'data store', 'group', 'resource pool', 'service', 'service template',
|
||||
|
@ -45,8 +45,14 @@ options:
|
|||
resource_name:
|
||||
type: str
|
||||
description:
|
||||
- the name of the resource to which the profile should be [un]assigned
|
||||
required: true
|
||||
- The name of the resource to which the profile should be [un]assigned.
|
||||
- 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 = '''
|
||||
|
@ -296,7 +302,8 @@ def main():
|
|||
actions = {'present': 'assign', 'absent': 'unassign', 'list': 'list'}
|
||||
argument_spec = dict(
|
||||
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',
|
||||
choices=list(manageiq_entities().keys())),
|
||||
state=dict(required=False, type='str',
|
||||
|
@ -307,6 +314,8 @@ def main():
|
|||
|
||||
module = AnsibleModule(
|
||||
argument_spec=argument_spec,
|
||||
mutually_exclusive=[["resource_id", "resource_name"]],
|
||||
required_one_of=[["resource_id", "resource_name"]],
|
||||
required_if=[
|
||||
('state', 'present', ['policy_profiles']),
|
||||
('state', 'absent', ['policy_profiles'])
|
||||
|
@ -314,6 +323,7 @@ def main():
|
|||
)
|
||||
|
||||
policy_profiles = module.params['policy_profiles']
|
||||
resource_id = module.params['resource_id']
|
||||
resource_type_key = module.params['resource_type']
|
||||
resource_name = module.params['resource_name']
|
||||
state = module.params['state']
|
||||
|
@ -325,7 +335,8 @@ def main():
|
|||
manageiq = ManageIQ(module)
|
||||
|
||||
# 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)
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ options:
|
|||
resource_type:
|
||||
type: str
|
||||
description:
|
||||
- the relevant resource type in manageiq
|
||||
- The relevant resource type in manageiq.
|
||||
required: true
|
||||
choices: ['provider', 'host', 'vm', 'blueprint', 'category', 'cluster',
|
||||
'data store', 'group', 'resource pool', 'service', 'service template',
|
||||
|
@ -45,8 +45,14 @@ options:
|
|||
resource_name:
|
||||
type: str
|
||||
description:
|
||||
- the relevant resource name in manageiq
|
||||
required: true
|
||||
- The name of the resource at which tags will be controlled.
|
||||
- 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 = '''
|
||||
|
@ -65,6 +71,21 @@ EXAMPLES = '''
|
|||
password: 'smartvm'
|
||||
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
|
||||
community.general.manageiq_tags:
|
||||
state: absent
|
||||
|
@ -241,7 +262,8 @@ def main():
|
|||
actions = {'present': 'assign', 'absent': 'unassign', 'list': 'list'}
|
||||
argument_spec = dict(
|
||||
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',
|
||||
choices=list(manageiq_entities().keys())),
|
||||
state=dict(required=False, type='str',
|
||||
|
@ -252,6 +274,8 @@ def main():
|
|||
|
||||
module = AnsibleModule(
|
||||
argument_spec=argument_spec,
|
||||
mutually_exclusive=[["resource_id", "resource_name"]],
|
||||
required_one_of=[["resource_id", "resource_name"]],
|
||||
required_if=[
|
||||
('state', 'present', ['tags']),
|
||||
('state', 'absent', ['tags'])
|
||||
|
@ -259,6 +283,7 @@ def main():
|
|||
)
|
||||
|
||||
tags = module.params['tags']
|
||||
resource_id = module.params['resource_id']
|
||||
resource_type_key = module.params['resource_type']
|
||||
resource_name = module.params['resource_name']
|
||||
state = module.params['state']
|
||||
|
@ -270,7 +295,8 @@ def main():
|
|||
manageiq = ManageIQ(module)
|
||||
|
||||
# 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)
|
||||
|
||||
|
|
Loading…
Reference in a new issue