Skip to content

Commit a848c40

Browse files
anvitha-jainlhercot
authored andcommitted
[ignore_changes] Rebasing with latest master.
1 parent bd96b2a commit a848c40

File tree

4 files changed

+62
-49
lines changed

4 files changed

+62
-49
lines changed

plugins/module_utils/template.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,7 @@ def update_config_with_template_and_references(self, config_data, reference_coll
429429
def check_template_when_name_is_provided(self, parameter):
430430
if parameter and parameter.get("name") and not (parameter.get("template") or parameter.get("template_id")):
431431
self.mso.fail_json(msg="Either 'template' or 'template_id' associated with '{}' must be provided".format(parameter.get("name")))
432+
432433
def get_route_map_policy_for_multicast_uuid(self, route_map_policy_for_multicast_name):
433434
"""
434435
Get the UUID of an Route Map Policy for Multicast by name.

plugins/module_utils/utils.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def append_update_ops_data(ops, existing_data, update_path, replace_data=None, r
7171
"description": "new_description",
7272
"ospfIntfPol": {
7373
"ifControl": {
74-
"adminState": "disbaled",
74+
"adminState": "disabled",
7575
},
7676
"cost": 0,
7777
},
@@ -146,18 +146,3 @@ def check_if_all_elements_are_none(values):
146146
:return: True if all elements are None, False otherwise. -> bool
147147
"""
148148
return all(value is None for value in values)
149-
150-
151-
def get_template_object_name_by_uuid(mso, object_type, uuid):
152-
"""
153-
Retrieve the name of a specific object type in the MSO template using its UUID.
154-
:param mso: An instance of the MSO class, which provides methods for making API requests -> MSO Class instance
155-
:param object_type: The type of the object to retrieve the name for -> Str
156-
:param uuid: The UUID of the object to retrieve the name for -> Str
157-
:return: Str | None: The processed result which could be:
158-
When the UUID is existing, returns object name -> Str
159-
When the UUID is not existing -> None
160-
"""
161-
response_object = mso.request("templates/objects?type={0}&uuid={1}".format(object_type, uuid), "GET")
162-
if response_object:
163-
return response_object.get("name")

plugins/modules/ndo_tenant_igmp_interface_policy.py

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@
2424
template:
2525
description:
2626
- The name of the tenant template.
27+
- This parameter or O(template_id) is required.
2728
type: str
2829
aliases: [ tenant_template ]
2930
required: true
3031
template_id:
3132
description:
3233
- The ID of the L3Out template.
34+
- This parameter or O(template) is required.
3335
type: str
3436
aliases: [ l3out_template_id ]
3537
name:
@@ -42,6 +44,7 @@
4244
- The UUID of the IGMP Interface Policy.
4345
- This parameter is required when the IGMP Interface Policy O(name) needs to be updated.
4446
type: str
47+
aliases: [ igmp_interface_policy_uuid ]
4548
description:
4649
description:
4750
- The description of the IGMP Interface Policy.
@@ -236,8 +239,8 @@
236239
startup_query_interval: 31
237240
querier_timeout: 255
238241
robustness_variable: 2
239-
state_limit_route_map_uuid: route_map_policy_for_multicast_uuid
240-
report_policy_route_map_uuid: route_map_policy_for_multicast_uuid
242+
state_limit_route_map_uuid: "2be2b2e6-727d-4534-9d09-4abc36ed0194"
243+
report_policy_route_map_uuid: "{{ route_map_policy_for_multicast.current.uuid }}"
241244
static_report_route_map:
242245
name: TestStaticReportRouteMap
243246
maximum_multicast_entries: 4294967295
@@ -315,7 +318,6 @@
315318
from ansible_collections.cisco.mso.plugins.module_utils.utils import (
316319
append_update_ops_data,
317320
check_if_all_elements_are_none,
318-
get_template_object_name_by_uuid,
319321
)
320322

321323

@@ -325,7 +327,7 @@ def main():
325327
template=dict(type="str", required=True, aliases=["tenant_template"]),
326328
template_id=dict(type="str", aliases=["l3out_template_id"]),
327329
name=dict(type="str", aliases=["igmp_interface_policy"]),
328-
uuid=dict(type="str"),
330+
uuid=dict(type="str", aliases=["igmp_interface_policy_uuid"]),
329331
description=dict(type="str"),
330332
version3_asm=dict(type="str", aliases=["allow_version3_asm"], choices=["enabled", "disabled"]),
331333
fast_leave=dict(type="str", choices=["enabled", "disabled"]),
@@ -373,9 +375,6 @@ def main():
373375
argument_spec=argument_spec,
374376
supports_check_mode=True,
375377
required_if=[
376-
["state", "present", ["template", "template_id"], True],
377-
["state", "query", ["template", "template_id"], True],
378-
["state", "absent", ["template", "template_id"], True],
379378
["state", "absent", ["name", "uuid"], True],
380379
["state", "present", ["name", "uuid"], True],
381380
],
@@ -385,6 +384,9 @@ def main():
385384
["report_policy_route_map_uuid", "report_policy_route_map"],
386385
["static_report_route_map_uuid", "static_report_route_map"],
387386
],
387+
required_one_of=[
388+
["template", "template_id"],
389+
],
388390
)
389391

