Tum %!s(int64=2) %!d(string=před) roky
rodič
revize
967b4432ea

binární
app/Output/excel_out_test_excel_formatter_update.xlsx


+ 34 - 132
app/backend/templates/backend/index.html

@@ -1,15 +1,16 @@
1 1
 {% extends "base.html" %}
2 2
 {% load backend_tags %}
3 3
 {% block content %}
4
-<h2>APIs</h2>
4
+<h2>Exfo APIs</h2>
5 5
       <div class='row row-cols-md-5 row-cols-2'>
6 6
       {% for r in output.results %}
7 7
       <div class='p-3 border text-center'><a href="/backend/service_status?cmd={{r.URI}}/v1&section=index">{{ r.display_name }}</a></div>
8 8
       {% endfor %}
9 9
       </div>
10
+      <!--
10 11
       <pre>
11 12
       {{ output | pprint }}
12
-      </pre>
13
+      </pre> -->
13 14
       <h1>SLA</h1>
14 15
 
15 16
       {% for x  in sla.result %}
@@ -28,6 +29,37 @@
28 29
           </ul>
29 30
         {% endfor %}
30 31
       {% endfor %}
32
+      <hr>
33
+<h2>Mikrotik APIs</h2>
34
+<!--
35
+<pre>
36
+{{ mk_ips | pprint }}
37
+</pre> -->
38
+<h5 class='text-primary'>IP/ROUTE</h5>
39
+{% for ip in mk_ips %}
40
+<h4>{{ ip.gateway }}</h4>
41
+  <div class='d-flex flex-row justify-content-start  flex-wrap align-content-stretch mb-5'>
42
+    {% for k,v in ip.items %}
43
+      <div class='border p-3 fw-bolder'>{{ k }}</div><div class='border p-3'>{{ v }}</div>
44
+    {% endfor %}
45
+  </div>
46
+  
47
+{% endfor %}
48
+
49
+<h5 class='text-primary'>IP/Address</h5>
50
+<!-- 
51
+<pre>
52
+{{ mk_address | pprint }}
53
+</pre> -->
54
+{% for ip in mk_address %}
55
+<h4>{{ ip.interface }}</h4>
56
+  <div class='d-flex flex-row justify-content-start  flex-wrap align-content-stretch mb-5'>
57
+    {% for k,v in ip.items %}
58
+      <div class='border p-3 fw-bolder'>{{ k }}</div><div class='border p-3'>{{ v }}</div>
59
+    {% endfor %}
60
+  </div>
61
+  
62
+{% endfor %}
31 63
 
32 64
 <div class='py-3'>
33 65
   <p>
@@ -43,134 +75,4 @@
43 75
     </div>
44 76
   </div>
45 77
 </div>
