Closed prokocool1987 closed 1 year ago
Hi @prokocool1987 ,
UNAUTHORIZED
error gives me a clue that it might be because of missed these variables:
TOPOLOGRAPH_USER_LOGIN
TOPOLOGRAPH_USER_PASS
Make sure that such variables are set properly and give me an update.
Hello, Vadim. Thank you for your reply. These variables are set. And i can make a GET request via web api swagger with this credentials, but my POST request in watcher section return 401 error.
@prokocool1987, I guess that something is wrong with Quagga's output. Try to test it like this:
Go to ospfwatcher's repository directory and launch a new container
docker run --env-file ./.env -it ospfwatcher_watcher:latest /bin/bash
Inside container run:
python3
import os
import requests
from Helper import QConnecter
quagga_conn = QConnecter()
lsdb_output = quagga_conn.get_lsdb_output()
Make sure that you get OSPF LSDB from quagga instance
print(lsdb_output)
If you see the full LSDB output - proceed with further steps:
Try to GET all graphs
_login, _pass = os.getenv('TOPOLOGRAPH_WEB_API_USERNAME_EMAIL'), os.getenv('TOPOLOGRAPH_WEB_API_PASSWORD')
_host, _port = os.getenv('TOPOLOGRAPH_HOST'), os.getenv('TOPOLOGRAPH_PORT')
r_get = requests.get(f'http://{_host}:{_port}/api/graph', auth=(_login, _pass))
r_get.ok
r_get.json()
Try to POST your OSPF LSDB
r_post = requests.post(f'http://{_host}:{_port}/api/watcher', auth=(_login, _pass),
json={'lsdb_output': lsdb_output, 'vendor_device': 'Quagga'}, timeout=(5, 30))
r_get.ok
r_get.json()
The error states that something is wrong with lsdb_output
, so I guess we need to check it first.
@Vadims06 , i've done tests: docker run --env-file ./.env --network="host" -it ospfwatcher_watcher:latest /bin/bash /home/watcher/watcher# python3 Python 3.9.16 (main, Feb 9 2023, 05:42:57) [GCC 8.3.0] on linux Type "help", "copyright", "credits" or "license" for more information.
import os import requests from Helper import QConnecter quagga_conn = QConnecter()>>> from Helper import QConnecter quagga_conn = QConnecter() lsdb_output = quagga_conn.get_lsdb_output() print(lsdb_output) OSPF Router with ID (172.20.0.1)
Router Link States (Area 0.0.0.1)
LS age: 78
Options: 0x2 : *|-|-|-|-|-|E|-
LS Flags: 0x3
Flags: 0x0
LS Type: router-LSA
Link State ID: 172.20.0.1
Advertising Router: 172.20.0.1
LS Seq Number: 80000004
Checksum: 0x01db
Length: 24
Number of Links: 0
OSPF Router with ID (172.20.0.1)
Net Link States (Area 0.0.0.1)
_login, _pass = os.getenv('TOPOLOGRAPH_WEB_API_USERNAME_EMAIL'), os.getenv('TOPOLOGRAPH_WEB_API_PASSWORD') _host, _port = os.getenv('TOPOLOGRAPH_HOST'), os.getenv('TOPOLOGRAPH_PORT') r_get = requests.get(f'http://{_host}:{_port}/api/graph', auth=(_login, _pass)) r_get.ok True r_get.json() [{'graph_time': '27Feb2023_03h55m29s_13_hosts_demo', 'hosts': {'count': 13}, 'networks': {'backuped': 18, 'count': 40, 'notbackuped': 22, 'url_link': 'http://10.1.16.57:8080/api/network/27Feb2023_03h55m29s_13_hosts_demo'}, 'timestamp': '2023-02-27T03:55:29.627000'}] r_post = requests.post(f'http://{_host}:{_port}/api/watcher', auth=(_login, _pass), ... json={'lsdb_output': lsdb_output, 'vendor_device': 'Quagga'}, timeout=(5, 30)) r_get.ok True r_get.json() [{'graph_time': '27Feb2023_03h55m29s_13_hosts_demo', 'hosts': {'count': 13}, 'networks': {'backuped': 18, 'count': 40, 'notbackuped': 22, 'url_link': 'http://10.1.16.57:8080/api/network/27Feb2023_03h55m29s_13_hosts_demo'}, 'timestamp': '2023-02-27T03:55:29.627000'}] r_post.ok
False r_post.json() 'Graph Parsing was unsuccessful'
@prokocool1987 I guess that you already set TEST_MODE to "False", right?
I also noticed that LSDB has Number of Links: 0
. Does Quagga have any OSPF neighbors? GRE's network should be included into Quagga's config file quagga/config/ospfd.conf
If not, that causes Graph Parsing was unsuccessful
error, because LSDB is empty.
@Vadims06 , you're right. I don't setup a gre runnel. After i did it, the watcher container works fine. Thank you for your support. The issue can be closed.
@prokocool1987, I improved an error message to get a better understanding of the issue. If GRE tunnel is not ready and no OSPF neighbors, ospfwatcher will print:
Traceback (most recent call last):
File "/home/watcher/watcher/pytail.py", line 63, in <module>
graph_obj = GraphFromTopolograph()
File "/home/watcher/watcher/Helper.py", line 717, in __init__
self.init_graph()
File "/home/watcher/watcher/Helper.py", line 727, in init_graph
raise ValueError('Quagga does not have any neighbors, please setup GRE tunnel and build OSPF adjacency first.')
ValueError: Quagga does not have any neighbors, please setup GRE tunnel and build OSPF adjacency first.
Could you please share your experience of OSPFWatcher installation, was it difficult to setup, is it enough to configure Quagga via env
variables? I will be happy to take this into account for getting this service better. Please fill free to email me to admin at topolograph.com
Hello, i've get an issue with a watcher container. it restarts cyclically with the error: UNAUTHORIZED, Graph Parsing was unsuccessful graph_obj = GraphFromTopolograph() File "/home/watcher/watcher/Helper.py", line 705, in init self.init_graph() File "/home/watcher/watcher/Helper.py", line 735, in init_graph raise ValueError(f"{r_post.reason}, {_error}") ValueError: UNAUTHORIZED, Graph Parsing was unsuccessful
Login and pass are correct and i've added source networks via web form. I'm using a topolograph docker version.