390392
mso = MSOModule(module)
@@ -428,19 +430,26 @@ def main():
428430
object_description = "IGMP Interface Policy"
429431
path = "/tenantPolicyTemplate/template/igmpInterfacePolicies"
430432

433+
reference_dict = {
434+
"stateLimitRouteMap": {"name": "stateLimitRouteMapName", "reference": "stateLimitRouteMapRef", "type": "mcastRouteMap"},
435+
"reportPolicyRouteMap": {"name": "reportPolicyRouteMapName", "reference": "reportPolicyRouteMapRef", "type": "mcastRouteMap"},
436+
"staticReportRouteMap": {"name": "staticReportRouteMapName", "reference": "staticReportRouteMapRef", "type": "mcastRouteMap"},
437+
}
438+
431439
if uuid or name:
432440
match = mso_template.get_object_by_key_value_pairs(
433441
object_description,
434442
existing_igmp_interface_policies,
435443
[KVPair("uuid", uuid) if uuid else KVPair("name", name)],
436444
)
437445
if match:
438-
igmp_interface_policy_attrs_path = "{0}/{1}".format(path, match.index)
439-
set_names_for_references(mso, match.details)
446+
mso_template.update_config_with_template_and_references(match.details, reference_dict)
440447
mso.existing = mso.previous = copy.deepcopy(match.details)
441448
else:
442-
mso.existing = mso.previous = [set_names_for_references(mso, igmp_interface_policy) for igmp_interface_policy in existing_igmp_interface_policies]
443-
# existing_igmp_interface_policies
449+
mso.existing = mso.previous = [
450+
mso_template.update_config_with_template_and_references(igmp_interface_policy, reference_dict)
451+
for igmp_interface_policy in existing_igmp_interface_policies
452+
]
444453

445454
if state == "present":
446455
if uuid and not mso.existing:
@@ -494,7 +503,6 @@ def main():
494503
if (static_report_route_map_uuid == "" or empty_static_report_route_map) and match.details.get("staticReportRouteMapRef"):
495504
mso_values_remove.append("staticReportRouteMapRef")
496505

497-
if mso.existing:
498506
append_update_ops_data(ops, match.details, "{0}/{1}".format(path, match.index), mso_values, mso_values_remove)
499507
mso.sanitize(match.details, collate=True)
500508
else:
@@ -512,27 +520,16 @@ def main():
512520
object_description, existing_igmp_interface_policies, [KVPair("uuid", uuid) if uuid else KVPair("name", name)]
513521
)
514522
if match:
515-
set_names_for_references(mso, match.details)
523+
mso_template.update_config_with_template_and_references(match.details, reference_dict)
516524
mso.existing = match.details # When the state is present
517525
else:
518526
mso.existing = {} # When the state is absent
519527
elif module.check_mode and state != "query": # When the state is present/absent with check mode
520-
set_names_for_references(mso, mso.proposed)
528+
mso_template.update_config_with_template_and_references(mso.proposed, reference_dict)
521529
mso.existing = mso.proposed if state == "present" else {}
522530

523531
mso.exit_json()
524532

525533

