]> git.immae.eu Git - perso/Immae/Projets/Puppet.git/blame - python/get_initial_configuration_cloud_instance.py
Add scripts for ovh cloud
[perso/Immae/Projets/Puppet.git] / python / get_initial_configuration_cloud_instance.py
CommitLineData
df0c42af
IB
1# -*- encoding: utf-8 -*-
2import json
3try:
4 from ovh import ovh
5except ImportError:
6 # In case it's installed globally
7 import ovh
8import sys
9
10infos = {}
11
12# Credentials are stored in ~/.ovh.conf
13# See ovh/README.rst
14client = ovh.Client()
15
16projects_list = client.get('/cloud/project/')
17if len(projects_list) > 1:
18 print("More than one project is not supported, taking the first one")
19project = projects_list[0]
20instances_list = client.get('/cloud/project/{}/instance'.format(project))
21instances = dict(map(lambda x: (x["id"], x), instances_list))
22if sys.argv[-1] in instances:
23 instance = instances[sys.argv[-1]]
24else:
25 print("Instance not in list:")
26 for instance in instances_list:
27 print("{}: {}".format(instance["name"], instance["id"]))
28 sys.exit(1)
29
30infos["ips"] = {}
31for ip_infos in instance["ipAddresses"]:
32 ip_infos["ipAddress"] = ip_infos.pop("ip")
33 ip_infos["gateway"] = ip_infos.pop("gatewayIp")
34
35 if ip_infos["version"] == 4:
36 infos["ips"]["v4"] = ip_infos
37 else:
38 infos["ips"]["v6"] = ip_infos
39 infos["ips"]["v6"]["mask"] = 128
40
41print(json.dumps(infos))