|
|
@@ -1,6 +1,6 @@
|
|
1
|
1
|
from django.shortcuts import render, redirect
|
|
2
|
2
|
from backend.mongodb import db
|
|
3
|
|
-from exfo.lib import Exfo, Mikrotik
|
|
|
3
|
+from exfo.lib import Exfo, Mikrotik, SLA_MAP
|
|
4
|
4
|
from pprint import pprint
|
|
5
|
5
|
|
|
6
|
6
|
from ttp import ttp
|
|
|
@@ -272,8 +272,11 @@ def dump_fixed_results(request):
|
|
272
|
272
|
#pprint(r)
|
|
273
|
273
|
try:
|
|
274
|
274
|
r0 = r['result']
|
|
|
275
|
+ pprint(r0)
|
|
275
|
276
|
if len(r0) > 0:
|
|
276
|
277
|
col.insert_many(r0)
|
|
|
278
|
+ else:
|
|
|
279
|
+ pprint("Empty Result")
|
|
277
|
280
|
except Exception as e:
|
|
278
|
281
|
pprint(e)
|
|
279
|
282
|
|
|
|
@@ -334,15 +337,23 @@ def gen_report_notebook():
|
|
334
|
337
|
if not d['sla_name']:
|
|
335
|
338
|
continue
|
|
336
|
339
|
|
|
337
|
|
- sla_splt = d['sla_name'].split('-')
|
|
|
340
|
+ # sla_splt = d['sla_name'].split('-')
|
|
|
341
|
+ sla_splt = d['verifier_name'].split('_')
|
|
338
|
342
|
if len(sla_splt) > 1:
|
|
339
|
|
- reg_cond = f'(?=^pppoe-out)(?=.*{sla_splt[0]})(?=.*{sla_splt[-1]})'
|
|
|
343
|
+ # reg_cond = f'(?=^pppoe-out)(?=.*{sla_splt[0]})(?=.*{sla_splt[-1]})'
|
|
|
344
|
+ # reg_cond = f'(?=^pppoe-out)(?=.*{sla_splt[-1]})'
|
|
|
345
|
+ reg_cond = f'(?=.*pppoe-out)(?=.*{sla_splt[-1]})'
|
|
340
|
346
|
|
|
341
|
347
|
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))
|
|
|
348
|
+ 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))
|
|
|
349
|
+ # temp_addr = list(c2.find({'ts': {'$lte': utc, '$gte': yest }, 'interface': {'$regex': reg_cond, '$options': 'i' }, 'invalid': 'false'}).sort("ts", -1))
|
|
|
350
|
+ # temp_addr = list(c2.find({'interface': {'$regex': reg_cond, '$options': 'i' }, 'invalid': 'false'}).sort("ts", -1))
|
|
|
351
|
+ pprint("-------")
|
|
343
|
352
|
pprint("temp addr")
|
|
344
|
353
|
pprint(d['sla_name'])
|
|
345
|
|
- # //pprint(temp_addr)
|
|
|
354
|
+
|
|
|
355
|
+ pprint(temp_addr)
|
|
|
356
|
+
|
|
346
|
357
|
target_address = None
|
|
347
|
358
|
if temp_addr:
|
|
348
|
359
|
target_address = temp_addr[0]
|
|
|
@@ -360,7 +371,7 @@ def gen_report_notebook():
|
|
360
|
371
|
df0 = pd.DataFrame(data)
|
|
361
|
372
|
df0 = df0.explode(["header", "results"])
|
|
362
|
373
|
try:
|
|
363
|
|
- df1 = df0[["header", "results", "dt", "sla_name", "test_display_name", "verifier_name", "network", "address", "interface"]]
|
|
|
374
|
+ df1 = df0[["header", "results", "dt", "sla_name", "test_display_name", "verifier_name", "network", "address", "interface", "ts"]]
|
|
364
|
375
|
except:
|
|
365
|
376
|
df1 = df0[["header", "results", "dt", "sla_name", "test_display_name", "verifier_name",]]
|
|
366
|
377
|
|
|
|
@@ -370,7 +381,7 @@ def gen_report_notebook():
|
|
370
|
381
|
#df1['results_text'] = df1['results'].apply(con_human)
|
|
371
|
382
|
df1['results_text'] = df1.apply(con_human, axis=1)
|
|
372
|
383
|
try:
|
|
373
|
|
- df1['network_str'] = df1['network'] + " / " + df1['interface']
|
|
|
384
|
+ df1['network_str'] = df1['network'] + " / " + df1['interface'] + " / " + df1['ts']
|
|
374
|
385
|
except:
|
|
375
|
386
|
df1['network_str'] = "N/A"
|
|
376
|
387
|
|
|
|
@@ -407,10 +418,10 @@ def gen_report(request):
|
|
407
|
418
|
table = table.dropna(how='all', axis=0)
|
|
408
|
419
|
table = table.dropna(how='all', axis=1)
|
|
409
|
420
|
|
|
410
|
|
- gen_report = request.GET.get('genReport', None)
|
|
|
421
|
+ is_gen_report = request.GET.get('genReport', None)
|
|
411
|
422
|
|
|
412
|
423
|
report_link = None
|
|
413
|
|
- if gen_report:
|
|
|
424
|
+ if is_gen_report:
|
|
414
|
425
|
import time
|
|
415
|
426
|
# ts = int(time.time())
|
|
416
|
427
|
import pytz
|
|
|
@@ -422,8 +433,12 @@ def gen_report(request):
|
|
422
|
433
|
report_link = f'/media/{fn}'
|
|
423
|
434
|
|
|
424
|
435
|
try:
|
|
425
|
|
- mk_ips = mkt.call_remote("ip/route")
|
|
426
|
|
- mk_address = mkt.call_remote("ip/address")
|
|
|
436
|
+ mk_ips = []
|
|
|
437
|
+ mk_address = []
|
|
|
438
|
+ for v in SLA_MAP.values():
|
|
|
439
|
+ mkt = Mikrotik(v)
|
|
|
440
|
+ mk_ips.append(mkt.call_remote("ip/route"))
|
|
|
441
|
+ mk_address.append(mkt.call_remote("ip/address"))
|
|
427
|
442
|
except:
|
|
428
|
443
|
mk_ips = []
|
|
429
|
444
|
mk_address = []
|
|
|
@@ -436,15 +451,19 @@ def gen_report(request):
|
|
436
|
451
|
def mikro_dump_task():
|
|
437
|
452
|
#look at only pppoe only ( excloude pppoe5 )
|
|
438
|
453
|
col = db['ip_address']
|
|
439
|
|
- try:
|
|
440
|
|
- mk_address = mkt.call_remote("ip/address")
|
|
441
|
|
- for i in mk_address:
|
|
442
|
|
- temp = {'ts': datetime.utcnow()}
|
|
443
|
|
- temp = temp | i
|
|
444
|
|
- col.insert_one(temp)
|
|
445
|
|
- pprint("dump ip complete")
|
|
446
|
|
- except Exception as e:
|
|
447
|
|
- pprint(f"error = {e}")
|
|
|
454
|
+ pprint(SLA_MAP.values())
|
|
|
455
|
+ for v in SLA_MAP.values():
|
|
|
456
|
+ for v0 in v.split(','):
|
|
|
457
|
+ mkt = Mikrotik(v0)
|
|
|
458
|
+ try:
|
|
|
459
|
+ mk_address = mkt.call_remote("ip/address")
|
|
|
460
|
+ for i in mk_address:
|
|
|
461
|
+ temp = {'ts': datetime.utcnow()}
|
|
|
462
|
+ temp = temp | i
|
|
|
463
|
+ col.insert_one(temp)
|
|
|
464
|
+ pprint("dump ip complete")
|
|
|
465
|
+ except Exception as e:
|
|
|
466
|
+ pprint(e)
|
|
448
|
467
|
|
|
449
|
468
|
@shared_task
|
|
450
|
469
|
def gen_report_task():
|
|
|
@@ -458,7 +477,8 @@ def gen_report_task():
|
|
458
|
477
|
else:
|
|
459
|
478
|
pprint(f"dump = {r.status_code}")
|
|
460
|
479
|
|
|
461
|
|
- r = requests.get(f'http://web:8000/backend/gen_report/?sla_name=BNG-144-VLAN20-Public&sla_name=BNG-144-VLAN10-Private&sla_name=BRAS-88-VLAN20-Public&sla_name=BRAS-88-VLAN10-Private&genReport=Gen+Report', timeout=None)
|
|
|
480
|
+ # r = requests.get(f'http://web:8000/backend/gen_report/?sla_name=BNG-144-VLAN20-Public&sla_name=BNG-144-VLAN10-Private&sla_name=BRAS-88-VLAN20-Public&sla_name=BRAS-88-VLAN10-Private&genReport=Gen+Report', timeout=None)
|
|
|
481
|
+ r = requests.get(f'http://web:8000/backend/gen_report/?genReport=Gen+Report&sla_name=BNG-144-VLAN20-Public&sla_name=BNG-144-VLAN10-Private&sla_name=BRAS-88-VLAN20-Public&sla_name=BRAS-88-VLAN10-Private', timeout=None)
|
|
462
|
482
|
if r.status_code == 200:
|
|
463
|
483
|
pprint("genreport OK")
|
|
464
|
484
|
else:
|