526-
def set_names_for_references(mso, route_map_dict):
527-
if route_map_dict.get("stateLimitRouteMapRef"):
528-
route_map_dict["stateLimitRouteMapName"] = get_template_object_name_by_uuid(mso, "mcastRouteMap", route_map_dict.get("stateLimitRouteMapRef"))
529-
if route_map_dict.get("reportPolicyRouteMapRef"):
530-
route_map_dict["reportPolicyRouteMapName"] = get_template_object_name_by_uuid(mso, "mcastRouteMap", route_map_dict.get("reportPolicyRouteMapRef"))
531-
if route_map_dict.get("staticReportRouteMapRef"):
532-
route_map_dict["staticReportRouteMapName"] = get_template_object_name_by_uuid(mso, "mcastRouteMap", route_map_dict.get("staticReportRouteMapRef"))
533-
534-
return route_map_dict
535-
536-
537534
if __name__ == "__main__":
538535
main()

tests/integration/targets/ndo_tenant_igmp_interface_policy/tasks/main.yml

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,13 @@
130130
that:
131131
- cm_create_new_igmp_interface_policy is changed
132132
- cm_create_new_igmp_interface_policy.previous == {}
133-
- nm_create_new_igmp_interface_policy.current.name == 'ansible_igmp_interface_policy'
133+
- cm_create_new_igmp_interface_policy.current.name == 'ansible_igmp_interface_policy'
134+
- cm_create_new_igmp_interface_policy.current.templateName == 'ansible_tenant_template'
134135
- nm_create_new_igmp_interface_policy is changed
135136
- nm_create_new_igmp_interface_policy.previous == {}
136137
- nm_create_new_igmp_interface_policy.current.name == 'ansible_igmp_interface_policy'
138+
- nm_create_new_igmp_interface_policy.current.templateName == 'ansible_tenant_template'
139+
- cm_create_new_igmp_interface_policy.current.templateId == nm_create_new_igmp_interface_policy.current.templateId
137140
- nm_create_new_igmp_interface_policy.current.uuid is defined
138141
- nm_create_new_igmp_interface_policy.current.description == ""
139142
- nm_create_new_igmp_interface_policy.current.enableFastLeaveControl == false
@@ -156,6 +159,8 @@
156159
- nm_create_new_igmp_interface_policy.current.staticReportRouteMapRef == ""
157160
- nm_create_new_igmp_interface_policy_again is not changed
158161
- nm_create_new_igmp_interface_policy_again.previous.name == nm_create_new_igmp_interface_policy_again.current.name == 'ansible_igmp_interface_policy'
162+
- nm_create_new_igmp_interface_policy_again.previous.templateName == nm_create_new_igmp_interface_policy_again.current.templateName == 'ansible_tenant_template'
163+
- nm_create_new_igmp_interface_policy_again.previous.templateId == nm_create_new_igmp_interface_policy_again.current.templateId
159164
- nm_create_new_igmp_interface_policy_again.previous.description == nm_create_new_igmp_interface_policy_again.current.description == ""
160165
- nm_create_new_igmp_interface_policy_again.previous.enableFastLeaveControl == nm_create_new_igmp_interface_policy_again.current.enableFastLeaveControl == false
161166
- nm_create_new_igmp_interface_policy_again.previous.enableReportLinkLocalGroups == nm_create_new_igmp_interface_policy_again.current.enableReportLinkLocalGroups == false
@@ -215,6 +220,8 @@
215220
- create_igmp_interface_policy_2 is changed
216221
- create_igmp_interface_policy_2.previous == {}
217222
- create_igmp_interface_policy_2.current.name == 'ansible_igmp_interface_policy_2'
223+
- create_igmp_interface_policy_2.current.templateName == 'ansible_tenant_template'
224+
- create_igmp_interface_policy_2.current.templateId is defined
218225
- create_igmp_interface_policy_2.current.uuid is defined
219226
- create_igmp_interface_policy_2.current.description == 'IGMP Interface Policy 2 description'
220227
- create_igmp_interface_policy_2.current.enableFastLeaveControl == true
@@ -233,8 +240,11 @@
233240
- create_igmp_interface_policy_2.current.startQueryCount == 4
234241
- create_igmp_interface_policy_2.current.startQueryInterval == 1000
235242
- create_igmp_interface_policy_2.current.reportPolicyRouteMapName == 'ansible_test_route_map_policy_2'
243+
- create_igmp_interface_policy_2.current.reportPolicyRouteMapRef is defined
236244
- create_igmp_interface_policy_2.current.stateLimitRouteMapName == 'ansible_test_route_map_policy_1'
245+
- create_igmp_interface_policy_2.current.stateLimitRouteMapRef is defined
237246
- create_igmp_interface_policy_2.current.staticReportRouteMapName == 'ansible_test_route_map_policy_3'
247+
- create_igmp_interface_policy_2.current.staticReportRouteMapRef is defined
238248

