]>
git.immae.eu Git - perso/Immae/Projets/Puppet.git/blob - python/reinstall_cloud_instance.py
1 # -*- encoding: utf-8 -*-
6 # In case it's installed globally
10 # Credentials are stored in ~/.ovh.conf
14 projects_list
= client
.get('/cloud/project/')
15 if len(projects_list
) > 1:
16 print("More than one project is not supported, taking the first one")
17 project
= projects_list
[0]
18 instances_list
= client
.get('/cloud/project/{}/instance'.format(project
))
19 instances
= dict(map(lambda x
: (x
["id"], x
), instances_list
))
20 if sys
.argv
[-1] in instances
:
21 instance
= instances
[sys
.argv
[-1]]
23 print("Instance not in list:")
24 for instance
in instances_list
:
25 print("{}: {}".format(instance
["name"], instance
["id"]))
28 current_image
= instance
["imageId"]
29 available_images
= client
.get('/cloud/project/{}/image'.format(project
),
31 region
=instance
["region"])
32 available_images_ids
= list(map(lambda x
: x
["id"], available_images
))
34 def print_images(available_images
):
35 for image
in available_images
:
36 print("{}: {}".format(image
["name"], image
["id"]))
38 def reinstall(image_id
):
39 return client
.post('/cloud/project/{}/instance/{}/reinstall'.format(project
, instance
["id"]),
42 if "--get-state" in sys
.argv
:
43 print(instance
["status"])
44 elif "--use-current" in sys
.argv
:
45 if current_image
in available_images_ids
:
46 print("Current image still available, using it")
47 print(reinstall(current_image
))
49 print("Current image no more available. Chose among:")
50 print_images(available_images
)
51 elif sys
.argv
[-1] in available_templates
:
52 print("Chosen image available, using it")
53 print(reinstall(current_image
))
55 print("Chosen image not available. Chose among:")
56 print_images(available_images
)