Browse Source

fix bug cannot change interface firewall to None #2

Roberto Berto 5 years ago
parent
commit
9f07362350

+ 2 - 2
vycenter/interface/templates/interface/index.html

@@ -31,7 +31,7 @@
                 {% if key == "loopback" %}
                 {% if key == "loopback" %}
                     -
                     -
                 {% else %}
                 {% else %}
-                    <select id="firewall-ipv4-in" name="firewall-ipv4-in.{{ key }}.{{ ifkey }}"><option value="">None</option>
+                    <select id="firewall-ipv4-in" name="firewall-ipv4-in.{{ key }}.{{ ifkey }}"><option value="--remove--">None</option>
                     {% if firewall_all != False %}
                     {% if firewall_all != False %}
                         {% for fkey, fvalue in firewall_all.items %}    
                         {% for fkey, fvalue in firewall_all.items %}    
                             {% for fitemkey, fitemvalue in fvalue.items %}
                             {% for fitemkey, fitemvalue in fvalue.items %}
@@ -46,7 +46,7 @@
                 {% if key == "loopback" %}
                 {% if key == "loopback" %}
                     -
                     -
                 {% else %}
                 {% else %}
-                    <select id="firewall-ipv4-out" name="firewall-ipv4-out.{{ key }}.{{ ifkey }}"><option value="">None</option>
+                    <select id="firewall-ipv4-out" name="firewall-ipv4-out.{{ key }}.{{ ifkey }}"><option value="--remove--">None</option>
                     {% if firewall_all != False %}
                     {% if firewall_all != False %}
                         {% for fkey, fvalue in firewall_all.items %}    
                         {% for fkey, fvalue in firewall_all.items %}    
                             {% for fitemkey, fitemvalue in fvalue.items %}
                             {% for fitemkey, fitemvalue in fvalue.items %}

+ 9 - 2
vycenter/interface/views.py

@@ -53,7 +53,11 @@ def index(request):
             interface_type = pos[1]
             interface_type = pos[1]
             interface_name = pos[2]
             interface_name = pos[2]
             firewall_name = request.POST[el]
             firewall_name = request.POST[el]
-            result1 = vyos.set_interface_firewall_ipv4(hostname_default, interface_type, interface_name, "in", firewall_name)         
+            if firewall_name == "--remove--":
+                result1 = vyos.delete_interface_firewall_ipv4(hostname_default, interface_type, interface_name, "in")         
+            else:
+                result1 = vyos.set_interface_firewall_ipv4(hostname_default, interface_type, interface_name, "in", firewall_name)         
+
             pprint.pprint(result1)  
             pprint.pprint(result1)  
             fw_changed = True
             fw_changed = True
         elif el.startswith('firewall-ipv4-out') and request.POST[el]:
         elif el.startswith('firewall-ipv4-out') and request.POST[el]:
@@ -62,7 +66,10 @@ def index(request):
             interface_type = pos[1]
             interface_type = pos[1]
             interface_name = pos[2]
             interface_name = pos[2]
             firewall_name = request.POST[el]
             firewall_name = request.POST[el]
-            result1 = vyos.set_interface_firewall_ipv4(hostname_default, interface_type, interface_name, "out", firewall_name)
+            if firewall_name == "--remove--":
+                result1 = vyos.delete_interface_firewall_ipv4(hostname_default, interface_type, interface_name, "out")
+            else:
+                result1 = vyos.set_interface_firewall_ipv4(hostname_default, interface_type, interface_name, "out", firewall_name)
             pprint.pprint(result1)              
             pprint.pprint(result1)              
             fw_changed = True
             fw_changed = True
             
             

+ 7 - 0
vycenter/vyos.py

@@ -139,6 +139,13 @@ def set_interface_firewall_ipv4(hostname, interface_type, interface_name, direct
     success = api_set(hostname, cmd)
     success = api_set(hostname, cmd)
     return success
     return success
 
 
+def delete_interface_firewall_ipv4(hostname, interface_type, interface_name, direction):
+    cmd = {"op": "delete", "path": ["interfaces", interface_type, interface_name, "firewall", direction]}
+    post = {'key': get_key(hostname), 'data': json.dumps(cmd)}
+
+    success = api_set(hostname, cmd)
+    return success    
+
 def get_interfaces(hostname):
 def get_interfaces(hostname):
     cmd = {"op": "showConfig", "path": ["interfaces"]}
     cmd = {"op": "showConfig", "path": ["interfaces"]}