239249
# UPDATE
240250
- name: Update an IGMP interface policy (check mode)
@@ -283,6 +293,10 @@
283293
- nm_update_igmp_interface_policy is changed
284294
- cm_update_igmp_interface_policy.previous.name == nm_update_igmp_interface_policy.previous.name == 'ansible_igmp_interface_policy_2'
285295
- cm_update_igmp_interface_policy.current.name == nm_update_igmp_interface_policy.current.name == 'ansible_igmp_interface_policy_2'
296+
- cm_update_igmp_interface_policy.previous.templateName == nm_update_igmp_interface_policy.previous.templateName == 'ansible_tenant_template'
297+
- cm_update_igmp_interface_policy.current.templateName == nm_update_igmp_interface_policy.current.templateName == 'ansible_tenant_template'
298+
- cm_update_igmp_interface_policy.previous.templateId == nm_update_igmp_interface_policy.previous.templateId
299+
- cm_update_igmp_interface_policy.current.templateId == nm_update_igmp_interface_policy.current.templateId
286300
- cm_update_igmp_interface_policy.previous.description == nm_update_igmp_interface_policy.previous.description == 'IGMP Interface Policy 2 description'
287301
- cm_update_igmp_interface_policy.current.description == nm_update_igmp_interface_policy.current.description == 'IGMP Interface Policy 2 description updated'
288302
- cm_update_igmp_interface_policy.previous.enableFastLeaveControl == nm_update_igmp_interface_policy.previous.enableFastLeaveControl == true
@@ -323,6 +337,8 @@
323337
- cm_update_igmp_interface_policy.current.staticReportRouteMapName == nm_update_igmp_interface_policy.current.staticReportRouteMapName == 'ansible_test_route_map_policy_1'
324338
- nm_update_igmp_interface_policy_again is not changed
325339
- nm_update_igmp_interface_policy_again.previous.name == nm_update_igmp_interface_policy_again.current.name == 'ansible_igmp_interface_policy_2'
340+
- nm_update_igmp_interface_policy_again.previous.templateName == nm_update_igmp_interface_policy_again.current.templateName == 'ansible_tenant_template'
341+
- nm_update_igmp_interface_policy_again.previous.templateId == nm_update_igmp_interface_policy_again.current.templateId
326342
- nm_update_igmp_interface_policy_again.previous.description == nm_update_igmp_interface_policy_again.current.description == 'IGMP Interface Policy 2 description updated'
327343
- nm_update_igmp_interface_policy_again.previous.enableFastLeaveControl == nm_update_igmp_interface_policy_again.current.enableFastLeaveControl == false
328344
- nm_update_igmp_interface_policy_again.previous.enableReportLinkLocalGroups == nm_update_igmp_interface_policy_again.current.enableReportLinkLocalGroups == false
@@ -358,6 +374,7 @@
358374
- update_igmp_interface_policy_name is changed
359375
- update_igmp_interface_policy_name.previous.name == 'ansible_igmp_interface_policy_2'
360376
- update_igmp_interface_policy_name.current.name == 'ansible_igmp_interface_policy_2_updated'
377+
- update_igmp_interface_policy_name.current.templateName == 'ansible_tenant_template'
361378

362379
- name: Update the state_limit_route_map and static_report_route_map in ansible_igmp_interface_policy_2_updated
363380
cisco.mso.ndo_tenant_igmp_interface_policy:
@@ -372,6 +389,8 @@
372389
that:
373390
- updated_route_map is changed
374391
- updated_route_map.previous.name == updated_route_map.current.name == 'ansible_igmp_interface_policy_2_updated'
392+
- updated_route_map.previous.templateName == updated_route_map.current.templateName == 'ansible_tenant_template'
393+
- updated_route_map.previous.templateId == updated_route_map.current.templateId
375394
- updated_route_map.previous.stateLimitRouteMapName == 'ansible_test_route_map_policy_2'
376395
- updated_route_map.previous.stateLimitRouteMapRef != ""
377396
- updated_route_map.current.stateLimitRouteMapRef == ""
@@ -384,16 +403,18 @@
384403
<<: *ansible_igmp_interface_policy_2_updated
385404
report_policy_route_map: {}
386405
state: present
387-
register: updated_route_map
406+
register: updated_report_policy_route_map
388407

