From 8651a5075d11a890cbfe8b2acd215742edd7917d Mon Sep 17 00:00:00 2001 From: miguecor Date: Sun, 26 Oct 2025 01:23:15 -0600 Subject: [PATCH 1/9] Fix for allowing DHCP srvr config without VRF --- plugins/module_utils/network/dcnm/dcnm.py | 8 ++-- plugins/modules/dcnm_network.py | 46 ++++++++++++----------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/plugins/module_utils/network/dcnm/dcnm.py b/plugins/module_utils/network/dcnm/dcnm.py index 8fdf1589b..0bf23c48b 100644 --- a/plugins/module_utils/network/dcnm/dcnm.py +++ b/plugins/module_utils/network/dcnm/dcnm.py @@ -961,7 +961,7 @@ def has_partial_dhcp_config(server): """ # Summary - Check if a DHCP server has incomplete configuration (IP address set but no VRF or vice versa). + Check if a DHCP server has incomplete configuration (VRF set but no IP address). ## Raises @@ -991,7 +991,7 @@ def has_partial_dhcp_config(server): } result2 = has_partial_dhcp_config(server2) print(result2) - # -> True (partial configuration) + # -> False (complete configuration) server3 = { "srvr_vrf": "vrf_name" @@ -1002,4 +1002,6 @@ def has_partial_dhcp_config(server): """ ip = server.get("srvr_ip") vrf = server.get("srvr_vrf") - return bool(ip) != bool(vrf) + if vrf is not None: + return ip is None + return False diff --git a/plugins/modules/dcnm_network.py b/plugins/modules/dcnm_network.py index 65d89abb1..ebf7738dc 100644 --- a/plugins/modules/dcnm_network.py +++ b/plugins/modules/dcnm_network.py @@ -1265,7 +1265,7 @@ def update_create_params(self, net): "vrfDhcp2": net.get("dhcp_srvr2_vrf", ""), "vrfDhcp3": net.get("dhcp_srvr3_vrf", ""), "dhcpServers": [ - {"srvrAddr": srvr["srvr_ip"], "srvrVrf": srvr["srvr_vrf"]} for srvr in net.get("dhcp_servers", []) + {"srvrAddr": srvr["srvr_ip"], "srvrVrf": srvr.get("srvr_vrf", "")} for srvr in net.get("dhcp_servers", []) ], "loopbackId": net.get("dhcp_loopback_id", ""), "mcastGroup": net.get("multicast_group_address", ""), @@ -1302,11 +1302,11 @@ def update_create_params(self, net): template_conf["vrfDhcp3"] = "" if template_conf["dhcpServers"] == []: dhcp_srvr_list = [] - if template_conf["dhcpServerAddr1"] != "" and template_conf["vrfDhcp"] != "": + if template_conf["dhcpServerAddr1"] != "": # and template_conf["vrfDhcp"] != "": dhcp_srvr_list.append({"srvrAddr": template_conf["dhcpServerAddr1"], "srvrVrf": template_conf["vrfDhcp"]}) - if template_conf["dhcpServerAddr2"] != "" and template_conf["vrfDhcp2"] != "": + if template_conf["dhcpServerAddr2"] != "": # and template_conf["vrfDhcp2"] != "": dhcp_srvr_list.append({"srvrAddr": template_conf["dhcpServerAddr2"], "srvrVrf": template_conf["vrfDhcp2"]}) - if template_conf["dhcpServerAddr3"] != "" and template_conf["vrfDhcp3"] != "": + if template_conf["dhcpServerAddr3"] != "": # and template_conf["vrfDhcp3"] != "": dhcp_srvr_list.append({"srvrAddr": template_conf["dhcpServerAddr3"], "srvrVrf": template_conf["vrfDhcp3"]}) if dhcp_srvr_list != []: template_conf["dhcpServers"] = json.dumps(dict(dhcpServers=dhcp_srvr_list), separators=(",", ":")) @@ -2861,14 +2861,14 @@ def validate_input(self): dict(srvr_ip=net.get("dhcp_srvr2_ip"), srvr_vrf=net.get("dhcp_srvr2_vrf")), dict(srvr_ip=net.get("dhcp_srvr3_ip"), srvr_vrf=net.get("dhcp_srvr3_vrf")), ]): - invalid_params.append("DHCP server IP should be specified along with DHCP server VRF") + invalid_params.append("DHCP server VRF should be specified along with DHCP server IP") if net.get("dhcp_servers"): dhcp_servers = net.get("dhcp_servers") if len(dhcp_servers) > 16: invalid_params.append("A maximum of 16 DHCP servers can be specified") if any(has_partial_dhcp_config(srvr) for srvr in dhcp_servers): - invalid_params.append("DHCP server IP should be specified along with DHCP server VRF") + invalid_params.append("DHCP server VRF should be specified along with DHCP server IP") if self.dcnm_version == 11: if net.get("netflow_enable") or net.get("intfvlan_nf_monitor") or net.get("vlan_nf_monitor"): @@ -3045,24 +3045,28 @@ def dcnm_update_network_information(self, want, have, cfg): json_to_dict_want["vrfDhcp3"] = json_to_dict_have["vrfDhcp3"] if cfg.get("dhcp_servers", None) is None: - want_have_dhcp_servers = [None] * 3 + want_dhcp_servers = json.loads(json_to_dict_have["dhcpServers"]).get("dhcpServers", []) + want_dhcp_servers += [None] * (16 - len(want_dhcp_servers)) + if json_to_dict_have["dhcpServerAddr1"] != "": + want_dhcp_servers[0] = dict(srvrAddr=json_to_dict_have["dhcpServerAddr1"], srvrVrf=json_to_dict_have["vrfDhcp"]) if cfg.get("dhcp_srvr1_ip", None) is not None: - want_have_dhcp_servers[0] = dict(srvrAddr=cfg.get("dhcp_srvr1_ip"), srvrVrf=cfg.get("dhcp_srvr1_vrf")) - elif json_to_dict_have["dhcpServerAddr1"] != "": - want_have_dhcp_servers[0] = dict(srvrAddr=json_to_dict_have["dhcpServerAddr1"], srvrVrf=json_to_dict_have["vrfDhcp"]) + want_dhcp_servers[0] = dict(srvrAddr=cfg.get("dhcp_srvr1_ip"), srvrVrf=json_to_dict_have["vrfDhcp"]) + if cfg.get("dhcp_srvr1_vrf", None) is not None: + want_dhcp_servers[0].update({"srvrVrf": cfg.get("dhcp_srvr1_vrf")}) + if json_to_dict_have["dhcpServerAddr2"] != "": + want_dhcp_servers[1] = dict(srvrAddr=json_to_dict_have["dhcpServerAddr2"], srvrVrf=json_to_dict_have["vrfDhcp2"]) if cfg.get("dhcp_srvr2_ip", None) is not None: - want_have_dhcp_servers[1] = dict(srvrAddr=cfg.get("dhcp_srvr2_ip"), srvrVrf=cfg.get("dhcp_srvr2_vrf")) - elif json_to_dict_have["dhcpServerAddr2"] != "": - want_have_dhcp_servers[1] = dict(srvrAddr=json_to_dict_have["dhcpServerAddr2"], srvrVrf=json_to_dict_have["vrfDhcp2"]) + want_dhcp_servers[1] = dict(srvrAddr=cfg.get("dhcp_srvr2_ip"), srvrVrf=json_to_dict_have["vrfDhcp2"]) + if cfg.get("dhcp_srvr2_vrf", None) is not None: + want_dhcp_servers[1].update({"srvrVrf": cfg.get("dhcp_srvr2_vrf")}) + if json_to_dict_have["dhcpServerAddr3"] != "": + want_dhcp_servers[2] = dict(srvrAddr=json_to_dict_have["dhcpServerAddr3"], srvrVrf=json_to_dict_have["vrfDhcp3"]) if cfg.get("dhcp_srvr3_ip", None) is not None: - want_have_dhcp_servers[2] = dict(srvrAddr=cfg.get("dhcp_srvr3_ip"), srvrVrf=cfg.get("dhcp_srvr3_vrf")) - elif json_to_dict_have["dhcpServerAddr3"] != "": - want_have_dhcp_servers[2] = dict(srvrAddr=json_to_dict_have["dhcpServerAddr3"], srvrVrf=json_to_dict_have["vrfDhcp3"]) - want_have_dhcp_servers = [srvr for srvr in want_have_dhcp_servers[:] if srvr is not None] - if want_have_dhcp_servers != []: - json_to_dict_want["dhcpServers"] = json.dumps(dict(dhcpServers=want_have_dhcp_servers, separators=(",", ":"))) - else: - json_to_dict_want["dhcpServers"] = json_to_dict_have["dhcpServers"] + want_dhcp_servers[2] = dict(srvrAddr=cfg.get("dhcp_srvr3_ip"), srvrVrf=json_to_dict_have["vrfDhcp3"]) + if cfg.get("dhcp_srvr3_vrf", None) is not None: + want_dhcp_servers[2].update({"srvrVrf": cfg.get("dhcp_srvr3_vrf")}) + want_dhcp_servers = [srvr for srvr in want_dhcp_servers[:] if srvr is not None] + json_to_dict_want["dhcpServers"] = json.dumps(dict(dhcpServers=want_dhcp_servers), separators=(",", ":")) if cfg.get("dhcp_loopback_id", None) is None: json_to_dict_want["loopbackId"] = json_to_dict_have["loopbackId"] From f85676aed34217a944e7f9110d5a845ecdaa906e Mon Sep 17 00:00:00 2001 From: Miguel Corona Date: Sun, 26 Oct 2025 01:40:38 -0600 Subject: [PATCH 2/9] Fix issue to allow DHCP server config without VRF in Networks --- plugins/modules/dcnm_network.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/modules/dcnm_network.py b/plugins/modules/dcnm_network.py index ebf7738dc..e570962fe 100644 --- a/plugins/modules/dcnm_network.py +++ b/plugins/modules/dcnm_network.py @@ -1302,11 +1302,11 @@ def update_create_params(self, net): template_conf["vrfDhcp3"] = "" if template_conf["dhcpServers"] == []: dhcp_srvr_list = [] - if template_conf["dhcpServerAddr1"] != "": # and template_conf["vrfDhcp"] != "": + if template_conf["dhcpServerAddr1"] != "": dhcp_srvr_list.append({"srvrAddr": template_conf["dhcpServerAddr1"], "srvrVrf": template_conf["vrfDhcp"]}) - if template_conf["dhcpServerAddr2"] != "": # and template_conf["vrfDhcp2"] != "": + if template_conf["dhcpServerAddr2"] != "": dhcp_srvr_list.append({"srvrAddr": template_conf["dhcpServerAddr2"], "srvrVrf": template_conf["vrfDhcp2"]}) - if template_conf["dhcpServerAddr3"] != "": # and template_conf["vrfDhcp3"] != "": + if template_conf["dhcpServerAddr3"] != "": dhcp_srvr_list.append({"srvrAddr": template_conf["dhcpServerAddr3"], "srvrVrf": template_conf["vrfDhcp3"]}) if dhcp_srvr_list != []: template_conf["dhcpServers"] = json.dumps(dict(dhcpServers=dhcp_srvr_list), separators=(",", ":")) From 7a074e38701984daaa860907fb6c5e9b7d484b0e Mon Sep 17 00:00:00 2001 From: Miguel Corona Date: Mon, 27 Oct 2025 10:45:07 -0600 Subject: [PATCH 3/9] Fix issue with networks that don't have DHCP servers from the begining --- plugins/modules/dcnm_network.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/modules/dcnm_network.py b/plugins/modules/dcnm_network.py index e570962fe..5977bc5c2 100644 --- a/plugins/modules/dcnm_network.py +++ b/plugins/modules/dcnm_network.py @@ -162,7 +162,7 @@ - This is an alternative to dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf - If both dhcp_servers and any of dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, - dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf are specified, unexpected results may occur + dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf are specified, dhcp_servers will take precedence type: list elements: dict required: false @@ -3045,7 +3045,7 @@ def dcnm_update_network_information(self, want, have, cfg): json_to_dict_want["vrfDhcp3"] = json_to_dict_have["vrfDhcp3"] if cfg.get("dhcp_servers", None) is None: - want_dhcp_servers = json.loads(json_to_dict_have["dhcpServers"]).get("dhcpServers", []) + want_dhcp_servers = json.loads(json_to_dict_have["dhcpServers"] or "{}").get("dhcpServers", []) want_dhcp_servers += [None] * (16 - len(want_dhcp_servers)) if json_to_dict_have["dhcpServerAddr1"] != "": want_dhcp_servers[0] = dict(srvrAddr=json_to_dict_have["dhcpServerAddr1"], srvrVrf=json_to_dict_have["vrfDhcp"]) @@ -3066,7 +3066,10 @@ def dcnm_update_network_information(self, want, have, cfg): if cfg.get("dhcp_srvr3_vrf", None) is not None: want_dhcp_servers[2].update({"srvrVrf": cfg.get("dhcp_srvr3_vrf")}) want_dhcp_servers = [srvr for srvr in want_dhcp_servers[:] if srvr is not None] - json_to_dict_want["dhcpServers"] = json.dumps(dict(dhcpServers=want_dhcp_servers), separators=(",", ":")) + if want_dhcp_servers == []: + json_to_dict_want["dhcpServers"] = "" + else: + json_to_dict_want["dhcpServers"] = json.dumps(dict(dhcpServers=want_dhcp_servers), separators=(",", ":")) if cfg.get("dhcp_loopback_id", None) is None: json_to_dict_want["loopbackId"] = json_to_dict_have["loopbackId"] From 827c8e3c862f7b77ff0c222da9f55b95f1c11f4b Mon Sep 17 00:00:00 2001 From: Miguel Corona Date: Mon, 27 Oct 2025 11:08:57 -0600 Subject: [PATCH 4/9] Fix merge issue with develop --- plugins/modules/dcnm_network.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/modules/dcnm_network.py b/plugins/modules/dcnm_network.py index cb2508073..928804e44 100644 --- a/plugins/modules/dcnm_network.py +++ b/plugins/modules/dcnm_network.py @@ -162,7 +162,8 @@ - This is an alternative to dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf - If both dhcp_servers and any of dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, - dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf are specified, dhcp_servers will take precedence + dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf are specified an error message is generated + indicating these are mutually exclusive options type: list elements: dict required: false From 01426e500bd37387ee122fdfa98c4c4b7259d01a Mon Sep 17 00:00:00 2001 From: Miguel Corona Date: Fri, 14 Nov 2025 19:43:10 -0600 Subject: [PATCH 5/9] Change 'dhcp_servers' to allow 'srvr_vrf' to be optional --- plugins/modules/dcnm_network.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/plugins/modules/dcnm_network.py b/plugins/modules/dcnm_network.py index ff4dc7fd5..b1fb57ee2 100644 --- a/plugins/modules/dcnm_network.py +++ b/plugins/modules/dcnm_network.py @@ -129,41 +129,61 @@ dhcp_srvr1_ip: description: - DHCP relay IP address of the first DHCP server + - If dhcp_servers and dhcp_srvr1_ip are specified an error message is generated + indicating these are mutually exclusive options + - dhcp_servers will eventually replace dhcp_srvr1_ip and dhcp_srvr1_vrf type: str required: false dhcp_srvr1_vrf: description: - VRF ID of first DHCP server + - If not specified, will use same VRF as the network VRF + - For ND version 3.1 and NDFC 12.1 dhcp_srvr1_vrf must be specified for dhcp_srvr1_ip + - dhcp_servers will eventually replace dhcp_srvr1_ip and dhcp_srvr1_vrf type: str required: false dhcp_srvr2_ip: description: - DHCP relay IP address of the second DHCP server + - If dhcp_servers and dhcp_srvr2_ip are specified an error message is generated + indicating these are mutually exclusive options + - dhcp_servers will eventually replace dhcp_srvr2_ip and dhcp_srvr2_vrf type: str required: false dhcp_srvr2_vrf: description: - VRF ID of second DHCP server + - If not specified, will use same VRF as the network VRF + - For ND version 3.1 and NDFC 12.1 dhcp_srvr2_vrf must be specified for dhcp_srvr2_ip + - dhcp_servers will eventually replace dhcp_srvr2_ip and dhcp_srvr2_vrf type: str required: false dhcp_srvr3_ip: description: - DHCP relay IP address of the third DHCP server + - If dhcp_servers and dhcp_srvr3_ip are specified an error message is generated + indicating these are mutually exclusive options + - dhcp_servers will eventually replace dhcp_srvr3_ip and dhcp_srvr3_vrf type: str required: false dhcp_srvr3_vrf: description: - VRF ID of third DHCP server + - If not specified, will use same VRF as the network VRF + - For ND version 3.1 and NDFC 12.1 dhcp_srvr3_vrf must be specified for dhcp_srvr3_ip + - dhcp_servers will eventually replace dhcp_srvr3_ip and dhcp_srvr3_vrf type: str required: false dhcp_servers: description: - List of DHCP server_vrf pairs where 'srvr_ip' is the IP key and 'srvr_vrf' is the VRF key - - This is an alternative to dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, - dhcp_srvr3_ip, dhcp_srvr3_vrf + - The 'srvr_vrf' key is optional, if not specified will use same VRF as the network VRF + - For ND version 3.1 and NDFC 12.1 'srvr_vrf' must be specified for each DHCP server - If both dhcp_servers and any of dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf are specified an error message is generated indicating these are mutually exclusive options + - This will eventually replace dhcp_srvr1_ip, dhcp_srvr1_vrf, + dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf type: list elements: dict required: false From 8a99930ab5863eb457b9df6cdfe43e2543d2207c Mon Sep 17 00:00:00 2001 From: Miguel Corona Date: Fri, 14 Nov 2025 20:40:59 -0600 Subject: [PATCH 6/9] Fix PEP8 issue W291: trailing whitespace --- plugins/modules/dcnm_network.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/modules/dcnm_network.py b/plugins/modules/dcnm_network.py index b1fb57ee2..46f78e845 100644 --- a/plugins/modules/dcnm_network.py +++ b/plugins/modules/dcnm_network.py @@ -182,7 +182,7 @@ - If both dhcp_servers and any of dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf are specified an error message is generated indicating these are mutually exclusive options - - This will eventually replace dhcp_srvr1_ip, dhcp_srvr1_vrf, + - This will eventually replace dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf type: list elements: dict From 945796f9bbc8d76640a63b4383c836ed262eeb5c Mon Sep 17 00:00:00 2001 From: Miguel Corona Date: Fri, 14 Nov 2025 23:45:43 -0600 Subject: [PATCH 7/9] Change dcnm_network_module documentation --- docs/cisco.dcnm.dcnm_network_module.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/cisco.dcnm.dcnm_network_module.rst b/docs/cisco.dcnm.dcnm_network_module.rst index 31d711b5e..811035df4 100644 --- a/docs/cisco.dcnm.dcnm_network_module.rst +++ b/docs/cisco.dcnm.dcnm_network_module.rst @@ -263,7 +263,8 @@ Parameters
List of DHCP server_vrf pairs where 'srvr_ip' is the IP key and 'srvr_vrf' is the VRF key
-
This is an alternative to dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf
+
'srvr_vrf' is an optional parameter
+
This will eventually replace dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf
If both dhcp_servers and any of dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf are specified an error message is generated indicating these are mutually exclusive options
@@ -281,6 +282,7 @@ Parameters
DHCP relay IP address of the first DHCP server
+
This will eventually be replaced by dhcp_servers
@@ -297,6 +299,7 @@ Parameters
VRF ID of first DHCP server
+
This is an optional parameter
@@ -313,6 +316,7 @@ Parameters
DHCP relay IP address of the second DHCP server
+
This will eventually be replaced by dhcp_servers
@@ -329,6 +333,7 @@ Parameters
VRF ID of second DHCP server
+
This is an optional parameter
@@ -345,6 +350,7 @@ Parameters
DHCP relay IP address of the third DHCP server
+
This will eventually be replaced by dhcp_servers
@@ -361,6 +367,7 @@ Parameters
VRF ID of third DHCP server
+
This is an optional parameter
From 9ec939d605b19c44d74b3dc1a613c3faa1c1ecc6 Mon Sep 17 00:00:00 2001 From: Miguel Corona Date: Tue, 18 Nov 2025 09:48:10 -0600 Subject: [PATCH 8/9] Change requested modifications from comments --- docs/cisco.dcnm.dcnm_network_module.rst | 17 ++++++++++------- plugins/modules/dcnm_network.py | 16 ++++++++-------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/docs/cisco.dcnm.dcnm_network_module.rst b/docs/cisco.dcnm.dcnm_network_module.rst index 811035df4..a4eeced34 100644 --- a/docs/cisco.dcnm.dcnm_network_module.rst +++ b/docs/cisco.dcnm.dcnm_network_module.rst @@ -264,7 +264,7 @@ Parameters
List of DHCP server_vrf pairs where 'srvr_ip' is the IP key and 'srvr_vrf' is the VRF key
'srvr_vrf' is an optional parameter
-
This will eventually replace dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf
+
This replaces dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf
If both dhcp_servers and any of dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf are specified an error message is generated indicating these are mutually exclusive options
@@ -282,7 +282,7 @@ Parameters
DHCP relay IP address of the first DHCP server
-
This will eventually be replaced by dhcp_servers
+
Deprecated. Please use only dhcp_servers in new playbooks.
@@ -299,7 +299,8 @@ Parameters
VRF ID of first DHCP server
-
This is an optional parameter
+
Optional
+
Deprecated. Please use only dhcp_servers in new playbooks
@@ -316,7 +317,7 @@ Parameters
DHCP relay IP address of the second DHCP server
-
This will eventually be replaced by dhcp_servers
+
Deprecated. Please use only dhcp_servers in new playbooks
@@ -333,7 +334,8 @@ Parameters
VRF ID of second DHCP server
-
This is an optional parameter
+
Optional
+
Deprecated. Please use only dhcp_servers in new playbooks
@@ -350,7 +352,7 @@ Parameters
DHCP relay IP address of the third DHCP server
-
This will eventually be replaced by dhcp_servers
+
Deprecated. Please use only dhcp_servers in new playbooks
@@ -367,7 +369,8 @@ Parameters
VRF ID of third DHCP server
-
This is an optional parameter
+
Optional
+
Deprecated. Please use only dhcp_servers in new playbooks
diff --git a/plugins/modules/dcnm_network.py b/plugins/modules/dcnm_network.py index 46f78e845..93d248037 100644 --- a/plugins/modules/dcnm_network.py +++ b/plugins/modules/dcnm_network.py @@ -131,7 +131,7 @@ - DHCP relay IP address of the first DHCP server - If dhcp_servers and dhcp_srvr1_ip are specified an error message is generated indicating these are mutually exclusive options - - dhcp_servers will eventually replace dhcp_srvr1_ip and dhcp_srvr1_vrf + - DEPRECATED type: str required: false dhcp_srvr1_vrf: @@ -139,7 +139,7 @@ - VRF ID of first DHCP server - If not specified, will use same VRF as the network VRF - For ND version 3.1 and NDFC 12.1 dhcp_srvr1_vrf must be specified for dhcp_srvr1_ip - - dhcp_servers will eventually replace dhcp_srvr1_ip and dhcp_srvr1_vrf + - DEPRECATED type: str required: false dhcp_srvr2_ip: @@ -147,7 +147,7 @@ - DHCP relay IP address of the second DHCP server - If dhcp_servers and dhcp_srvr2_ip are specified an error message is generated indicating these are mutually exclusive options - - dhcp_servers will eventually replace dhcp_srvr2_ip and dhcp_srvr2_vrf + - DEPRECATED type: str required: false dhcp_srvr2_vrf: @@ -155,7 +155,7 @@ - VRF ID of second DHCP server - If not specified, will use same VRF as the network VRF - For ND version 3.1 and NDFC 12.1 dhcp_srvr2_vrf must be specified for dhcp_srvr2_ip - - dhcp_servers will eventually replace dhcp_srvr2_ip and dhcp_srvr2_vrf + - DEPRECATED type: str required: false dhcp_srvr3_ip: @@ -163,7 +163,7 @@ - DHCP relay IP address of the third DHCP server - If dhcp_servers and dhcp_srvr3_ip are specified an error message is generated indicating these are mutually exclusive options - - dhcp_servers will eventually replace dhcp_srvr3_ip and dhcp_srvr3_vrf + - DEPRECATED type: str required: false dhcp_srvr3_vrf: @@ -171,7 +171,7 @@ - VRF ID of third DHCP server - If not specified, will use same VRF as the network VRF - For ND version 3.1 and NDFC 12.1 dhcp_srvr3_vrf must be specified for dhcp_srvr3_ip - - dhcp_servers will eventually replace dhcp_srvr3_ip and dhcp_srvr3_vrf + - DEPRECATED type: str required: false dhcp_servers: @@ -182,8 +182,8 @@ - If both dhcp_servers and any of dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf are specified an error message is generated indicating these are mutually exclusive options - - This will eventually replace dhcp_srvr1_ip, dhcp_srvr1_vrf, - dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf + - This replaces dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, + dhcp_srvr3_ip, dhcp_srvr3_vrf type: list elements: dict required: false From caa5b7a02bc19b723e8a0c33bb1e56056298c140 Mon Sep 17 00:00:00 2001 From: Miguel Corona Date: Tue, 18 Nov 2025 09:53:15 -0600 Subject: [PATCH 9/9] Fix PEP8 issue W291: trailing whitespace --- plugins/modules/dcnm_network.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/modules/dcnm_network.py b/plugins/modules/dcnm_network.py index 93d248037..06ce251ba 100644 --- a/plugins/modules/dcnm_network.py +++ b/plugins/modules/dcnm_network.py @@ -182,7 +182,7 @@ - If both dhcp_servers and any of dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf are specified an error message is generated indicating these are mutually exclusive options - - This replaces dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, + - This replaces dhcp_srvr1_ip, dhcp_srvr1_vrf, dhcp_srvr2_ip, dhcp_srvr2_vrf, dhcp_srvr3_ip, dhcp_srvr3_vrf type: list elements: dict