7 from archipelago import vlmc as vlmc
8 from archipelago.common import loadrc
11 f = open('/var/log/ganeti/hooks.log', 'a')
16 def archip_premigrate_disk(idx):
17 provider = os.getenv("GANETI_INSTANCE_DISK%d_PROVIDER" % idx)
18 vol_name = os.getenv("GANETI_INSTANCE_DISK%d_ID" % idx)
19 template = os.getenv("GANETI_INSTANCE_DISK%d_TEMPLATE_NAME" % idx)
22 raise Exception("Invalid disk template %s" % template)
24 if provider != 'archipelago' and provider != 'vlmc':
25 raise Exception("Unknown provider %s" % provider)
28 raise Exception("No volume name provided")
30 hooks_log("Opening volume %s" % vol_name)
31 vlmc.open_volume(name=vol_name)
32 hooks_log("Opened volume %s" % vol_name)
35 def archip_premigrate():
37 count = os.getenv("GANETI_INSTANCE_DISK_COUNT")
38 template = os.getenv("GANETI_INSTANCE_DISK_TEMPLATE")
46 hooks_log("Found %d disks" % count)
48 for i in range(0, count):
50 archip_premigrate_disk(i)
51 except Exception as e:
52 msg = "Failed to open volume %d: %s" % (i, e)
59 if __name__ == '__main__':
63 primary = os.getenv("GANETI_INSTANCE_PRIMARY")
67 if socket.getfqdn() != primary:
70 exit(archip_premigrate())