46
-      <canvas class="my-4 w-100" id="myChart" width="900" height="380"></canvas>
47
-
48
-      <h2>Section title</h2>
49
-      <div class="table-responsive">
50
-        <table class="table table-striped table-sm">
51
-          <thead>
52
-            <tr>
53
-              <th scope="col">#</th>
54
-              <th scope="col">Header</th>
55
-              <th scope="col">Header</th>
56
-              <th scope="col">Header</th>
57
-              <th scope="col">Header</th>
58
-            </tr>
59
-          </thead>
60
-          <tbody>
61
-            <tr>
62
-              <td>1,001</td>
63
-              <td>random</td>
64
-              <td>data</td>
65
-              <td>placeholder</td>
66
-              <td>text</td>
67
-            </tr>
68
-            <tr>
69
-              <td>1,002</td>
70
-              <td>placeholder</td>
71
-              <td>irrelevant</td>
72
-              <td>visual</td>
73
-              <td>layout</td>
74
-            </tr>
75
-            <tr>
76
-              <td>1,003</td>
77
-              <td>data</td>
78
-              <td>rich</td>
79
-              <td>dashboard</td>
80
-              <td>tabular</td>
81
-            </tr>
82
-            <tr>
83
-              <td>1,003</td>
84
-              <td>information</td>
85
-              <td>placeholder</td>
86
-              <td>illustrative</td>
87
-              <td>data</td>
88
-            </tr>
89
-            <tr>
90
-              <td>1,004</td>
91
-              <td>text</td>
92
-              <td>random</td>
93
-              <td>layout</td>
94
-              <td>dashboard</td>
95
-            </tr>
96
-            <tr>
97
-              <td>1,005</td>
98
-              <td>dashboard</td>
99
-              <td>irrelevant</td>
100
-              <td>text</td>
101
-              <td>placeholder</td>
102
-            </tr>
103
-            <tr>
104
-              <td>1,006</td>
105
-              <td>dashboard</td>
106
-              <td>illustrative</td>
107
-              <td>rich</td>
108
-              <td>data</td>
109
-            </tr>
110
-            <tr>
111
-              <td>1,007</td>
112
-              <td>placeholder</td>
113
-              <td>tabular</td>
114
-              <td>information</td>
115
-              <td>irrelevant</td>
116
-            </tr>
117
-            <tr>
118
-              <td>1,008</td>
119
-              <td>random</td>
120
-              <td>data</td>
121
-              <td>placeholder</td>
122
-              <td>text</td>
123
-            </tr>
124
-            <tr>
125
-              <td>1,009</td>
126
-              <td>placeholder</td>
127
-              <td>irrelevant</td>
128
-              <td>visual</td>
129
-              <td>layout</td>
130
-            </tr>
131
-            <tr>
132
-              <td>1,010</td>
133
-              <td>data</td>
134
-              <td>rich</td>
135
-              <td>dashboard</td>
136
-              <td>tabular</td>
137
-            </tr>
138
-            <tr>
139
-              <td>1,011</td>
140
-              <td>information</td>
141
-              <td>placeholder</td>
142
-              <td>illustrative</td>
143
-              <td>data</td>
144
-            </tr>
145
-            <tr>
146
-              <td>1,012</td>
147
-              <td>text</td>
148
-              <td>placeholder</td>
149
-              <td>layout</td>
150
-              <td>dashboard</td>
151
-            </tr>
152
-            <tr>
153
-              <td>1,013</td>
154
-              <td>dashboard</td>
155
-              <td>irrelevant</td>
156
-              <td>text</td>
157
-              <td>visual</td>
158
-            </tr>
159
-            <tr>
160
-              <td>1,014</td>
161
-              <td>dashboard</td>
162
-              <td>illustrative</td>
163
-              <td>rich</td>
164
-              <td>data</td>
165
-            </tr>
166
-            <tr>
167
-              <td>1,015</td>
168
-              <td>random</td>
169
-              <td>tabular</td>
170
-              <td>information</td>
171
-              <td>text</td>
172
-            </tr>
173
-          </tbody>
174
-        </table>
175
-      </div>
176 78
 {% endblock %}

+ 8 - 2
app/backend/views.py

@@ -1,6 +1,6 @@
1 1
 from django.shortcuts import render
2 2
 from backend.mongodb import db
3
-from exfo.lib import Exfo
3
+from exfo.lib import Exfo, Mikrotik
4 4
 from pprint import pprint
5 5
 
6 6
 from ttp import ttp
@@ -9,6 +9,9 @@ from django.http import JsonResponse
9 9
 
10 10
 exfo = Exfo("administrator", "exf0w0rxC@t4dm!n")
11 11
 exfo.login()
12
+
13
+mkt = Mikrotik()
14
+
12 15
 def index(request):
13 16
     collection  = db['mascot']
14 17
     mascot_details = collection.find({})
@@ -96,8 +99,11 @@ interface {{ interface | contains("Vlan") }}
96 99
     # # print result in JSON format
97 100
     # results = parser.result(format='xlsx')[0]
98 101
     # pprint(results)
102
+    mk_ips = mkt.call_remote("ip/route") 
103
+    mk_address = mkt.call_remote("ip/address") 
104
+
99 105
     return render(request, 'backend/index.html', {'objs': mascot_details, 'output': rapi.json(),\
100
-            'sla': sla.json()})
106
+            'sla': sla.json(), 'mk_ips': mk_ips, 'mk_address': mk_address})
101 107
 
102 108
 
103 109
 #Define Collection

+ 22 - 0
app/exfo/lib.py

@@ -109,6 +109,22 @@ class Exfo:
109 109
 
110 110
 
111 111
 
112
+from requests.auth import HTTPBasicAuth
113
+
114
+
115
+class Mikrotik:
116
+    BASE_URL = "https://110.77.145.239/rest/"
117
+    basic = HTTPBasicAuth('brix', 'Digitins_01')
118
+
119
+    headers = {
120
+      'Authorization': 'Basic YWRtaW46RGlnaXRpbnNfMDE='
121
+    }
122
+
123
+    def call_remote(self, cmd, payload={}):
124
+        url = self.BASE_URL + cmd
125
+        pprint(url)
126
+        response = requests.get(url, auth=self.basic,  data=payload, verify=False)
127
+        return response.json()
112 128
 
113 129
 
114 130
 if __name__ == '__main__':
@@ -120,3 +136,9 @@ if __name__ == '__main__':
120 136
     e.test_avl_test_types()
121 137
     e.logout()
122 138
 
139
+    mkt = Mikrotik()
140
+    pprint("--- ip/route ---")
141
+    pprint(mkt.call_remote("ip/route"))
142
+    pprint("--- ip/address -- ")
143
+    pprint(mkt.call_remote("ip/address"))
144
+