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

ACI Contract Subject to Filter: Update module to use new URL Method (#28621)

This commit is contained in:
Jacob McGill 2017-08-24 21:14:36 -04:00 committed by Dag Wieers
parent ba420c47cd
commit 037ef743c3

View file

@ -33,15 +33,16 @@ options:
description:
- The name of the contract.
aliases: [ contract_name ]
filter_name:
filter:
description:
- The name of the Filter to bind to the Subject.
log:
description:
- Determines if the binding should be set to log.
- The APIC defaults new Subject to Filter bindings to a value of none.
- The APIC defaults new Subject to Filter bindings to C(none).
choices: [ log, none ]
aliases: [ directive ]
default: none
subject:
description:
- The name of the Contract Subject.
@ -69,7 +70,7 @@ EXAMPLES = r'''
tenant: '{{ tenant }}'
contract: '{{ contract }}'
subject: '{{ subject }}'
filter_name: '{{ filter_name }}'
filter: '{{ filter }}'
log: '{{ log }}'
'''
@ -96,8 +97,10 @@ def main():
module = AnsibleModule(
argument_spec=argument_spec,
supports_check_mode=True,
required_if=[['state', 'absent', ['contract', 'filter', 'subject', 'tenant']],
['state', 'present', ['contract', 'filter', 'subject', 'tenant']]]
required_if=[
['state', 'absent', ['contract', 'filter', 'subject', 'tenant']],
['state', 'present', ['contract', 'filter', 'subject', 'tenant']],
],
)
# contract = module.params['contract']
@ -107,26 +110,26 @@ def main():
# tenant = module.params['tenant']
state = module.params['state']
# Add subject_filter key to modul.params for building the URL
module.params['subject_filter'] = filter_name
# Convert log to empty string if none, as that is what API expects. An empty string is not a good option to present the user.
if log == 'none':
log = ''
# TODO: cleanup this logic and provide better filter_strings for all options
if filter_name is not None:
# Work with specific binding
path = 'api/mo/uni/tn-%(tenant)s/brc-%(contract)s/subj-%(subject)s/rssubjFiltAtt-%(filter)s.json' % module.params
else:
path = 'api/class/vzRsSubjFiltAtt.json'
aci = ACIModule(module)
aci.result['url'] = '%(protocol)s://%(hostname)s/' % aci.params + path
aci.construct_url(root_class='tenant', subclass_1='contract', subclass_2='subject', subclass_3='subject_filter')
aci.get_existing()
if state == 'present':
# Filter out module parameters with null values
aci.payload(aci_class='vzRsSubjFiltAtt', class_config=dict(tnVzFilterName=filter_name, directives=log))
aci.payload(
aci_class='vzRsSubjFiltAtt',
class_config=dict(
tnVzFilterName=filter_name,
directives=log,
),
)
# Generate config diff which will be used as POST request body
aci.get_diff(aci_class='vzRsSubjFiltAtt')
@ -137,6 +140,9 @@ def main():
elif state == 'absent':
aci.delete_config()
# Remove subject_filter used to build URL from module.params
module.params.pop('subject_filter')
module.exit_json(**aci.result)