Statistics
| Branch: | Tag: | Revision:

root / xseg / tools / ganeti-hooks / instance-migrate-pre.d / archip-openvolumes @ 8c732208

History | View | Annotate | Download (1.5 kB)

1
#!/usr/bin/env python
2

    
3
import os
4
import sys
5

    
6
from archipelago import vlmc as vlmc
7
from archipelago.common import loadrc
8

    
9
def hooks_log(msg):
10
    f = open('/var/log/ganeti/hooks.log', 'a')
11
    f.write("%s\n" % msg)
12
    f.close()
13

    
14

    
15
def archip_premigrate_disk(idx):
16
    provider = os.getenv("GANETI_INSTANCE_DISK%d_PROVIDER" % idx)
17
    vol_name = os.getenv("GANETI_INSTANCE_DISK%d_ID" % idx)
18
    template = os.getenv("GANETI_INSTANCE_DISK%d_TEMPLATE_NAME" % idx)
19

    
20
    if template != 'ext':
21
        raise Exception("Invalid disk template %s" % template)
22

    
23
    if provider != 'archipelago' and provider != 'vlmc':
24
        raise Exception("Unknown provider %s" % provider)
25

    
26
    if not vol_name:
27
        raise Exception("No volume name provided")
28

    
29
    hooks_log("Opening volume %s" % vol_name)
30
    vlmc.open_volume(name=vol_name)
31
    hooks_log("Opened volume %s" % vol_name)
32

    
33

    
34
def archip_premigrate():
35
    try:
36
        count = os.getenv("GANETI_INSTANCE_DISK_COUNT")
37
        template = os.getenv("GANETI_INSTANCE_DISK_TEMPLATE")
38
    except:
39
        return 1
40

    
41
    if template != 'ext':
42
        return 1
43

    
44
    count = int(count)
45
    hooks_log("Found %d disks" % count)
46

    
47
    for i in range(0, count):
48
        try:
49
            archip_premigrate_disk(i)
50
        except Exception as e:
51
            msg = "Failed to open volume %d: %s" % (i, e)
52
            print msg
53
            hooks_log(msg)
54
            return 1
55

    
56
    return 0
57

    
58
if __name__ == '__main__':
59
    loadrc(None)
60
    exit(archip_premigrate())
61