BIRD interface handler for Python
Project description
.. -*- restructuredtext -*-
==========================================
pybird - BIRD interface handler for Python
==========================================
PyBird is a Python interface to the BIRD Internet Routing Daemon's UNIX control
socket, handling the socket connections and parsing the output.
In it's current state, you can use it to query the status of specific or all
BGP peers, to query the routes received, accepted and rejected from a peer,
or the general status of BIRD (router ID, last config change)
Usage example
=============
>>> from pybird import PyBird
>>> pybird = PyBird(socket_file='/var/run/bird.ctl')
>>> peer_state = pybird.get_peer_status('KPN')
>>> peer_state['up']
True
>>> peer_state['import_updates_received']
4214
>>> peer_state['last_change']
datetime.datetime(2011, 6, 19, 19, 57, 0, 0)
>>> rejected = pybird.get_peer_prefixes_rejected('KPN')
>>> rejected[0]['as_path']
'23456 65592'
>>> status = pybird.get_status()
>>> status['last_reconfiguration_time']
datetime.datetime(2012, 1, 3, 12, 46, 40)
>>> status['router_id']
"192.168.0.1"
You can also call ``get_peer_status()`` without a peer name, to get an array
with all the BGP peers.
Full field list for peers
=========================
All fields that are decoded, if present:
- ``name``: Name as configured in BIRD
- ``protocol``: Currently always "BGP"
- ``last_change``: Last state change as a ``datetime.datetime`` object
- ``state``: String of the peer status, e.g. "Established" or "Passive"
- ``up``: Boolean, True if session is Established
- ``routes_imported``: Number of imported routes
- ``routes_exported``: Number of exported routes
- ``router_id``: BGP router id
And all combinations of:
``[import,export]_[updates,withdraws]_[received,rejected,filtered,ignored,accepted]``
which BIRD supports.
Full field list for routes
==========================
All fields that are decoded, if present:
- ``origin``: BGP origin, e.g. "IGP"
- ``as_path``: AS path as string
- ``next_hop``: BGP next hop
- ``local_pref``: Local pref, e.g. '100'
- ``community``: Communities in string format, e.g. '8954:220 8954:620'
And any other BGP attribute fields BIRD has found.
Full field list for BIRD status
===============================
- ``router_id``: BGP Router ID as string
- ``last_reboot``: Last BIRD restart time as datetime
- ``last_reconfiguration``: Last BIRD config change as datetime
Test suite
==========
There is a series of tests in ``tests.py``. This includes a ``MockBird``: a
mocked BIRD instance, with fixed but real responses, that listens on a real
UNIX socket. This means the tests do not only test parsing, but also socket
interaction.
==========================================
pybird - BIRD interface handler for Python
==========================================
PyBird is a Python interface to the BIRD Internet Routing Daemon's UNIX control
socket, handling the socket connections and parsing the output.
In it's current state, you can use it to query the status of specific or all
BGP peers, to query the routes received, accepted and rejected from a peer,
or the general status of BIRD (router ID, last config change)
Usage example
=============
>>> from pybird import PyBird
>>> pybird = PyBird(socket_file='/var/run/bird.ctl')
>>> peer_state = pybird.get_peer_status('KPN')
>>> peer_state['up']
True
>>> peer_state['import_updates_received']
4214
>>> peer_state['last_change']
datetime.datetime(2011, 6, 19, 19, 57, 0, 0)
>>> rejected = pybird.get_peer_prefixes_rejected('KPN')
>>> rejected[0]['as_path']
'23456 65592'
>>> status = pybird.get_status()
>>> status['last_reconfiguration_time']
datetime.datetime(2012, 1, 3, 12, 46, 40)
>>> status['router_id']
"192.168.0.1"
You can also call ``get_peer_status()`` without a peer name, to get an array
with all the BGP peers.
Full field list for peers
=========================
All fields that are decoded, if present:
- ``name``: Name as configured in BIRD
- ``protocol``: Currently always "BGP"
- ``last_change``: Last state change as a ``datetime.datetime`` object
- ``state``: String of the peer status, e.g. "Established" or "Passive"
- ``up``: Boolean, True if session is Established
- ``routes_imported``: Number of imported routes
- ``routes_exported``: Number of exported routes
- ``router_id``: BGP router id
And all combinations of:
``[import,export]_[updates,withdraws]_[received,rejected,filtered,ignored,accepted]``
which BIRD supports.
Full field list for routes
==========================
All fields that are decoded, if present:
- ``origin``: BGP origin, e.g. "IGP"
- ``as_path``: AS path as string
- ``next_hop``: BGP next hop
- ``local_pref``: Local pref, e.g. '100'
- ``community``: Communities in string format, e.g. '8954:220 8954:620'
And any other BGP attribute fields BIRD has found.
Full field list for BIRD status
===============================
- ``router_id``: BGP Router ID as string
- ``last_reboot``: Last BIRD restart time as datetime
- ``last_reconfiguration``: Last BIRD config change as datetime
Test suite
==========
There is a series of tests in ``tests.py``. This includes a ``MockBird``: a
mocked BIRD instance, with fixed but real responses, that listens on a real
UNIX socket. This means the tests do not only test parsing, but also socket
interaction.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pybird-1.0.6.tar.gz
(6.7 kB
view details)
File details
Details for the file pybird-1.0.6.tar.gz
.
File metadata
- Download URL: pybird-1.0.6.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8217adfff1d0816a82d5a92976d4bc2462e89cef82a95ea4e8dc42ad742d7b5 |
|
MD5 | ba21a7b2bb3a089ecd0b8a09a7546eae |
|
BLAKE2b-256 | 44226cb02ebb913ec9bae1b4b4e3432794cbec105fb3a76278bbf4e614a7e78e |