Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

watcher api ValueError: UNAUTHORIZED #3

Closed
prokocool1987 opened this issue Feb 27, 2023 · 7 comments
Closed

watcher api ValueError: UNAUTHORIZED #3

prokocool1987 opened this issue Feb 27, 2023 · 7 comments

Comments

@prokocool1987
Copy link

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.

@Vadims06
Copy link
Owner

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.

@prokocool1987
Copy link
Author

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.

@Vadims06
Copy link
Owner

@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.

@prokocool1987
Copy link
Author

@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'

@Vadims06
Copy link
Owner

Vadims06 commented Mar 2, 2023

@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.

@prokocool1987
Copy link
Author

@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.

@Vadims06 Vadims06 reopened this Mar 4, 2023
@Vadims06
Copy link
Owner

Vadims06 commented Mar 4, 2023

@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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants