summaryrefslogtreecommitdiffstats
path: root/python_pgms/gsyncd_mtab_race/mtab_gsync.py
blob: c2fe7e684a68c528d91e5865d75de01559617e6e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env python

import os, sys, tempfile, select, time

def connect(vol, sleeptime=None):
    d = tempfile.mkdtemp()
    try:
        argv = ["glusterfs", "-LDEBUG", "-l/tmp/gl0.log", '-s', "localhost", 
                 '--volfile-id', vol, '--client-pid=-1', d]
        if os.spawnvp(os.P_WAIT, argv[0], argv):
            raise RuntimeError("command failed: " + " ".join(argv))
        print >> sys.stderr, 'auxiliary glusterfs mount in place'
        os.chdir(d)
        argv = ['umount', '-l', d]
        if sleeptime != None:
        	time.sleep(sleeptime)
        if os.spawnvp(os.P_WAIT, argv[0], argv):
            raise RuntimeError("command failed: " + " ".join(argv))
    finally:
        try:
            os.rmdir(d)
        except:
            print >> sys.stderr, 'stale mount possibly left behind on ' + d
    print >> sys.stderr, 'auxiliary glusterfs mount prepared'

args = sys.argv[1:2]
if len(sys.argv) > 2:
    args.append(float(sys.argv[2])) 
connect(*args)