Selaa lähdekoodia

network report

tum 2 vuotta sitten
vanhempi
commit
bf8f3a9cda

BIN
app/Output/excel_out_test_excel_formatter_update.xlsx


+ 63 - 0
app/backend/templates/backend/reports.html

1
+{% extends "base.html" %}
2
+{% load backend_tags %}
3
+{% block content %}
4
+  <h2>Reports</h2>
5
+  
6
+  <a href="">Generate Report</a>
7
+  <!-- 
8
+    {{ sla | pprint }} -->
9
+  <div class='table-responsive'>
10
+  <table class='table table-bordered' style='min-width:1200px'>
11
+    <thead>
12
+    <tr>
13
+      <th>Service</th>
14
+      {% for d in days %}
15
+      <th>{{ d }}</th>
16
+      {% endfor %}
17
+    </tr>
18
+    </thead>
19
+    <tbody>
20
+      {% for x in sla.result %}
21
+        {% for k,v in x.items %}
22
+        <tr>
23
+          <td colspan=32 class='bg-primary'>
24
+            {{ v.sla_name }}
25
+          </td> 
26
+        </tr>
27
+        {% with services=sla_results|kv:v.sla_name %}
28
+          <!--
29
+          <pre>
30
+          {{ services.result.service_instances | pprint }}
31
+          </pre> -->
32
+            {% for s in services.result.service_instances %}
33
+        <tr>
34
+              <td>
35
+                {{ s.service_instance_name }}
36
+              </td>
37
+              {% for d in days %}
38
+              <td></td>
39
+            {% endfor %}
40
+        </tr>
41
+            {% test_value test_status v.sla_name s.service_instance_name as tvalues %}
42
+            {% for rs in tvalues.results_scores %}
43
+            <tr>
44
+              
45
+              <td> - {{ rs.name }}</td><td>{{ rs.raw_value }}</td><td>{{ rs.score }}</td>
46
+            </tr>
47
+            {% endfor %}
48
+          {% endfor %}
49
+        {% endwith %}
50
+      {% endfor %}
51
+      {% endfor %}
52
+    </tbody>
53
+  </table>
54
+  </div>
55
+ <pre>
56
+ SLA Result
57
+    {{ sla_results | pprint }}
58
+ </pre>
59
+ <pre>
60
+Test Status
61
+  {{ test_status | pprint }}
62
+ </pre>
63
+{% endblock %}

+ 53 - 0
app/backend/templates/backend/reports2.html

1
+{% extends "base.html" %}
2
+{% load backend_tags %}
3
+{% block content %}
4
+  <h2>Reports</h2>
5
+  
6
+  <a href="">Generate Report</a>
7
+  <!-- 
8
+    {{ sla | pprint }} -->
9
+  <div class='table-responsive'>
10
+    {% for v in sla.result %}
11
+    <h2>{{ v.ids.sla_name  }}</h2>
12
+    <table class='table table-bordered' style='min-width:1600px'>
13
+      <thead>
14
+    {% with services=sla_results|kv:v.ids.sla_name %}
15
+     <tr>
16
+      {% for si in services.result.service_instances %}
17
+      {% service_value service_results v.ids.sla_name si.service_name  as sv %}
18
+      <th colspan='{{ sv.test_templates.0.input_parameters|true_length }}' class='text-center'>{{ si.service_instance_name }}
19
+      </th>
20
+      {% endfor %}
21
+      </tr>
22
+      <tr>
23
+      {% for si in services.result.service_instances %}
24
+        {% service_value service_results v.ids.sla_name si.service_name  as sv %}
25
+        {% with ts=sv.test_templates.0.input_parameters|true_value %}
26
+          {% for tv in ts %}
27
+          <th style='vertical-align:top'>{{ tv.0 }}/<br>{{ tv.1 }}</th>
28
+          {% endfor %}
29
+        {% endwith %}
30
+      {% endfor %}
31
+      </tr>
32
+    <tr>
33
+    </tr>
34
+    {% endwith %}
35
+      </thead>
36
+    </table>
37
+    {% endfor %}
38
+    
39
+  </div>
40
+
41
+ {% comment %}<pre>{% endcomment %}
42
+ {% comment %}SLA Result{% endcomment %}
43
+    {% comment %}{{ sla_results | pprint }}{% endcomment %}
44
+ {% comment %}</pre>{% endcomment %}
45
+ {% comment %}<pre>{% endcomment %}
46
+{% comment %}Test Status{% endcomment %}
47
+  {% comment %}{{ test_status | pprint }}{% endcomment %}
48
+ {% comment %}</pre>{% endcomment %}
49
+ <pre>
50
+Service Results
51
+  {{ service_results | pprint }}
52
+ </pre>
53
+{% endblock %}

+ 47 - 1
app/backend/templatetags/backend_tags.py

1
 from django import template
1
 from django import template
2
 from django.utils.http import urlencode
2
 from django.utils.http import urlencode
3
-
3
+from pprint import pprint
4
 
4
 
5
 register = template.Library()
5
 register = template.Library()
6
 
6
 
14
 def config_cur(test_name):
14
 def config_cur(test_name):
