Browse Source

Merge branch 'master' of https://git2.simplico.net/tum/network_report_server

tum 1 year ago
parent
commit
7e2587330b
3 changed files with 38 additions and 6 deletions
  1. 35 3
      app/backend/views.py
  2. 2 2
      app/network_report/settings.py
  3. 1 1
      app/network_report/urls.py

+ 35 - 3
app/backend/views.py

@@ -12,7 +12,7 @@ from django.contrib import messages
12 12
 exfo = Exfo("administrator", "exf0w0rxC@t4dm!n")
13 13
 exfo.login()
14 14
 
15
-from datetime import datetime
15
+from datetime import datetime, timedelta
16 16
 from dateutil import tz
17 17
 
18 18
 mkt = Mikrotik()
@@ -314,30 +314,59 @@ def gen_report_notebook():
314 314
     to_zone = tz.gettz('Asia/Bangkok')
315 315
     
316 316
     c = db['fixed_results'].find()
317
+    c2  = db['ip_address']
318
+
317 319
     data = []
318 320
     for i in c:
319 321
         #pprint(i['header'])
320 322
         res = dict(zip(i['header'], i['results']))
321 323
         utc = datetime.fromtimestamp(int(i['ids']['time_stamp'])/1000000000)
322 324
         utc = utc.replace(tzinfo=from_zone)
325
+        yest = utc - timedelta(minutes=4)
323 326
         dt = utc.astimezone(to_zone)
324 327
 
325 328
         d = {'header': i['header'], 'results': i['results'], 'output': res, 'params': i['parameters'], 'ts': i['ids']['time_stamp'], 
326 329
              'dt': str(dt), 'test_type_name': i['ids']['fixed_results_url']}
330
+
331
+                
332
+
327 333
         d.update(i['names'])
334
+        if not d['sla_name']:
335
+            continue 
336
+
337
+        sla_splt = d['sla_name'].split('-')
338
+        if len(sla_splt) > 1:
339
+            reg_cond = f'(?=^pppoe-out)(?=.*{sla_splt[0]})(?=.*{sla_splt[-1]})'
340
+
341
+            pprint(reg_cond)
342
+            temp_addr = list(c2.find({'ts': {'$lte': utc, '$gte': yest }, 'interface': {'$regex': reg_cond,  '$not': { '$regex': '^pppoe-out5'}, '$options': 'i' }, 'invalid': 'false'}).sort("ts", -1))
343
+            pprint("temp addr")
344
+            pprint(d['sla_name'])
345
+            # //pprint(temp_addr)
346
+            target_address = None
347
+            if temp_addr:
348
+                target_address = temp_addr[0]
349
+
350
+            if target_address:
351
+                pprint("Found Target")
352
+                pprint(target_address)
353
+                d.update(target_address)
354
+ 
328 355
         #res.update(i['ids'])
329 356
         #res.update(i[])
330 357
         #pprint(d)
331 358
         data.append(d)
359
+
332 360
     df0 = pd.DataFrame(data)
333 361
     df0 = df0.explode(["header", "results"])
334
-    df1 = df0[["header", "results", "dt", "sla_name", "test_display_name", "verifier_name"]]
362
+    df1 = df0[["header", "results", "dt", "sla_name", "test_display_name", "verifier_name", "network", "address", "interface"]]
335 363
     df1 = df1.query('sla_name == sla_name')
336 364
     #pprint(df1['sla_name'].unique())
337 365
     
338 366
     #df1['results_text'] = df1['results'].apply(con_human)
339 367
     df1['results_text'] = df1.apply(con_human, axis=1)
340
-    table = df1.pivot(index=['sla_name', 'dt', 'verifier_name'],columns=['test_display_name','header'], values='results_text').sort_values(by=['sla_name', 'dt'], ascending=[True, False])
368
+    df1['network_str'] = df1['network'] + " / " + df1['interface'] 
369
+    table = df1.pivot(index=['sla_name', 'dt', 'verifier_name', 'network_str'],columns=['test_display_name','header'], values='results_text').sort_values(by=['sla_name', 'dt'], ascending=[True, False])
341 370
     table = table.dropna(how='all', axis=0)
342 371
     return (table,df1)
343 372
 
@@ -367,6 +396,9 @@ def gen_report(request):
367 396
         vr_filter = ", ".join(f"'{w}'" for w in vr_name)
368 397
         table = table.query(f"verifier_name in ({vr_filter})")
369 398
     
399
+    table = table.dropna(how='all', axis=0)
400
+    table = table.dropna(how='all', axis=1)
401
+
370 402
     gen_report = request.GET.get('genReport', None)
371 403
     
372 404
     report_link = None

+ 2 - 2
app/network_report/settings.py

@@ -57,7 +57,7 @@ INSTALLED_APPS = [
57 57
     'django.contrib.postgres',
58 58
     'crispy_forms',
59 59
     "crispy_bootstrap5",
60
-    "django_browser_reload",
60
+    # "django_browser_reload",
61 61
     'widget_tweaks',
62 62
     'django_bootstrap_breadcrumbs',
63 63
     'django_filters',
@@ -73,7 +73,7 @@ MIDDLEWARE = [
73 73
     'django.contrib.auth.middleware.AuthenticationMiddleware',
74 74
     'django.contrib.messages.middleware.MessageMiddleware',
75 75
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
76
-    "django_browser_reload.middleware.BrowserReloadMiddleware",
76
+    # "django_browser_reload.middleware.BrowserReloadMiddleware",
77 77
 ]
78 78
 
79 79
 ROOT_URLCONF = 'network_report.urls'

+ 1 - 1
app/network_report/urls.py

@@ -22,7 +22,7 @@ from django.views.generic.base import RedirectView
22 22
 urlpatterns = [
23 23
     path('admin/', admin.site.urls),
24 24
     path('backend/', include('backend.urls')),
25
-    path("__reload__/", include("django_browser_reload.urls")),
25
+    # path("__reload__/", include("django_browser_reload.urls")),
26 26
     path('', RedirectView.as_view(pattern_name='backend:index', permanent=True)),
27 27
 ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
28 28