- oslo.conf <https://github.com/openstack/oslo.conf>
- oslo.log <https://github.com/openstack/oslo.log>
- Requests <http://docs.python-requests.org/en/master/>
- tabulate <https://pypi.python.org/pypi/tabulate>
$ python src/hetzner-failover.py --config-file hetzner-failover.conf list +------------------+---------+-----------------+---------------+-----------+ | active_server_ip | ip | netmask | server_number | server_ip | +==================+=========+=================+===============+===========+ | a.b.c.d | e.f.g.h | 255.255.255.255 | 123456 | a.b.c.d | | ... | ... | ... | ... | ... | | ... | ... | ... | ... | ... | +------------------+---------+-----------------+---------------+-----------+
$ python src/hetzner-failover.py --config-file hetzner-failover.conf show e.f.g.h +------------------+---------+-----------------+---------------+-----------+ | active_server_ip | ip | netmask | server_number | server_ip | +==================+=========+=================+===============+===========+ | a.b.c.d | e.f.g.h | 255.255.255.255 | 123456 | a.b.c.d | +------------------+---------+-----------------+---------------+-----------+
$ python src/hetzner-failover.py --config-file hetzner-failover.conf route e.f.g.h i.j.k.l elapsed time for failover: 28.0130250454 seconds +------------------+---------+-----------------+---------------+-----------+ | active_server_ip | ip | netmask | server_number | server_ip | +==================+=========+=================+===============+===========+ | i.j.k.l | e.f.g.h | 255.255.255.255 | 123456 | a.b.c.d | +------------------+---------+-----------------+---------------+-----------+
Hetzner robot webservice is rate limited.
- 100 queries per 1 hour window for
GET /failover
(list
command) - 100 queries per 1 hour window for
GET /failover/<failover-address>
(show
command) - 50 queries per 1 hour window for
POST /failover/<failover-address>
(route
command)
- http://wiki.hetzner.de/index.php/Failover
- http://wiki.hetzner.de/index.php/Robot_Webservice#Failover
$ virtualenv .venv $ source .venv/bin/activate $ pip install -r requirements.txt