This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
misc-csiraut/eoovh/ovh_inventory.py

39 lines
1.8 KiB
Python
Executable File

#!/usr/bin/env python3
import ovh
import socket
import yaml
client = ovh.Client()
ovh_servers = {}
servers = {k: {} for k in client.get('/dedicated/server')}
for s, _ in servers.items():
name, _, addresslist = socket.gethostbyaddr(socket.gethostbyname(s))
servers[s]['name'] = name
servers[s]['ovh_name'] = s
servers[s]['address'] = addresslist[0]
servers[s]['base'] = client.get('/dedicated/server/%s' % s)
servers[s]['ips'] = client.get('/dedicated/server/%s/ips' % s)
servers[s]['options'] = client.get('/dedicated/server/%s/option' % s)
servers[s]['hardware'] = client.get('/dedicated/server/%s/specifications/hardware' % s)
servers[s]['ip'] = client.get('/dedicated/server/%s/specifications/ip' % s)
servers[s]['network'] = client.get('/dedicated/server/%s/specifications/network' % s)
servers[s]['interfaces'] = {i: {} for i in client.get('/dedicated/server/%s/networkInterfaceController' % s)}
for m, _ in servers[s]['interfaces'].items():
servers[s]['interfaces'][m]['type'] = client.get('/dedicated/server/%s/networkInterfaceController/%s' % (s, m))
if servers[s]['interfaces'][m]['type']['linkType'] == 'public':
if 'macaddress' in servers[s].keys():
print('ERROR: %s has multiple public network interfaces' % s)
servers[s]['macaddress'] = m
if servers[s]['name'] != servers[s]['base']['reverse'] or '%s.' % servers[s]['name'] != servers[s]['base']['reverse']:
print('ERROR: %s reverse DNS is wrong' % s)
if servers[s]['address'] != servers[s]['base']['ip'] or servers[s]['address'] != servers[s]['network']['routing']['ipv4']['ip']:
print('ERROR: %s ip address is wrong' % s)
# reindex according to entrouvert key
ovh_servers[servers[s]['name']] = servers[s]
print(yaml.dump(ovh_servers))