389-
- name: Assert IGMP Interface Policy 2report_policy_route_map was updated
408+
- name: Assert IGMP Interface Policy 2 report_policy_route_map was updated
390409
assert:
391410
that:
392-
- updated_route_map is changed
393-
- updated_route_map.previous.name == updated_route_map.current.name == 'ansible_igmp_interface_policy_2_updated'
394-
- updated_route_map.previous.reportPolicyRouteMapName == 'ansible_test_route_map_policy_3'
395-
- updated_route_map.previous.reportPolicyRouteMapRef != ""
396-
- updated_route_map.current.reportPolicyRouteMapRef == ""
411+
- updated_report_policy_route_map is changed
412+
- updated_report_policy_route_map.previous.name == updated_report_policy_route_map.current.name == 'ansible_igmp_interface_policy_2_updated'
413+
- updated_report_policy_route_map.previous.templateName == updated_report_policy_route_map.current.templateName == 'ansible_tenant_template'
414+
- updated_report_policy_route_map.previous.templateId == updated_report_policy_route_map.current.templateId
415+
- updated_report_policy_route_map.previous.reportPolicyRouteMapName == 'ansible_test_route_map_policy_3'
416+
- updated_report_policy_route_map.previous.reportPolicyRouteMapRef != ""
417+
- updated_report_policy_route_map.current.reportPolicyRouteMapRef == ""
397418

398419
# Query
399420
- name: Query an IGMP Interface Policy
@@ -424,12 +445,17 @@
424445
that:
425446
- query_igmp_interface_policy is not changed
426447
- query_igmp_interface_policy.current.name == 'ansible_igmp_interface_policy_2_updated'
448+
- query_igmp_interface_policy.current.templateName == 'ansible_tenant_template'
449+
- query_igmp_interface_policy.current.templateId is defined
427450
- query_igmp_interface_policy_uuid is not changed
428451
- query_igmp_interface_policy_uuid.current.name == 'ansible_igmp_interface_policy'
429452
- query_all_igmp_interface_policies is not changed
430453
- query_all_igmp_interface_policies.current | length == 2
431454
- query_all_igmp_interface_policies.current[0].name == 'ansible_igmp_interface_policy'
455+
- query_all_igmp_interface_policies.current[0].templateName == 'ansible_tenant_template'
432456
- query_all_igmp_interface_policies.current[1].name == 'ansible_igmp_interface_policy_2_updated'
457+
- query_all_igmp_interface_policies.current[1].templateName == 'ansible_tenant_template'
458+
- - query_all_igmp_interface_policies.current[0].templateId == query_all_igmp_interface_policies.current[1].templateId
433459

434460
# DELETE
435461
- name: Delete an IGMP Interface Policy (check mode)
@@ -458,6 +484,8 @@
458484
- nm_delete_igmp_interface_policy is changed
459485
- cm_delete_igmp_interface_policy.current == nm_delete_igmp_interface_policy.current == {}
460486
- cm_delete_igmp_interface_policy.previous.name == nm_delete_igmp_interface_policy.previous.name == 'ansible_igmp_interface_policy_2_updated'
487+
- cm_delete_igmp_interface_policy.previous.templateName == nm_delete_igmp_interface_policy.previous.templateName == 'ansible_tenant_template'
488+
- cm_delete_igmp_interface_policy.previous.templateId == nm_delete_igmp_interface_policy.previous.templateId
461489
- cm_delete_igmp_interface_policy.previous.uuid == nm_delete_igmp_interface_policy.previous.uuid
462490
- cm_delete_igmp_interface_policy.previous.description == nm_delete_igmp_interface_policy.previous.description == 'IGMP Interface Policy 2 description updated'
463491
- cm_delete_igmp_interface_policy.previous.enableFastLeaveControl == nm_delete_igmp_interface_policy.previous.enableFastLeaveControl == false
@@ -494,6 +522,8 @@
494522
that:
495523
- delete_igmp_interface_policy_uuid is changed
496524
- delete_igmp_interface_policy_uuid.previous.name == 'ansible_igmp_interface_policy'
525+
- delete_igmp_interface_policy_uuid.previous.templateName == 'ansible_tenant_template'
526+
- delete_igmp_interface_policy_uuid.previous.templateId is defined
497527
- delete_igmp_interface_policy_uuid.previous.description == ""
498528
- delete_igmp_interface_policy_uuid.current == {}
499529

0 commit comments

Comments
 (0)