diff options
author | Hochikong <michellehzg@gmail.com> | 2016-05-24 01:05:26 +0800 |
---|---|---|
committer | Hochikong <michellehzg@gmail.com> | 2016-05-24 01:05:26 +0800 |
commit | 9eca534f9735c8c5e984ce5a3add7cbb9daa4345 (patch) | |
tree | 7f2555294adf102455f5a3f6d78c44aba3c72f8b /vyroute/basic_function | |
parent | 8e2f9aa509a5d90897844c196675836a10068237 (diff) | |
download | python-vyos-mgmt-9eca534f9735c8c5e984ce5a3add7cbb9daa4345.tar.gz python-vyos-mgmt-9eca534f9735c8c5e984ce5a3add7cbb9daa4345.zip |
too more changes,i donno what to say
Diffstat (limited to 'vyroute/basic_function')
-rw-r--r-- | vyroute/basic_function/Modifylo.py | 43 | ||||
-rw-r--r-- | vyroute/basic_function/OSPFRoute.py | 126 | ||||
-rw-r--r-- | vyroute/basic_function/RIPRoute.py | 44 | ||||
-rw-r--r-- | vyroute/basic_function/StaticRoute.py | 47 |
4 files changed, 146 insertions, 114 deletions
diff --git a/vyroute/basic_function/Modifylo.py b/vyroute/basic_function/Modifylo.py index 6808c0d..9d88427 100644 --- a/vyroute/basic_function/Modifylo.py +++ b/vyroute/basic_function/Modifylo.py @@ -1,50 +1,21 @@ # author=hochikong -from Exscript.protocols import SSH2 -from Exscript import Account - - -def modifylo(data): +def modifylo(obj, data): """This method provide a loopback address configuration function Parameter data example: - {'router':'vyos@172.16.77.188','passwd':'vyos','config':'1.1.1.1/32' + {'config':'1.1.1.1/32' } + :param obj: a connection object :param data: a python dictionary :return: a python dictionary """ + lo_basic_configuration = "set interfaces loopback lo address %s" try: - stringlist = list(data['router']) - divi = stringlist.index('@') - user = ''.join(stringlist[:divi]) - passwd = data['passwd'] - address = ''.join(stringlist[divi+1:]) - account = Account(user, passwd) - conn = SSH2() - conn.connect(address) - conn.login(account) - -# configure mode - conn.execute("configure") - -# configure loopback interface lo address - conn.execute(lo_basic_configuration % data['config']) - - # commit configuration - conn.execute("commit") - - # save configuration - conn.execute("save") - - # exit configure mode - conn.execute("exit") - - # close connection - conn.close(force=True) - - return {"Result": "Configured successfully"} - + # Configure loopback interface lo address + obj.execute(lo_basic_configuration % data['config']) + return {"Result": "Modify successfully."} except Exception, e: return {'Error': e} diff --git a/vyroute/basic_function/OSPFRoute.py b/vyroute/basic_function/OSPFRoute.py new file mode 100644 index 0000000..b89edd6 --- /dev/null +++ b/vyroute/basic_function/OSPFRoute.py @@ -0,0 +1,126 @@ +# author=hochikong +def ospfarea(obj, data): + """This method provide a OSPF area configuration function + + Parameter data example: + {'config':[{'area':'0','network':'192.168.10.0/24'}, + {'area':'0','network':'10.20.10.0/24'}, + ], + } + + :param obj: a connection object + :param data: a python dictionary + :return: a python dictionary + """ + ospf_basic_configuration = "set protocols ospf area %s network %s" + + try: + # Configure ospf area + for i in data["config"]: + obj.execute(ospf_basic_configuration % (i['area'], i['network'])) + return {"Result": "Configured successfully"} + except Exception, e: + return {"Error": e} + + +def router_id(obj, data): + """This method provide a router id configuration function + + Parameter data example: + {'config':{'id':'1.1.1.1'}, + } + + :param obj: a connection object + :param data: a python dictionary + :return: a python dictionary + """ + router_id_configuration = "set protocols ospf parameters router-id %s" + try: + # Configure router id + obj.execute(router_id_configuration % data['config']['id']) + return {"Result": "Configured successfully"} + except Exception, e: + return {"Error": e} + + +def ospf_redistribute(obj, data): + """This method provide a router redistribute function + + Parameter data example: + {'config':{'type':'2'}, + } + + :param obj: a connection object + :param data: a python dictionary + :return: a python dictionary + """ + redistribute_configuration = {"0": "set protocols ospf redistribute connected metric-type %s", + "1": "set protocols ospf redistribute connected route-map CONNECT", + } + try: + obj.execute(redistribute_configuration['0'] % data['config']['type']) + obj.execute(redistribute_configuration['1']) + return {"Result": "Configured successfully"} + except Exception, e: + return {"Error": e} + + +def ospf_adjacency(obj): + """This method execute : set protocols ospf log-adjacency-changes + + :param obj: a connection object + :return: a python dictionary + """ + log_adjacency_changes_configuration = "set protocols ospf log-adjacency-changes" + try: + obj.execute(log_adjacency_changes_configuration) + return {"Result": "Configured successfully"} + except Exception, e: + return {"Error": e} + + +def ospf_default_route(obj, data): + """This method execute : set protocols ospf default-information originate always + and other commands + + Parameter data example: + {'config':{'metric':'10','metric-type':'2'}, + } + + :param obj: a connection object + :param data: a python dictionary + :return: a python dictionary + """ + default_route_configuration = {"0": "set protocols ospf default-information originate always", + "1": "set protocols ospf default-information originate metric %s", + "2": "set protocols ospf default-information originate metric-type %", + } + try: + obj.execute(default_route_configuration['0']) + obj.execute(default_route_configuration['1'] % data['config']['metric']) + obj.execute(default_route_configuration['2'] % data['config']['metric-type']) + return {"Result": "Configured successfully"} + except Exception, e: + return {"Error": e} + + +def ospf_route_map(obj, data): + """This method used for VyOS route-map setting when you configure a OSPF router + + Parameter data example: + {'config':{'rule':'10','interface':'lo'}, + } + + :param obj: a connection object + :param data: a python dictionary + :return: a python dictionary + """ + route_map_configuration = {"0": "set policy route-map CONNECT rule %s action permit", + "1": "set policy route-map CONNECT rule %s match interface %s", + } + try: + obj.execute(route_map_configuration['0'] % data['config']['rule']) + obj.execute(route_map_configuration['1'] % (data['config']['rule'], data['config']['interface'])) + return {"Result": "Configured successfully"} + except Exception, e: + return {"Error": e} diff --git a/vyroute/basic_function/RIPRoute.py b/vyroute/basic_function/RIPRoute.py index f559a17..085299e 100644 --- a/vyroute/basic_function/RIPRoute.py +++ b/vyroute/basic_function/RIPRoute.py @@ -1,55 +1,23 @@ # author=hochikong -from Exscript.protocols import SSH2 -from Exscript import Account - - -def riproute(data): +def riproute(obj, data): """This method provide a RIP protocols router configuration function Parameter data example: - {'router':'vyos@172.16.77.188','passwd':'vyos', - 'config':['192.168.10.0/24','10.20.10.0/24'], + {'config':['192.168.10.0/24','10.20.10.0/24'], } + :param obj: a connection object :param data: a python dictionary :return: a python dictionary """ rip_basic_configuration = "set protocols rip network %s" redistribute_configuration = "set protocols rip redistribute connected" try: - stringlist = list(data['router']) - divi = stringlist.index('@') - user = ''.join(stringlist[:divi]) - passwd = data['passwd'] - address = ''.join(stringlist[divi + 1:]) - account = Account(user, passwd) - conn = SSH2() - conn.connect(address) - conn.login(account) - - # configure mode - conn.execute("configure") - - # configure RIP router + # Configure RIP router for i in data['config']: - conn.execute(rip_basic_configuration % i) - - conn.execute(redistribute_configuration) - - # commit configuration - conn.execute("commit") - - # save configuration - conn.execute("save") - - # exit configure mode - conn.execute("exit") - - # close connection - conn.close(force=True) - + obj.execute(rip_basic_configuration % i) + obj.execute(redistribute_configuration) return {"Result": "Configured successfully"} - except Exception, e: return {"Error": e} diff --git a/vyroute/basic_function/StaticRoute.py b/vyroute/basic_function/StaticRoute.py index f9fa233..f0d6afc 100644 --- a/vyroute/basic_function/StaticRoute.py +++ b/vyroute/basic_function/StaticRoute.py @@ -1,57 +1,24 @@ # author=hochikong -from Exscript.protocols import SSH2 -from Exscript import Account - - -def staticroute(data): +def staticroute(obj, data): """This method provide a basic static router configuration function Parameter data example: - {'router':'vyos@172.16.77.188','passwd':'vyos', - 'config':[{'target':'10.20.10.0/24','next-hop':'10.20.10.1','distance':'1'}, - {'target':"192.168.20.0/24','next-hop':'192.168.20.1','distance':'1'} - ] + {'config':[{'target':'10.20.10.0/24','next-hop':'10.20.10.1','distance':'1'}, + {'target':"192.168.20.0/24','next-hop':'192.168.20.1','distance':'1'}, + ], } + :param obj: a connection object :param data: a python dictionary :return:a python dictionary """ static_basic_configuration = "set protocols static route %s next-hop %s distance %s" try: - stringlist = list(data['router']) - divi = stringlist.index('@') - user = ''.join(stringlist[:divi]) - passwd = data['passwd'] - address = ''.join(stringlist[divi+1:]) - account = Account(user, passwd) - conn = SSH2() - conn.connect(address) - conn.login(account) - - # configure mode - conn.execute("configure") - - # configure static router + # Configure static router for i in data['config']: - conn.execute(static_basic_configuration % (i['target'], - i['next-hop'], - i['distance'])) - - # commit configuration - conn.execute("commit") - - # save configuration - conn.execute("save") - - # exit configure mode - conn.execute("exit") - - # close connection - conn.close(force=True) - + obj.execute(static_basic_configuration % (i['target'], i['next-hop'], i['distance'])) return {"Result": "Configured successfully"} - except Exception, e: return {'Error': e} |