|
31 | 31 | serial: "{{ aci_fabric_serial }}" |
32 | 32 | state: present |
33 | 33 |
|
| 34 | +- name: Ensure the dummy fabric node is decommissioned |
| 35 | + cisco.aci.aci_fabric_node_decommission: |
| 36 | + <<: *aci_info |
| 37 | + pod_id: 1 |
| 38 | + node_id: 333 |
| 39 | + remove_from_controller: true |
| 40 | + state: absent |
| 41 | + |
34 | 42 | # SETUP |
35 | 43 | - name: Commission the fabric node |
36 | | - cisco.aci.aci_fabric_node_decommission: |
| 44 | + cisco.aci.aci_fabric_node_decommission: &commission_node |
37 | 45 | <<: *aci_info |
38 | 46 | pod_id: 1 |
39 | 47 | node_id: 201 |
40 | 48 | state: absent |
41 | 49 | register: commission_node |
42 | 50 |
|
43 | | -- name: Query fabric node to check the node is commissioned - $query_commission_node_1 |
| 51 | +- name: Query fabric node to check the node is commissioned |
44 | 52 | cisco.aci.aci_fabric_node_decommission: |
45 | | - <<: *aci_info |
46 | | - pod_id: 1 |
47 | | - node_id: 201 |
| 53 | + <<: *commission_node |
48 | 54 | state: query |
49 | 55 | register: query_commission_node_1 |
50 | 56 |
|
|
55 | 61 | - query_commission_node_1.current == [] |
56 | 62 |
|
57 | 63 | # TEST |
58 | | -- name: Decommission the fabric node (check_mode) - $cm_decommission_node |
| 64 | +- name: Decommission the fabric node (check_mode) |
59 | 65 | cisco.aci.aci_fabric_node_decommission: |
60 | | - <<: *aci_info |
61 | | - pod_id: 1 |
62 | | - node_id: 201 |
| 66 | + <<: *commission_node |
63 | 67 | state: present |
64 | 68 | output_level: debug |
65 | 69 | check_mode: true |
66 | 70 | register: cm_decommission_node |
67 | 71 |
|
68 | | -- name: Decommission the fabric node - $decommission_node |
| 72 | +- name: Decommission the fabric node |
69 | 73 | cisco.aci.aci_fabric_node_decommission: |
70 | | - <<: *aci_info |
71 | | - pod_id: 1 |
72 | | - node_id: 201 |
| 74 | + <<: *commission_node |
73 | 75 | state: present |
74 | 76 | register: decommission_node |
75 | 77 |
|
76 | | -- name: Decommission the fabric node again - $decommission_node_again |
| 78 | +- name: Decommission the fabric node again |
77 | 79 | cisco.aci.aci_fabric_node_decommission: |
| 80 | + <<: *commission_node |
| 81 | + state: present |
| 82 | + register: decommission_node_again |
| 83 | + |
| 84 | +- name: Query the decommissioned fabric node |
| 85 | + cisco.aci.aci_fabric_node_decommission: |
| 86 | + <<: *commission_node |
| 87 | + state: query |
| 88 | + register: query_decommissioned_node |
| 89 | + |
| 90 | +- name: Add a dummy fabric node |
| 91 | + cisco.aci.aci_fabric_node: &dummy_node_present |
78 | 92 | <<: *aci_info |
| 93 | + name: dummy_fabric_node |
| 94 | + node_type: unspecified |
79 | 95 | pod_id: 1 |
80 | | - node_id: 201 |
| 96 | + node_id: 333 |
| 97 | + serial: FDO22220XYZ |
81 | 98 | state: present |
82 | | - register: decommission_node_again |
83 | 99 |
|
84 | | -- name: Query the decommissioned fabric node - $query_decommissioned_node |
| 100 | +- name: Decommission the dummy fabric node |
85 | 101 | cisco.aci.aci_fabric_node_decommission: |
86 | 102 | <<: *aci_info |
87 | 103 | pod_id: 1 |
88 | | - node_id: 201 |
89 | | - state: query |
90 | | - register: query_decommissioned_node |
| 104 | + node_id: 333 |
| 105 | + remove_from_controller: true |
| 106 | + state: present |
| 107 | + output_level: debug |
| 108 | + register: decommission_dummy_node |
91 | 109 |
|
92 | | -- name: Query all decommissioned fabric nodes - $query_all_decommissioned_nodes |
| 110 | +- name: Query all decommissioned fabric nodes |
93 | 111 | cisco.aci.aci_fabric_node_decommission: |
94 | 112 | <<: *aci_info |
95 | 113 | state: query |
|
116 | 134 | - decommission_node_again.previous.0.fabricRsDecommissionNode.attributes.dn == "uni/fabric/outofsvc/rsdecommissionNode-[topology/pod-1/node-201]" |
117 | 135 | - decommission_node_again.previous.0.fabricRsDecommissionNode.attributes.removeFromController == "no" |
118 | 136 | - decommission_node_again.previous.0.fabricRsDecommissionNode.attributes.tDn == "topology/pod-1/node-201" |
119 | | - - query_decommissioned_node is not changed |
120 | | - - query_decommissioned_node.current.0.fabricRsDecommissionNode.attributes.dn == "uni/fabric/outofsvc/rsdecommissionNode-[topology/pod-1/node-201]" |
121 | | - - query_decommissioned_node.current.0.fabricRsDecommissionNode.attributes.removeFromController == "no" |
122 | | - - query_decommissioned_node.current.0.fabricRsDecommissionNode.attributes.tDn == "topology/pod-1/node-201" |
123 | | - - query_decommissioned_node.current.0.fabricRsDecommissionNode.attributes.targetId == "201" |
124 | | - - query_all_decommissioned_nodes is not changed |
125 | | - - query_all_decommissioned_nodes.current | length >= 1 |
126 | | - - query_all_decommissioned_nodes.current.0.fabricRsDecommissionNode.attributes.dn == "uni/fabric/outofsvc/rsdecommissionNode-[topology/pod-1/node-201]" |
127 | | - - query_all_decommissioned_nodes.current.0.fabricRsDecommissionNode.attributes.removeFromController == "no" |
128 | | - - query_all_decommissioned_nodes.current.0.fabricRsDecommissionNode.attributes.tDn == "topology/pod-1/node-201" |
129 | | - - query_all_decommissioned_nodes.current.0.fabricRsDecommissionNode.attributes.targetId == "201" |
| 137 | + - decommission_dummy_node is changed |
| 138 | + - decommission_dummy_node.current.0.fabricRsDecommissionNode.attributes.dn == "uni/fabric/outofsvc/rsdecommissionNode-[topology/pod-1/node-333]" |
| 139 | + - decommission_dummy_node.current.0.fabricRsDecommissionNode.attributes.removeFromController == "yes" |
| 140 | + - decommission_dummy_node.current.0.fabricRsDecommissionNode.attributes.tDn == "topology/pod-1/node-333" |
| 141 | + - decommission_dummy_node.previous == [] |
130 | 142 |
|
131 | | -- name: Commission the fabric node (check_mode) - $cm_commission_node |
| 143 | +- name: Commission the fabric node (check_mode) |
132 | 144 | cisco.aci.aci_fabric_node_decommission: |
133 | | - <<: *aci_info |
134 | | - pod_id: 1 |
135 | | - node_id: 201 |
136 | | - state: absent |
| 145 | + <<: *commission_node |
137 | 146 | output_level: debug |
138 | 147 | check_mode: true |
139 | 148 | register: cm_commission_node |
140 | 149 |
|
141 | | -- name: Commission the fabric node - $commission_node |
| 150 | +- name: Commission the fabric node |
142 | 151 | cisco.aci.aci_fabric_node_decommission: |
143 | | - <<: *aci_info |
144 | | - pod_id: 1 |
145 | | - node_id: 201 |
146 | | - state: absent |
| 152 | + <<: *commission_node |
147 | 153 | register: commission_node |
148 | 154 |
|
149 | | -- name: Commission the fabric node again - $commission_node_again |
| 155 | +- name: Commission the fabric node again |
150 | 156 | cisco.aci.aci_fabric_node_decommission: |
151 | | - <<: *aci_info |
152 | | - pod_id: 1 |
153 | | - node_id: 201 |
154 | | - state: absent |
| 157 | + <<: *commission_node |
155 | 158 | register: commission_node_again |
156 | 159 |
|
157 | | -- name: Query the commissioned fabric node - $query_commissioned_node_2 |
| 160 | +- name: Query the commissioned fabric node |
158 | 161 | cisco.aci.aci_fabric_node_decommission: |
159 | | - <<: *aci_info |
160 | | - pod_id: 1 |
161 | | - node_id: 201 |
| 162 | + <<: *commission_node |
162 | 163 | state: query |
163 | 164 | register: query_commissioned_node_2 |
164 | 165 |
|
|
180 | 181 | - commission_node_again is not changed |
181 | 182 | - commission_node_again.current == [] |
182 | 183 | - commission_node_again.previous == [] |
| 184 | + |
| 185 | +- name: Assertion check for query commission and decommission the fabric node |
| 186 | + ansible.builtin.assert: |
| 187 | + that: |
| 188 | + - query_decommissioned_node is not changed |
| 189 | + - query_decommissioned_node.current.0.fabricRsDecommissionNode.attributes.dn == "uni/fabric/outofsvc/rsdecommissionNode-[topology/pod-1/node-201]" |
| 190 | + - query_decommissioned_node.current.0.fabricRsDecommissionNode.attributes.removeFromController == "no" |
| 191 | + - query_decommissioned_node.current.0.fabricRsDecommissionNode.attributes.tDn == "topology/pod-1/node-201" |
| 192 | + - query_decommissioned_node.current.0.fabricRsDecommissionNode.attributes.targetId == "201" |
| 193 | + - query_all_decommissioned_nodes is not changed |
| 194 | + - query_all_decommissioned_nodes.current | length >= 2 |
| 195 | + - query_all_decommissioned_nodes.current.0.fabricRsDecommissionNode.attributes.dn == "uni/fabric/outofsvc/rsdecommissionNode-[topology/pod-1/node-201]" |
| 196 | + - query_all_decommissioned_nodes.current.0.fabricRsDecommissionNode.attributes.removeFromController == "no" |
| 197 | + - query_all_decommissioned_nodes.current.0.fabricRsDecommissionNode.attributes.tDn == "topology/pod-1/node-201" |
| 198 | + - query_all_decommissioned_nodes.current.0.fabricRsDecommissionNode.attributes.targetId == "201" |
| 199 | + - query_all_decommissioned_nodes.current.1.fabricRsDecommissionNode.attributes.dn == "uni/fabric/outofsvc/rsdecommissionNode-[topology/pod-1/node-333]" |
| 200 | + - query_all_decommissioned_nodes.current.1.fabricRsDecommissionNode.attributes.removeFromController == "yes" |
| 201 | + - query_all_decommissioned_nodes.current.1.fabricRsDecommissionNode.attributes.tDn == "topology/pod-1/node-333" |
| 202 | + - query_all_decommissioned_nodes.current.1.fabricRsDecommissionNode.attributes.targetId == "333" |
183 | 203 | - query_commissioned_node_2 is not changed |
184 | 204 | - query_commissioned_node_2.current == [] |
185 | 205 |
|
186 | | -- name: Decommission the fabric node and remove from the controller (check_mode) - $cm_after_removed_from_controller |
| 206 | +- name: Decommission the fabric node and remove from the controller (check_mode) |
187 | 207 | cisco.aci.aci_fabric_node_decommission: |
188 | | - <<: *aci_info |
189 | | - pod_id: 1 |
190 | | - node_id: 201 |
| 208 | + <<: *commission_node |
191 | 209 | remove_from_controller: true |
192 | 210 | state: present |
193 | 211 | output_level: debug |
194 | 212 | check_mode: true |
195 | 213 | register: cm_after_removed_from_controller |
196 | 214 |
|
197 | | -- name: Decommission the fabric node and remove from the controller - $after_removed_from_controller |
| 215 | +- name: Decommission the fabric node and remove from the controller |
198 | 216 | cisco.aci.aci_fabric_node_decommission: |
199 | | - <<: *aci_info |
200 | | - pod_id: 1 |
201 | | - node_id: 201 |
| 217 | + <<: *commission_node |
202 | 218 | remove_from_controller: true |
203 | 219 | state: present |
204 | 220 | register: after_removed_from_controller |
205 | 221 |
|
206 | | -- name: Decommission the fabric node and remove from the controller again - $after_removed_from_controller_again |
| 222 | +- name: Decommission the fabric node and remove from the controller again |
207 | 223 | cisco.aci.aci_fabric_node_decommission: |
208 | | - <<: *aci_info |
209 | | - pod_id: 1 |
210 | | - node_id: 201 |
| 224 | + <<: *commission_node |
211 | 225 | remove_from_controller: true |
212 | 226 | state: present |
213 | 227 | register: after_removed_from_controller_again |
214 | 228 |
|
215 | | -- name: Query the decommissioned fabric node which is removed from the controller - $query_after_removed_from_controller |
| 229 | +# Retries and delays are implemented to ensure that the fabric node is fully and automatically removed from the controller when remove_from_controller is set true |
| 230 | +- name: Query the decommissioned fabric node which is removed from the controller |
216 | 231 | cisco.aci.aci_fabric_node_decommission: |
217 | | - <<: *aci_info |
218 | | - pod_id: 1 |
219 | | - node_id: 201 |
| 232 | + <<: *commission_node |
220 | 233 | state: query |
221 | 234 | register: query_after_removed_from_controller |
222 | 235 | until: |
|
0 commit comments