Skip to content

Commit 17b70b8

Browse files
mthurstociscoPeter Lewis
andauthored
Fabric links comparison fix for create and remove role (#543)
* Fixed MD_extended usage * updates to fix fabric links comparison on create and remove role * fix pep8 issues * more pep8 fixes --------- Co-authored-by: Peter Lewis <[email protected]>
1 parent 80e3897 commit 17b70b8

File tree

5 files changed

+60
-39
lines changed

5 files changed

+60
-39
lines changed

plugins/action/dtc/existing_links_check.py

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -40,35 +40,45 @@ def run(self, tmp=None, task_vars=None):
4040
results = super(ActionModule, self).run(tmp, task_vars)
4141
existing_links = self._task.args['existing_links']
4242
fabric_links = self._task.args['fabric_links']
43+
switch_list = self._task.args['switch_data_model']
4344
required_links = []
4445
not_required_links = []
4546
for link in fabric_links:
4647
for existing_link in existing_links:
47-
if ('sw1-info' in existing_link and 'sw2-info' in existing_link and
48-
'sw-sys-name' in existing_link['sw1-info'] and 'sw-sys-name' in existing_link['sw2-info'] and
49-
(existing_link['sw1-info']['sw-sys-name'].lower() == link['src_device'].lower() and
50-
existing_link['sw1-info']['if-name'].lower() == link['src_interface'].lower() and
51-
existing_link['sw2-info']['sw-sys-name'].lower() == link['dst_device'].lower() and
52-
existing_link['sw2-info']['if-name'].lower() == link['dst_interface'].lower()) or
53-
(existing_link['sw1-info']['sw-sys-name'].lower() == link['dst_device'].lower() and
54-
existing_link['sw1-info']['if-name'].lower() == link['dst_interface'].lower() and
55-
existing_link['sw2-info']['sw-sys-name'].lower() == link['src_device'].lower() and
56-
existing_link['sw2-info']['if-name'].lower() == link['src_interface'].lower())):
57-
if 'templateName' not in existing_link:
58-
not_required_links.append(link)
59-
elif existing_link['templateName'] == 'int_pre_provision_intra_fabric_link':
60-
required_links.append(link)
61-
elif existing_link['templateName'] == 'int_intra_fabric_num_link':
62-
link['template'] = 'int_intra_fabric_num_link'
63-
link['profile']['peer1_ipv4_addr'] = existing_link['nvPairs']['PEER1_IP']
64-
link['profile']['peer2_ipv4_addr'] = existing_link['nvPairs']['PEER2_IP']
65-
if existing_link.get('nvPairs').get('ENABLE_MACSEC'):
66-
link['profile']['enable_macsec'] = existing_link['nvPairs']['ENABLE_MACSEC']
48+
if (
49+
'sw1-info' in existing_link and
50+
'sw2-info' in existing_link and
51+
'sw-sys-name' in existing_link['sw1-info'] and
52+
'sw-sys-name' in existing_link['sw2-info']
53+
):
54+
for switch in switch_list:
55+
if existing_link['sw1-info']['sw-sys-name'].lower() == switch['name'].lower():
56+
existing_link['sw1-info']['sw-sys-name'] = switch['management']['management_ipv4_address']
57+
if existing_link['sw2-info']['sw-sys-name'].lower() == switch['name'].lower():
58+
existing_link['sw2-info']['sw-sys-name'] = switch['management']['management_ipv4_address']
59+
if ((existing_link['sw1-info']['sw-sys-name'].lower() == link['src_device'].lower() and
60+
existing_link['sw1-info']['if-name'].lower() == link['src_interface'].lower() and
61+
existing_link['sw2-info']['sw-sys-name'].lower() == link['dst_device'].lower() and
62+
existing_link['sw2-info']['if-name'].lower() == link['dst_interface'].lower()) or
63+
(existing_link['sw1-info']['sw-sys-name'].lower() == link['dst_device'].lower() and
64+
existing_link['sw1-info']['if-name'].lower() == link['dst_interface'].lower() and
65+
existing_link['sw2-info']['sw-sys-name'].lower() == link['src_device'].lower() and
66+
existing_link['sw2-info']['if-name'].lower() == link['src_interface'].lower())):
67+
if 'templateName' not in existing_link:
68+
not_required_links.append(link)
69+
elif existing_link['templateName'] == 'int_pre_provision_intra_fabric_link':
70+
required_links.append(link)
71+
elif existing_link['templateName'] == 'int_intra_fabric_num_link':
72+
link['template'] = 'int_intra_fabric_num_link'
73+
link['profile']['peer1_ipv4_addr'] = existing_link['nvPairs']['PEER1_IP']
74+
link['profile']['peer2_ipv4_addr'] = existing_link['nvPairs']['PEER2_IP']
75+
if existing_link.get('nvPairs').get('ENABLE_MACSEC'):
76+
link['profile']['enable_macsec'] = existing_link['nvPairs']['ENABLE_MACSEC']
77+
else:
78+
link['profile']['enable_macsec'] = 'false'
79+
required_links.append(link)
6780
else:
68-
link['profile']['enable_macsec'] = 'false'
69-
required_links.append(link)
70-
else:
71-
not_required_links.append(link)
81+
not_required_links.append(link)
7282
if link not in required_links and link not in not_required_links:
7383
required_links.append(link)
7484

plugins/action/dtc/links_filter_and_remove.py

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,26 +40,35 @@ def run(self, tmp=None, task_vars=None):
4040
results = super(ActionModule, self).run(tmp, task_vars)
4141
existing_links = self._task.args['existing_links']
4242
fabric_links = self._task.args['fabric_links']
43-
43+
switch_list = self._task.args['switch_data_model']
4444
required_links = []
4545
links_to_be_removed = []
4646
filtered_existing_links = []
4747
for existing_link in existing_links:
4848
# Cannot assume the existing_link has the 'templateName' key so use get for safety
4949
if existing_link.get('templateName') == "int_pre_provision_intra_fabric_link" or existing_link.get('templateName') == "int_intra_fabric_num_link":
5050
filtered_existing_links.append(existing_link)
51-
for link in fabric_links:
52-
if ('sw1-info' in existing_link and 'sw2-info' in existing_link and
53-
'sw-sys-name' in existing_link['sw1-info'] and 'sw-sys-name' in existing_link['sw2-info'] and
54-
(existing_link['sw1-info']['sw-sys-name'].lower() == link['src_device'].lower() and
55-
existing_link['sw1-info']['if-name'].lower() == link['src_interface'].lower() and
56-
existing_link['sw2-info']['sw-sys-name'].lower() == link['dst_device'].lower() and
57-
existing_link['sw2-info']['if-name'].lower() == link['dst_interface'].lower()) or
58-
(existing_link['sw1-info']['sw-sys-name'].lower() == link['dst_device'].lower() and
59-
existing_link['sw1-info']['if-name'].lower() == link['dst_interface'].lower() and
60-
existing_link['sw2-info']['sw-sys-name'].lower() == link['src_device'].lower() and
61-
existing_link['sw2-info']['if-name'].lower() == link['src_interface'].lower())):
62-
required_links.append(existing_link)
51+
if (
52+
'sw1-info' in existing_link and
53+
'sw2-info' in existing_link and
54+
'sw-sys-name' in existing_link['sw1-info'] and
55+
'sw-sys-name' in existing_link['sw2-info']
56+
):
57+
for switch in switch_list:
58+
if existing_link['sw1-info']['sw-sys-name'].lower() == switch['name'].lower():
59+
existing_link['sw1-info']['sw-sys-name'] = switch['management']['management_ipv4_address']
60+
if existing_link['sw2-info']['sw-sys-name'].lower() == switch['name'].lower():
61+
existing_link['sw2-info']['sw-sys-name'] = switch['management']['management_ipv4_address']
62+
for link in fabric_links:
63+
if ((existing_link['sw1-info']['sw-sys-name'].lower() == link['src_device'].lower() and
64+
existing_link['sw1-info']['if-name'].lower() == link['src_interface'].lower() and
65+
existing_link['sw2-info']['sw-sys-name'].lower() == link['dst_device'].lower() and
66+
existing_link['sw2-info']['if-name'].lower() == link['dst_interface'].lower()) or
67+
(existing_link['sw1-info']['sw-sys-name'].lower() == link['dst_device'].lower() and
68+
existing_link['sw1-info']['if-name'].lower() == link['dst_interface'].lower() and
69+
existing_link['sw2-info']['sw-sys-name'].lower() == link['src_device'].lower() and
70+
existing_link['sw2-info']['if-name'].lower() == link['src_interface'].lower())):
71+
required_links.append(existing_link)
6372
for link in filtered_existing_links:
6473
link_found = False
6574
for required_link in required_links:

roles/dtc/create/tasks/common/fabric.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@
4848
- name: Manage Fabric in Nexus Dashboard
4949
cisco.dcnm.dcnm_fabric:
5050
state: merged
51-
skip_validation: "{{ True if vxlan.fabric.type == 'ISN' else omit }}"
51+
skip_validation: "{{ True if MD_Extended.vxlan.fabric.type == 'ISN' else omit }}"
5252
config: "{{ vars_common_local.fabric_config }}"
5353

5454
- name: Create ANYCAST_RP in Nexus Dashboard
5555
cisco.dcnm.dcnm_resource_manager:
5656
state: merged
57-
fabric: "{{ vxlan.fabric.name }}"
57+
fabric: "{{ MD_Extended.vxlan.fabric.name }}"
5858
config:
5959
- entity_name: "ANYCAST_RP"
6060
pool_type: "IP"

roles/dtc/create/tasks/common/links.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
cisco.nac_dc_vxlan.dtc.existing_links_check:
6262
existing_links: "{{ result_links.response }}"
6363
fabric_links: "{{ fabric_links }}"
64+
switch_data_model: "{{ MD_Extended.vxlan.topology.switches }}"
6465
register: required_links
6566
when: result_links.response is defined
6667

roles/dtc/remove/tasks/common/links.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
cisco.nac_dc_vxlan.dtc.links_filter_and_remove:
6565
existing_links: "{{ result_links.response }}"
6666
fabric_links: "{{ vars_common_vxlan.fabric_links }}"
67+
switch_data_model: "{{ MD_Extended.vxlan.topology.switches }}"
6768
register: links_to_be_removed
6869
when: result_links.response is defined
6970

0 commit comments

Comments
 (0)