2121 description:
2222 - Optional ID of vManage to edit. Don't set when adding new vManage instances to cluster.
2323 type: str
24- device_ip :
24+ system_ip :
2525 description:
26- - Added/edited device IP address.
26+ - Device system IP address.
27+ type: str
28+ cluster_ip:
29+ description:
30+ - Added/edited device cluster IP address.
2731 type: str
2832 username:
2933 description:
7983 cisco.catalystwan.cluster_management:
8084 wait_until_configured_seconds: 300
8185 vmanage_id: "0"
82- device_ip: "1.1.1.1"
86+ system_ip: "100.100.100.100"
87+ cluster_ip: "1.1.1.1"
8388 username: "username"
8489 password: "password" # pragma: allowlist secret
8590 persona: "COMPUTE_AND_DATA"
9196- name: "Add vManage to cluster"
9297 cisco.catalystwan.cluster_management:
9398 wait_until_configured_seconds: 300
94- device_ip: "2.2.2.2"
99+ system_ip: "100.100.100.100"
100+ cluster_ip: "2.2.2.2"
95101 username: "username"
96102 password: "password" # pragma: allowlist secret
97103 gen_csr: false
102108"""
103109
104110import time
105- from typing import Optional
111+ from typing import List , Optional
106112
107- from catalystwan .endpoints .cluster_management import VManageSetup
113+ from catalystwan .endpoints .cluster_management import ConnectedDevice , VManageSetup
108114from catalystwan .exceptions import ManagerRequestException
109115
110116from ..module_utils .result import ModuleResult
@@ -127,12 +133,19 @@ def get_connected_devices(module, device_ip):
127133 return None
128134
129135
130- def wait_for_connected_devices (module , device_ip , timeout ) -> Optional [str ]:
136+ def is_device_connected_to_cluster (module , system_ip , cluster_ip ):
137+ connected_devices : List [ConnectedDevice ] = get_connected_devices (module , cluster_ip )
138+ for device in connected_devices :
139+ if device ["device_id" ] == system_ip :
140+ return True
141+ return False
142+
143+
144+ def wait_for_connected_device (module , system_ip , cluster_ip , timeout ) -> Optional [str ]:
131145 start = time .time ()
132146 while True :
133147 try :
134- connected_devices = get_connected_devices (module , device_ip )
135- if connected_devices :
148+ if is_device_connected_to_cluster (module , system_ip , cluster_ip ):
136149 return None
137150 if (time .time () - start ) > timeout :
138151 return f"reached timeout of { timeout } s"
@@ -147,7 +160,8 @@ def run_module():
147160 module_args = dict (
148161 wait_until_configured_seconds = dict (type = "int" , default = 0 ),
149162 vmanage_id = dict (type = str ),
150- device_ip = dict (type = str , required = True ),
163+ system_ip = dict (type = str , required = True ),
164+ cluster_ip = dict (type = str , required = True ),
151165 username = dict (type = str , required = True ),
152166 password = dict (type = str , no_log = True , required = True ),
153167 gen_csr = dict (type = bool , aliases = ["genCSR" ]),
@@ -167,20 +181,21 @@ def run_module():
167181 )
168182
169183 module = AnsibleCatalystwanModule (argument_spec = module_args , session_reconnect_retries = 180 )
184+ module .session .request_timeout = 60
170185 result = ModuleResult ()
171186
172187 vmanage_id = module .params .get ("vmanage_id" )
173- device_ip = module .params .get ("device_ip" )
188+ system_ip = module .params .get ("system_ip" )
189+ cluster_ip = module .params .get ("cluster_ip" )
174190
175- connected_devices = get_connected_devices (module , device_ip )
176- if connected_devices :
191+ if is_device_connected_to_cluster (module , system_ip , cluster_ip ):
177192 result .changed = False
178- result .msg = f"Device { device_ip } already configured"
193+ result .msg = f"Device { cluster_ip } already configured"
179194 module .exit_json (** result .model_dump (mode = "json" ))
180195
181196 payload = VManageSetup (
182197 vmanage_id = vmanage_id ,
183- device_ip = device_ip ,
198+ device_ip = cluster_ip ,
184199 username = module .params .get ("username" ),
185200 password = module .params .get ("password" ),
186201 persona = module .params .get ("persona" ),
@@ -196,21 +211,18 @@ def run_module():
196211 response_key = "edit_vmanage" ,
197212 )
198213 else :
199- module .session .request_timeout = 60
200214 module .send_request_safely (
201215 result ,
202216 action_name = "Cluster Management: Add vManage" ,
203217 send_func = module .session .endpoints .cluster_management .add_vmanage ,
204218 payload = payload ,
205219 response_key = "add_vmanage" ,
206- num_retries = 30 ,
207- retry_interval_seconds = 10 ,
208220 )
209221
210222 if result .changed :
211223 wait_until_configured_seconds = module .params .get ("wait_until_configured_seconds" )
212224 if wait_until_configured_seconds :
213- error_msg = wait_for_connected_devices (module , device_ip , wait_until_configured_seconds )
225+ error_msg = wait_for_connected_device (module , system_ip , cluster_ip , wait_until_configured_seconds )
214226 if error_msg :
215227 module .fail_json (msg = f"Error during vManage configuration: { error_msg } " )
216228 result .msg = "Successfully updated requested vManage configuration."
0 commit comments