15
     import urllib.parse
15
     import urllib.parse
16
     return urllib.parse.quote_plus(f"/API/REST/Test/v1/ConfigCur?sections=all&test_type_name={test_name}&size=0")
16
     return urllib.parse.quote_plus(f"/API/REST/Test/v1/ConfigCur?sections=all&test_type_name={test_name}&size=0")
17
+
18
+
19
+@register.filter
20
+def kv(obj, value):
21
+    pprint("--- kv ---")
22
+    pprint(obj)
23
+    pprint(value)
24
+    return obj[value]
25
+
26
+
27
+@register.simple_tag
28
+def test_value(obj, sla, service_name):
29
+    try:
30
+        for r in obj[sla]['result']:
31
+            if r['service_instance_name'] == service_name:
32
+                return r
33
+        return None
34
+    except:
35
+        return None
36
+
37
+
38
+@register.simple_tag
39
+def service_value(obj, sla, service_name):
40
+
41
+    try:
42
+        for r in obj[sla]:
43
+            if r['ids']['service_name'] == service_name:
44
+                return r
45
+        return None
46
+    except:
47
+        return None
48
+
49
+
50
+
51
+@register.filter
52
+def true_length(obj):
53
+    t = [o for o in obj if o['required'] == True]
54
+    return len(t)
55
+
56
+@register.filter
57
+def true_value(obj):
58
+    try:
59
+        t = [(o['name'], o['value']) for o in obj if o['required'] == True]
60
+        return t
61
+    except:
62
+        return []

+ 1 - 0
app/backend/urls.py

7
 urlpatterns = [
7
 urlpatterns = [
8
     path('', views.index, name='index'),
8
     path('', views.index, name='index'),
9
     path('remote/', views.remote, name='remote'),
9
     path('remote/', views.remote, name='remote'),
10
+    path('reports/', views.reports, name='reports'),
10
     path('service_status/', views.service_status, name='service_status'),
11
     path('service_status/', views.service_status, name='service_status'),
11
 ]
12
 ]

+ 28 - 2
app/backend/views.py

99
     # # print result in JSON format
99
     # # print result in JSON format
100
     # results = parser.result(format='xlsx')[0]
100
     # results = parser.result(format='xlsx')[0]
101
     # pprint(results)
101
     # pprint(results)
102
-    mk_ips = mkt.call_remote("ip/route") 
103
-    mk_address = mkt.call_remote("ip/address") 
102
+    try:
103
+        mk_ips = mkt.call_remote("ip/route") 
104
+        mk_address = mkt.call_remote("ip/address") 
105
+    except:
106
+        mk_ips = []
107
+        mk_address = []
104
 
108
 
105
     return render(request, 'backend/index.html', {'objs': mascot_details, 'output': rapi.json(),\
109
     return render(request, 'backend/index.html', {'objs': mascot_details, 'output': rapi.json(),\
106
             'sla': sla.json(), 'mk_ips': mk_ips, 'mk_address': mk_address})
110
             'sla': sla.json(), 'mk_ips': mk_ips, 'mk_address': mk_address})
128
     pprint(r.json())
132
     pprint(r.json())
129
     # return JsonResponse(r.json())
133
     # return JsonResponse(r.json())
130
     return render(request, 'backend/service_status.html', {'res': r, 'section': section})
134
     return render(request, 'backend/service_status.html', {'res': r, 'section': section})
135
+
136
+def reports(request):
137
+    days = range(1,31)
138
+    sla = exfo.call_api("sla")
139
+    sla_json = sla.json()
140
+    sla_results = {}
141
+    test_status = {}
142
+    service_results = {}
143
+    for r in sla_json['result']:
144
+        sla_uri = r['ids']['sla_uri']
145
+        t = exfo.call_remote_api(sla_uri).json()
146
+        sla_results[r['ids']['sla_name']] = t
147
+        t = exfo.call_remote_api(sla_uri).json()
148
+        service_results[r['ids']['sla_name']] = []
149
+        for si in t['result']['service_instances']:
150
+            service_results[r['ids']['sla_name']].append(exfo.call_remote_api(si['service_uri']).json()['result'])
151
+        try:
152
+            t2 = exfo.call_remote_api(t['result']['tests'][-1]['test_status_uri']).json()
153
+            test_status[r['ids']['sla_name']] = t2
154
+        except:
155
+            test_status[r['ids']['sla_name']] = {}
156
+    return render(request, 'backend/reports2.html', {'days': days, 'sla': sla.json(), 'sla_results': sla_results, 'test_status': test_status, 'service_results': service_results })
131
     
157
     

+ 1 - 0
app/exfo/lib.py

113
 
113
 
114
 
114
 
115
 class Mikrotik:
115
 class Mikrotik:
116
+    # BASE_URL = "https://103.10.230.196/rest/"
116
     BASE_URL = "https://110.77.145.239/rest/"
117
     BASE_URL = "https://110.77.145.239/rest/"
117
     basic = HTTPBasicAuth('brix', 'Digitins_01')
118
     basic = HTTPBasicAuth('brix', 'Digitins_01')
118
 
119