Переглянути джерело

fixed page not found when changing vyos instance #34

Roberto Berto 5 роки тому
батько
коміт
4972505ee8

+ 1 - 1
vycenter/config/templates/config/instances.html

@@ -27,7 +27,7 @@
         <td>show</td>
         <td>show</td>
         <td>{{ instance.https }}</td>
         <td>{{ instance.https }}</td>
         <td><a href="{% url 'config:instance-conntry' instance.hostname %}">test</a></td>
         <td><a href="{% url 'config:instance-conntry' instance.hostname %}">test</a></td>
-        <td>{% if instance.main == True %}default{% else %}<a href="{% url 'config:instance-default' instance.hostname %}">set default</a>{% endif %}</td>
+        <td>{% if instance.main == True %}default{% else %}<a href="{% url 'config:instance-change' instance.hostname %}">set default</a>{% endif %}</td>
         <td>{% if instance.main == True %}-{% else %}<a href="{% url 'config:instance-remove' instance.hostname %}">remove</a>{% endif %}</td>
         <td>{% if instance.main == True %}-{% else %}<a href="{% url 'config:instance-remove' instance.hostname %}">remove</a>{% endif %}</td>
     </tr>
     </tr>
 
 

+ 1 - 1
vycenter/config/urls.py

@@ -7,13 +7,13 @@ app_name = 'config'
 
 
 urlpatterns = [
 urlpatterns = [
     path('', views.index, name='index'),
     path('', views.index, name='index'),
+    path('instance-change/<str:hostname>', views.instance_change, name='instance-change'),
     path('users-list', views.users_list, name='users-list'),
     path('users-list', views.users_list, name='users-list'),
     path('groups-list', views.groups_list, name='groups-list'),
     path('groups-list', views.groups_list, name='groups-list'),
     path('group-add', views.group_add, name='group-add'),
     path('group-add', views.group_add, name='group-add'),
     path('user-add', views.user_add, name='user-add'),
     path('user-add', views.user_add, name='user-add'),
     path('instance-add', views.instance_add, name='instance-add'),
     path('instance-add', views.instance_add, name='instance-add'),
     path('instance-conntry/<str:hostname>', views.instance_conntry, name='instance-conntry'),
     path('instance-conntry/<str:hostname>', views.instance_conntry, name='instance-conntry'),
-    path('instance-default/<str:hostname>', views.instance_default, name='instance-default'),
     path('instance-remove/<str:hostname>', views.instance_remove, name='instance-remove'),
     path('instance-remove/<str:hostname>', views.instance_remove, name='instance-remove'),
     path('instances', views.instances, name='instances'),
     path('instances', views.instances, name='instances'),
 
 

+ 27 - 13
vycenter/config/views.py

@@ -162,7 +162,7 @@ def instances(request):
             for i in all_instances:
             for i in all_instances:
                 pprint.pprint(i.hostname)
                 pprint.pprint(i.hostname)
                 instance_default(request, i.hostname)
                 instance_default(request, i.hostname)
-            
+                
         else:
         else:
             return redirect('config:instance-add')
             return redirect('config:instance-add')
 
 
@@ -322,24 +322,38 @@ def instance_conntry(request, hostname):
     }   
     }   
     return HttpResponse(template.render(context, request))
     return HttpResponse(template.render(context, request))
 
 
-
-def instance_default(request, hostname):
+# get default instance or set default instance 
+def instance_change(request, hostname = False):
     if not request.user.is_authenticated:
     if not request.user.is_authenticated:
         return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         return redirect('%s?next=%s' % (reverse('registration-login'), request.path))
         
         
     all_instances = vyos.instance_getall()
     all_instances = vyos.instance_getall()
 
 
+    #method = None  
+    if hostname != "__none__":
+        #method = "param"
+        pass
+    elif hostname == "__none__":
+        #method = "get"
+        hostname = request.POST.get('vyos-id', False)
+ 
     # permcheck
     # permcheck
