0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-23 18:21:54 +00:00
bird/python/BIRD/Status.py

49 lines
1.4 KiB
Python
Raw Normal View History

2023-04-03 15:52:03 +00:00
import asyncio
from BIRD.Basic import Basic, Code
2023-04-03 15:52:03 +00:00
class StatusException(Exception):
def __init__(self, msg):
Exception.__init__(self, "Failed to parse status: " + msg)
class Status(Basic):
async def update(self):
self.data = {}
await self.bird.cli.open()
data = await self.bird.cli.socket.command("show status")
if data[0]["code"] != Code.Version:
2023-04-03 15:52:03 +00:00
raise StatusException(f"BIRD version not on the first line, got {data[0]['code']}")
self.data["version"] = data[0]["data"]
if data[-1]["code"] != Code.Status:
2023-04-03 15:52:03 +00:00
raise StatusException(f"BIRD status not on the last line, got {data[-1]['code']}")
self.data["status"] = data[-1]["data"]
# for d in data[1:-1]:
class VersionException(Exception):
def __init__(self, msg):
Exception.__init__(self, "Failed to parse version from socket hello: " + msg)
class Version(Basic):
async def update(self):
await self.bird.cli.open()
hello = self.bird.cli.hello
if hello["code"] != Code.Welcome:
2023-04-03 15:52:03 +00:00
raise VersionException(f"code is {hello['code']}, should be 1")
s = hello["data"].split(" ")
if len(s) != 3 or s[2] != "ready.":
raise VersionException(f"malformed hello: {hello['data']}")
self.data = {
"name": s[0],
"version": s[1],
}