From fa2e99ec09f0afcf5a855485f2d198d43d5eae50 Mon Sep 17 00:00:00 2001 From: cklewar Date: Tue, 10 Apr 2018 01:07:45 +0200 Subject: [PATCH] - fixed create flow route --- main.py | 29 ++++++++++++++++------------- template/set-flow-route.conf | 2 ++ ui/ui.js | 19 +++++++++++++------ utils/testdata.py | 2 +- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/main.py b/main.py index 8f2bfcf..0640ed5 100644 --- a/main.py +++ b/main.py @@ -24,7 +24,6 @@ import datetime import yaml import re -import pprint from jnpr.junos.utils.config import Config from jnpr.junos import Device @@ -46,9 +45,9 @@ def __init__(self): def addNewFlowRoute(self, flowRouteData=None): - # env = Environment(autoescape=False, + #env = Environment(autoescape=False, # loader=FileSystemLoader('./template'), trim_blocks=False, lstrip_blocks=False) - # template = env.get_template('set-flow-route.conf') + #template = env.get_template('set-flow-route.conf') with Device(host=self.routers[0]['rt1']['ip'], user=self.dev_user, password=self.dev_pw) as dev: @@ -64,11 +63,11 @@ def addNewFlowRoute(self, flowRouteData=None): except ConfigLoadError as cle: return False, cle.message - self.flow_config[flowRouteData['flowRouteName']] = {'dstPrefix': flowRouteData['dstPrefix'], - 'srcPrefix': flowRouteData['srcPrefix'], - 'protocol': flowRouteData['protocol'], - 'dstPort': flowRouteData['dstPort'], - 'srcPort': flowRouteData['srcPort'], + self.flow_config[flowRouteData['flowRouteName']] = {'dstPrefix': flowRouteData['dstPrefix'] if 'dstPrefix' in flowRouteData else None, + 'srcPrefix': flowRouteData['srcPrefix'] if 'srcPrefix' in flowRouteData else None, + 'protocol': flowRouteData['protocol'] if 'protocol' in flowRouteData else None, + 'dstPort': flowRouteData['dstPort'] if 'dstPort' in flowRouteData else None, + 'srcPort': flowRouteData['srcPort'] if 'srcPort' in flowRouteData else None, 'action': flowRouteData['action']} return True, 'Successfully added new flow route' @@ -110,6 +109,7 @@ def delFlowRoute(self, flowRouteData=None): def getActiveFlowRoutes(self): t = datetime.datetime.strptime(self.age_out_interval, "%H:%M:%S") + self.flow_active = dict() for router in self.routers: @@ -301,11 +301,14 @@ def loadFlowRouteConfig(self): else: _action[key] = {'value': None} - self.flow_config[route['name']] = {'dstPrefix': route['match']['destination'], - 'srcPrefix': route['match']['source'], - 'protocol': route['match']['protocol'], - 'dstPort': route['match']['destination-port'], - 'srcPort': route['match']['source-port'], 'action': _action} + print route + + self.flow_config[route['name']] = {'dstPrefix': route['match']['destination'] if 'destination' in route['match'] else '*', + 'srcPrefix': route['match']['source'] if 'source' in route['match'] else '*', + 'protocol': route['match']['protocol'] if 'protocol' in route['match'] else '*', + 'dstPort': route['match']['destination-port'] if 'destination-port' in route['match'] else '*', + 'srcPort': route['match']['source-port'] if 'source-port' in route['match'] else '*', + 'action': _action} return True, self.flow_config else: diff --git a/template/set-flow-route.conf b/template/set-flow-route.conf index 59858f8..9557184 100644 --- a/template/set-flow-route.conf +++ b/template/set-flow-route.conf @@ -2,7 +2,9 @@ routing-options { flow { route {{ flowRouteName }} { match { + {%- if dstPrefix is defined and dstPrefix !=None %} destination {{dstPrefix}}; + {%- endif %} {%- if dstPort is defined and dstPort !=None %} destination-port {{ dstPort }}; {%- endif %} diff --git a/ui/ui.js b/ui/ui.js index a28808e..2ccf3b5 100644 --- a/ui/ui.js +++ b/ui/ui.js @@ -324,13 +324,20 @@ function flowRouteAddNewConfigEventHandler(){ var data = new Object(); data.flowRouteName = $('#inputFlowRouteName').val(); - data.srcPrefix = $('#inputSrcPrefix').val(); - data.srcPort = $('#inputSrcPort').val(); - data.dstPrefix = $('#inputDstPrefix').val(); - data.dstPort = $('#inputDstPort').val(); - data.protocol = $('#selectProtocol').val(); - data.action = $('#selectAction').val(); + if ($('#inputSrcPrefix').val()){ + data.srcPrefix = $('#inputSrcPrefix').val(); + } else if ($('#inputSrcPort').val()){ + data.srcPort = $('#inputSrcPort').val(); + } else if ($('#inputDstPrefix').val()){ + data.dstPrefix = $('#inputDstPrefix').val(); + } else if ($('#inputDstPort').val()) { + data.dstPort = $('#inputDstPort').val(); + } else if ($('#selectProtocol').val()) { + data.protocol = $('#selectProtocol').val(); + } + + data.action = $('#selectAction').val(); addNewFlowRouteConfig(data); }); } diff --git a/utils/testdata.py b/utils/testdata.py index e075e3e..f4cd930 100644 --- a/utils/testdata.py +++ b/utils/testdata.py @@ -15,7 +15,7 @@ testdata = dict() start = 1 - stop = 2001 + stop = 101 step = 1 protocol = ['tcp', 'udp'] action = ['accept', 'discard', 'sample']