-    instance = Instance.objects.get(hostname=hostname)
-    
-    connected = vyos.conntry(hostname)
-    # show some error when not connected
-    if connected == True:
-        request.session['hostname'] = hostname
-        instance.main = True
-        instance.save()
-
-    return redirect('config:instances')
+    if hostname != False:
+        try:
+            instance = Instance.objects.get(hostname=hostname)
+        except Instance.DoesNotExist:
+            print("instance not exists: " + str(hostname))
+            return redirect('config:instances')    
+
+        if instance:
+            connected = vyos.conntry(hostname)
+            # show some error when not connected
+            if connected == True:
+                request.session['hostname'] = hostname
+                instance.main = True
+                instance.save()
+
+    return redirect('config:instances')    
 
 
 
 
 
 

+ 9 - 2
vycenter/vycenter/templates/base.html

@@ -22,7 +22,10 @@
           
           
         </div>
         </div>
         <div class="col-9">
         <div class="col-9">
-          <form action="/config/instance-default" method="get" id="instancedefault">
+          <form action="{% url 'config:instance-change' '__none__' %}" method="post" id="instancedefault">
+            {% csrf_token %}
+
+
             <p class="text-right menu-config">
             <p class="text-right menu-config">
             
             
               <select name="vyos-id" id="vyos-id" onchange="this.form.submit();">
               <select name="vyos-id" id="vyos-id" onchange="this.form.submit();">
@@ -64,11 +67,14 @@
     <h2>Manage Routing</h2>
     <h2>Manage Routing</h2>
     <ul>
     <ul>
     <li><a href="{% url 'static:static-list' %}">Static Routing</a></li>
     <li><a href="{% url 'static:static-list' %}">Static Routing</a></li>
+    <!-- 
     <li><a href="{% url 'arp:arp-list' %}">ARP</a></li>
     <li><a href="{% url 'arp:arp-list' %}">ARP</a></li>
     <li><a href="{% url 'ospf:ospf-list' %}">OSPF</a></li>
     <li><a href="{% url 'ospf:ospf-list' %}">OSPF</a></li>
     <li><a href="{% url 'bgp:bgp-list' %}">BGP</a></li>
     <li><a href="{% url 'bgp:bgp-list' %}">BGP</a></li>
+    -->
     </ul>
     </ul>
 
 
+    <!--
     <h2>Manage Services</h2>
     <h2>Manage Services</h2>
     <ul>
     <ul>
     <li><a href="{% url 'dhcp:dhcp-list' %}">DHCP</a></li>
     <li><a href="{% url 'dhcp:dhcp-list' %}">DHCP</a></li>
@@ -96,7 +102,8 @@
     <ul>
     <ul>
     <li><a href="{% url 'wanlb:wanlb-list' %}">Wan Load Balancing</a></li>
     <li><a href="{% url 'wanlb:wanlb-list' %}">Wan Load Balancing</a></li>
     </ul>        
     </ul>        
-   
+    -->
+
     <h2>Manage VyControl</h2>
     <h2>Manage VyControl</h2>
     <ul>
     <ul>
     <li><a href="{% url 'config:instance-add' %}">Add new instance</a></li>
     <li><a href="{% url 'config:instance-add' %}">Add new instance</a></li>

+ 4 - 3
vycenter/vyos.py

@@ -96,8 +96,9 @@ def api_set(hostname, cmd):
 def get_hostname_prefered(request):
 def get_hostname_prefered(request):
     hostname = None
     hostname = None
 
 
-    if request.session.get('hostname', None) != None:
-        hostname = request.session.get('hostname', None)
+    #if request.session.get('hostname', None) != None:
+    #   hostname = request.session.get('hostname', None)
+    hostname = '179.127.12.142'
         
         
 
 
     if hostname == None:
     if hostname == None:
@@ -121,7 +122,7 @@ def conntry(hostname):
     print(get_url_retrieve(hostname))
     print(get_url_retrieve(hostname))
 
 
     try:
     try:
-        resp = requests.post(get_url_retrieve(hostname), verify=False, data=post, timeout=15)
+        resp = requests.post(get_url_retrieve(hostname), verify=False, data=post, timeout=10)
     except requests.exceptions.ConnectionError:
     except requests.exceptions.ConnectionError:
         return False
         return False