update ce_bgp to fix bugs (#60573)
* update ce_bgp to fix bugs * update ce_bgp to fix bugs * update ce_bgp to fix bugs * update ce_bgp to fix bugs * Update ce_bgp to fix bugs
This commit is contained in:
parent
db0f290ca3
commit
5f35916b22
1 changed files with 53 additions and 48 deletions
|
@ -892,7 +892,7 @@ class Bgp(object):
|
|||
"<vrfName></vrfName>" + CE_GET_BGP_INSTANCE_TAIL
|
||||
recv_xml = self.netconf_get_config(module=module, conf_str=conf_str)
|
||||
|
||||
check_vrf_name = (vrf_name)
|
||||
check_vrf_name = vrf_name
|
||||
|
||||
if state == "present":
|
||||
if "<data/>" in recv_xml:
|
||||
|
@ -940,7 +940,7 @@ class Bgp(object):
|
|||
module.fail_json(
|
||||
msg='Error: The router_id %s is invalid.' % router_id)
|
||||
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + \
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + "<vrfName>%s</vrfName>" % vrf_name + \
|
||||
"<routerId></routerId>" + CE_GET_BGP_INSTANCE_TAIL
|
||||
recv_xml = self.netconf_get_config(module=module, conf_str=conf_str)
|
||||
|
||||
|
@ -976,7 +976,7 @@ class Bgp(object):
|
|||
module.fail_json(
|
||||
msg='Error: Please input vrf_name.')
|
||||
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + \
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + "<vrfName>%s</vrfName>" % vrf_name + \
|
||||
"<vrfRidAutoSel></vrfRidAutoSel>" + CE_GET_BGP_INSTANCE_TAIL
|
||||
recv_xml = self.netconf_get_config(module=module, conf_str=conf_str)
|
||||
|
||||
|
@ -1006,7 +1006,7 @@ class Bgp(object):
|
|||
module.fail_json(
|
||||
msg='keepalive_time %s is out of [0 - 21845].' % keepalive_time)
|
||||
else:
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + \
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + "<vrfName>%s</vrfName>" % vrf_name + \
|
||||
"<keepaliveTime></keepaliveTime>" + CE_GET_BGP_INSTANCE_TAIL
|
||||
recv_xml = self.netconf_get_config(
|
||||
module=module, conf_str=conf_str)
|
||||
|
@ -1047,7 +1047,7 @@ class Bgp(object):
|
|||
module.fail_json(
|
||||
msg='hold_time %s is out of [3 - 65535].' % hold_time)
|
||||
else:
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + \
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + "<vrfName>%s</vrfName>" % vrf_name + \
|
||||
"<holdTime></holdTime>" + CE_GET_BGP_INSTANCE_TAIL
|
||||
recv_xml = self.netconf_get_config(
|
||||
module=module, conf_str=conf_str)
|
||||
|
@ -1088,7 +1088,7 @@ class Bgp(object):
|
|||
module.fail_json(
|
||||
msg='min_hold_time %s is out of [0, or 20 - 65535].' % min_hold_time)
|
||||
else:
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + \
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + "<vrfName>%s</vrfName>" % vrf_name + \
|
||||
"<minHoldTime></minHoldTime>" + CE_GET_BGP_INSTANCE_TAIL
|
||||
recv_xml = self.netconf_get_config(
|
||||
module=module, conf_str=conf_str)
|
||||
|
@ -1129,7 +1129,7 @@ class Bgp(object):
|
|||
module.fail_json(
|
||||
msg='conn_retry_time %s is out of [1 - 65535].' % conn_retry_time)
|
||||
else:
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + \
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + "<vrfName>%s</vrfName>" % vrf_name + \
|
||||
"<connRetryTime></connRetryTime>" + CE_GET_BGP_INSTANCE_TAIL
|
||||
recv_xml = self.netconf_get_config(
|
||||
module=module, conf_str=conf_str)
|
||||
|
@ -1168,7 +1168,7 @@ class Bgp(object):
|
|||
module.fail_json(
|
||||
msg='Error: Please input vrf_name.')
|
||||
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + \
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + "<vrfName>%s</vrfName>" % vrf_name + \
|
||||
"<ebgpIfSensitive></ebgpIfSensitive>" + CE_GET_BGP_INSTANCE_TAIL
|
||||
recv_xml = self.netconf_get_config(module=module, conf_str=conf_str)
|
||||
|
||||
|
@ -1206,7 +1206,7 @@ class Bgp(object):
|
|||
module.fail_json(
|
||||
msg='Error: Please input vrf_name.')
|
||||
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + \
|
||||
conf_str = CE_GET_BGP_INSTANCE_HEADER + "<vrfName>%s</vrfName>" % vrf_name + \
|
||||
"<defaultAfType></defaultAfType>" + CE_GET_BGP_INSTANCE_TAIL
|
||||
recv_xml = self.netconf_get_config(module=module, conf_str=conf_str)
|
||||
|
||||
|
@ -1471,7 +1471,8 @@ class Bgp(object):
|
|||
cmds.append(cmd)
|
||||
|
||||
confed_id_number = module.params['confed_id_number']
|
||||
if confed_id_number:
|
||||
confed_peer_as_num = module.params['confed_peer_as_num']
|
||||
if confed_id_number and not confed_peer_as_num:
|
||||
conf_str += "<confedIdNumber></confedIdNumber>"
|
||||
|
||||
cmd = "undo confederation id"
|
||||
|
@ -1543,8 +1544,7 @@ class Bgp(object):
|
|||
if suppress_interval:
|
||||
conf_str += "<suppressInterval>60</suppressInterval>"
|
||||
|
||||
cmd = "nexthop recursive-lookup restrain suppress-interval %s hold-interval %s " \
|
||||
"clear-interval %s" % (suppress_interval, hold_interval, clear_interval)
|
||||
cmd = "undo nexthop recursive-lookup restrain suppress-interval hold-interval clear-interval"
|
||||
cmds.append(cmd)
|
||||
|
||||
if hold_interval:
|
||||
|
@ -1675,14 +1675,26 @@ class Bgp(object):
|
|||
if "<ok/>" not in recv_xml:
|
||||
module.fail_json(msg='Error: Merge bgp instance failed.')
|
||||
|
||||
cmds = []
|
||||
|
||||
if vrf_name != "_public_":
|
||||
cmd = "ipv4-family vpn-instance %s" % vrf_name
|
||||
cmds.append(cmd)
|
||||
|
||||
return cmds
|
||||
|
||||
def create_bgp_instance(self, **kwargs):
|
||||
""" create_bgp_instance """
|
||||
|
||||
module = kwargs["module"]
|
||||
conf_str = CE_CREATE_BGP_INSTANCE_HEADER
|
||||
|
||||
cmds = []
|
||||
|
||||
vrf_name = module.params['vrf_name']
|
||||
if vrf_name:
|
||||
if vrf_name == "_public_":
|
||||
return cmds
|
||||
conf_str += "<vrfName>%s</vrfName>" % vrf_name
|
||||
|
||||
conf_str += CE_CREATE_BGP_INSTANCE_TAIL
|
||||
|
@ -1692,8 +1704,6 @@ class Bgp(object):
|
|||
if "<ok/>" not in recv_xml:
|
||||
module.fail_json(msg='Error: Create bgp instance failed.')
|
||||
|
||||
cmds = []
|
||||
|
||||
if vrf_name != "_public_":
|
||||
cmd = "ipv4-family vpn-instance %s" % vrf_name
|
||||
cmds.append(cmd)
|
||||
|
@ -1735,14 +1745,23 @@ class Bgp(object):
|
|||
|
||||
cmds = []
|
||||
|
||||
default_af_type = module.params['default_af_type']
|
||||
if default_af_type:
|
||||
conf_str += "<defaultAfType>%s</defaultAfType>" % default_af_type
|
||||
|
||||
if vrf_name != "_public_":
|
||||
if default_af_type == "ipv6uni":
|
||||
cmd = "ipv6-family vpn-instance %s" % vrf_name
|
||||
cmds.append(cmd)
|
||||
|
||||
vrf_rid_auto_sel = module.params['vrf_rid_auto_sel']
|
||||
if vrf_rid_auto_sel != 'no_use':
|
||||
conf_str += "<vrfRidAutoSel>%s</vrfRidAutoSel>" % vrf_rid_auto_sel
|
||||
|
||||
if vrf_rid_auto_sel == "true":
|
||||
cmd = "router-id vpn-instance auto-select"
|
||||
cmd = "router-id auto-select"
|
||||
else:
|
||||
cmd = "undo router-id vpn-instance auto-select"
|
||||
cmd = "undo router-id auto-select"
|
||||
cmds.append(cmd)
|
||||
|
||||
router_id = module.params['router_id']
|
||||
|
@ -1790,22 +1809,6 @@ class Bgp(object):
|
|||
cmd = "undo ebgp-interface-sensitive"
|
||||
cmds.append(cmd)
|
||||
|
||||
default_af_type = module.params['default_af_type']
|
||||
if default_af_type:
|
||||
conf_str += "<defaultAfType>%s</defaultAfType>" % default_af_type
|
||||
|
||||
if vrf_name != "_public_":
|
||||
if default_af_type == "ipv6uni":
|
||||
cmd = "ipv6-family vpn-instance %s" % vrf_name
|
||||
cmds.append(cmd)
|
||||
else:
|
||||
cmd = "ipv4-family vpn-instance %s" % vrf_name
|
||||
cmds.append(cmd)
|
||||
else:
|
||||
if vrf_name != "_public_":
|
||||
cmd = "ipv4-family vpn-instance %s" % vrf_name
|
||||
cmds.append(cmd)
|
||||
|
||||
conf_str += CE_MERGE_BGP_INSTANCE_TAIL
|
||||
|
||||
recv_xml = self.netconf_set_config(module=module, conf_str=conf_str)
|
||||
|
@ -1921,7 +1924,7 @@ class Bgp(object):
|
|||
|
||||
vrf_rid_auto_sel = module.params['vrf_rid_auto_sel']
|
||||
if vrf_rid_auto_sel != 'no_use':
|
||||
conf_str += "<vrfRidAutoSel>%s</vrfRidAutoSel>" % vrf_rid_auto_sel
|
||||
conf_str += "<vrfRidAutoSel>%s</vrfRidAutoSel>" % "false"
|
||||
|
||||
cmd = "undo router-id vpn-instance auto-select"
|
||||
cmds.append(cmd)
|
||||
|
@ -1958,7 +1961,7 @@ class Bgp(object):
|
|||
if ebgp_if_sensitive != 'no_use':
|
||||
conf_str += "<ebgpIfSensitive>%s</ebgpIfSensitive>" % "true"
|
||||
|
||||
cmd = "undo ebgp-interface-sensitive"
|
||||
cmd = "ebgp-interface-sensitive"
|
||||
cmds.append(cmd)
|
||||
|
||||
default_af_type = module.params['default_af_type']
|
||||
|
@ -2122,20 +2125,23 @@ def main():
|
|||
need_bgp_instance_other_rst = ce_bgp_obj.check_bgp_instance_other_args(
|
||||
module=module)
|
||||
|
||||
router_id_exist = ce_bgp_obj.get_bgp_instance(module=module)
|
||||
existing["bgp instance"] = router_id_exist
|
||||
|
||||
# bgp enable/disable
|
||||
if need_bgp_enable:
|
||||
|
||||
bgp_enable_exist = ce_bgp_obj.get_bgp_enable(module=module)
|
||||
existing["bgp enable"] = bgp_enable_exist
|
||||
if bgp_enable_exist:
|
||||
asnumber_exist = bgp_enable_exist[0][0]
|
||||
bgpenable_exist = bgp_enable_exist[0][1]
|
||||
asnumber_exist = bgp_enable_exist[0][1]
|
||||
bgpenable_exist = bgp_enable_exist[0][0]
|
||||
else:
|
||||
asnumber_exist = None
|
||||
bgpenable_exist = None
|
||||
|
||||
if state == "present":
|
||||
bgp_enable_new = (as_number, "true")
|
||||
bgp_enable_new = ("true", as_number)
|
||||
|
||||
if bgp_enable_new in bgp_enable_exist:
|
||||
pass
|
||||
|
@ -2149,7 +2155,8 @@ def main():
|
|||
updates.append(item)
|
||||
|
||||
else:
|
||||
if need_bgp_enable_other_rst["need_cfg"] or need_bgp_confed or need_bgp_instance_other_rst["need_cfg"]:
|
||||
if need_bgp_enable_other_rst["need_cfg"] or need_bgp_confed or \
|
||||
need_bgp_instance_other_rst["need_cfg"] or need_bgp_instance:
|
||||
pass
|
||||
elif bgpenable_exist == "false":
|
||||
pass
|
||||
|
@ -2234,20 +2241,18 @@ def main():
|
|||
end_state["confederation peer as"] = confed_end
|
||||
|
||||
# bgp instance
|
||||
router_id_exist = ce_bgp_obj.get_bgp_instance(module=module)
|
||||
existing["bgp instance"] = router_id_exist
|
||||
if need_bgp_instance:
|
||||
router_id_new = (vrf_name)
|
||||
if need_bgp_instance and default_af_type != "ipv6uni":
|
||||
router_id_new = vrf_name
|
||||
|
||||
if state == "present":
|
||||
if len(router_id_exist) == 0:
|
||||
cmd = ce_bgp_obj.create_bgp_instance(module=module)
|
||||
changed = True
|
||||
updates.append(cmd)
|
||||
updates.extend(cmd)
|
||||
elif router_id_new not in router_id_exist:
|
||||
ce_bgp_obj.merge_bgp_instance(module=module)
|
||||
cmd = ce_bgp_obj.merge_bgp_instance(module=module)
|
||||
changed = True
|
||||
|
||||
updates.extend(cmd)
|
||||
else:
|
||||
if not need_bgp_instance_other_rst["need_cfg"]:
|
||||
if vrf_name != "_public_":
|
||||
|
@ -2261,9 +2266,6 @@ def main():
|
|||
for item in cmd:
|
||||
updates.append(item)
|
||||
|
||||
router_id_end = ce_bgp_obj.get_bgp_instance(module=module)
|
||||
end_state["bgp instance"] = router_id_end
|
||||
|
||||
# bgp instance other
|
||||
exist_tmp = dict()
|
||||
for item in need_bgp_instance_other_rst:
|
||||
|
@ -2296,6 +2298,9 @@ def main():
|
|||
need_bgp_instance_other_rst = ce_bgp_obj.check_bgp_instance_other_args(
|
||||
module=module)
|
||||
|
||||
router_id_end = ce_bgp_obj.get_bgp_instance(module=module)
|
||||
end_state["bgp instance"] = router_id_end
|
||||
|
||||
end_tmp = dict()
|
||||
for item in need_bgp_instance_other_rst:
|
||||
if item != "need_cfg":
|
||||
|
|
Loading…
Reference in a new issue