diff options
author | hochikong <1097225749@qq.com> | 2016-08-17 14:35:58 +0800 |
---|---|---|
committer | hochikong <1097225749@qq.com> | 2016-08-17 14:35:58 +0800 |
commit | 5fd94939d24cf731421ed4a566d38bb57a5f6f61 (patch) | |
tree | 890df6b6b0157e89b41e200267eff272d1ca9d5f | |
parent | 314750af29226259aceb27dfa39e1ef7aee67563 (diff) | |
download | python-vyos-mgmt-5fd94939d24cf731421ed4a566d38bb57a5f6f61.tar.gz python-vyos-mgmt-5fd94939d24cf731421ed4a566d38bb57a5f6f61.zip |
T86 Python management library methods give timeouts
Add the BGP configure support
-rw-r--r-- | vyroute/Router.py | 123 | ||||
-rw-r--r-- | vyroute/basic_function/BGPRoute.py | 102 |
2 files changed, 225 insertions, 0 deletions
diff --git a/vyroute/Router.py b/vyroute/Router.py index 476414a..7eb6cc5 100644 --- a/vyroute/Router.py +++ b/vyroute/Router.py @@ -6,6 +6,7 @@ from vyroute.basic_function import StaticRoute from vyroute.basic_function import RIPRoute from vyroute.basic_function import OSPFRoute from vyroute.basic_function import DeleteRoute +from vyroute.basic_function import BGPRoute class Router(object): @@ -553,3 +554,125 @@ class BasicRouter(Router): return {"Error": "Router object not connect to a router."} except Exception as e: return {"Error": e} + + def bgp_as(self, self_as, neighbor, multihop, remote_as, update_source): + """VyOS BGP router basic setting + + :param self_as: The AS number of the router you login + :param neighbor: The neighbor router address + :param multihop: The amount of hops + :param remote_as: The remote AS number + :param update_source: The update source + :return: A message + """ + try: + if self.__status["status"] == "login": + if self.__status["configure"] == "Yes": + res = BGPRoute.bgp_as(self.__conn, self_as, neighbor, multihop, remote_as, update_source) + if "Result" in res: + if self.__status["commit"] == "No": + pass + else: + self.__status["commit"] = "No" + if self.__status["save"] == "No": + pass + else: + self.__status["save"] = "No" + return res + else: + return res + else: + return "Error:You are not in configure mode." + else: + return "Error:Router object not connect to a router." + except Exception as e: + return e + + def bgp_network(self, self_as, network_range): + """Add a network to BGP router + + :param self_as: The AS number of the router you login + :param network_range: The target network,don't forget the netmask + :return: A message + """ + try: + if self.__status["status"] == "login": + if self.__status["configure"] == "Yes": + res = BGPRoute.bgp_network(self.__conn, self_as, network_range) + if "Result" in res: + if self.__status["commit"] == "No": + pass + else: + self.__status["commit"] = "No" + if self.__status["save"] == "No": + pass + else: + self.__status["save"] = "No" + return res + else: + return res + else: + return "Error:You are not in configure mode." + else: + return "Error:Router object not connect to a router." + except Exception as e: + return e + + def bgp_router_id(self, self_as, router_id): + """Set a router id for the router you login + + :param self_as: The AS number of the router you login + :param router_id: The router id,or you can use the router address as router id + :return: A message + """ + try: + if self.__status["status"] == "login": + if self.__status["configure"] == "Yes": + res = BGPRoute.bgp_router_id(self.__conn, self_as, router_id) + if "Result" in res: + if self.__status["commit"] == "No": + pass + else: + self.__status["commit"] = "No" + if self.__status["save"] == "No": + pass + else: + self.__status["save"] = "No" + return res + else: + return res + else: + return "Error:You are not in configure mode." + else: + return "Error:Router object not connect to a router." + except Exception as e: + return e + + def bgp_blackhole_route(self, network_range): + """Set a blackhole route + + :param network_range: The target network,don't forget the netmask + :return: A message + """ + try: + if self.__status["status"] == "login": + if self.__status["configure"] == "Yes": + res = BGPRoute.bgp_blackhole_route(self.__conn, network_range) + if "Result" in res: + if self.__status["commit"] == "No": + pass + else: + self.__status["commit"] = "No" + if self.__status["save"] == "No": + pass + else: + self.__status["save"] = "No" + return res + else: + return res + else: + return "Error:You are not in configure mode." + else: + return "Error:Router object not connect to a router." + except Exception as e: + return e diff --git a/vyroute/basic_function/BGPRoute.py b/vyroute/basic_function/BGPRoute.py new file mode 100644 index 0000000..bcb891d --- /dev/null +++ b/vyroute/basic_function/BGPRoute.py @@ -0,0 +1,102 @@ +# Copyright (c) 2016 Hochikong +def bgp_as(obj, self_as, neighbor, multihop, remote_as, update_source): + """VyOS BGP router basic setting about AS + + :param obj: A connection object + :param self_as: The AS number of the router you login + :param neighbor: The neighbor router address + :param multihop: The amount of hops + :param remote_as: The remote AS number + :param update_source: The update source + :return: A message + """ + bgp_multihop_configuration = "set protocols bgp %s neighbor %s ebgp-multihop %s" + bgp_remote_as_configuration = "set protocols bgp %s neighbor %s remote-as %s" + bgp_update_source_configuration = "set protocols bgp %s neighbor %s update-source %s" + + try: + reg = 0 + error_message = [] + obj.sendline(bgp_multihop_configuration % (self_as, neighbor, multihop)) + obj.prompt() + if len(obj.before) > obj.before.index('\r\n') + 2: + error_message.append(obj.before) + reg += 1 + obj.sendline(bgp_remote_as_configuration % (self_as, neighbor, remote_as)) + obj.prompt() + if len(obj.before) > obj.before.index('\r\n') + 2: + error_message.append(obj.before) + reg += 1 + obj.sendline(bgp_update_source_configuration % (self_as, neighbor, update_source)) + obj.prompt() + if len(obj.before) > obj.before.index('\r\n') + 2: + error_message.append(obj.before) + reg += 1 + if reg > 0: + return error_message + else: + return "Result:Configured successfully" + except Exception as e: + return e + + +def bgp_network(obj, self_as, network_range): + """Add a network to BGP router + + :param obj: A connection object + :param self_as: The AS number of the router you login + :param network_range: The target network,don't forget the netmask + :return: A message + """ + bgp_network_configuration = "set protocols bgp %s network %s" + + try: + obj.sendline(bgp_network_configuration % (self_as, network_range)) + obj.prompt() + if len(obj.before) > obj.before.index('\r\n') + 2: + return obj.before + else: + return "Result:Configured successfully" + except Exception as e: + return e + + +def bgp_router_id(obj, self_as, router_id): + """Set a router id for the router you login + + :param obj:A connection object + :param self_as: The AS number of the router you login + :param router_id: The router id,or you can use the router address as router id + :return: A message + """ + bgp_router_id_configuration = "set protocols bgp %s parameters router-id %s" + + try: + obj.sendline(bgp_router_id_configuration % (self_as, router_id)) + obj.prompt() + if len(obj.before) > obj.before.index('\r\n') + 2: + return obj.before + else: + return "Result:Configured successfully" + except Exception as e: + return e + + +def bgp_blackhole_route(obj, network_range): + """Set a blackhole route + + :param obj: A connection object + :param network_range: The target network,don't forget the netmask + :return: A message + """ + bgp_blackhole_configuration = "set protocols static route %s blackhole distance '254' " + + try: + obj.sendline(bgp_blackhole_configuration % network_range) + obj.prompt() + if len(obj.before) > obj.before.index('\r\n') + 2: + return obj.before + else: + return "Result:Configured successfully" + except Exception as e: + return e |