~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to bin/ivle-mountallusers

  • Committer: William Grant
  • Date: 2009-04-28 05:06:00 UTC
  • Revision ID: grantw@unimelb.edu.au-20090428050600-hogd9d6wo7ksyqy8
ivle.database.get_store() now takes a configuration object.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
# Author:  William Grant
21
21
# Date:    4/7/2008
22
22
 
23
 
# Script to bind-mount jails for all users on the system.
 
23
# Script to UnionFS-mount jails for all users on the system.
24
24
# Requires root to run.
25
25
 
26
26
import sys
31
31
 
32
32
import ivle.config
33
33
import ivle.database
 
34
import ivle.conf
34
35
 
35
36
p = optparse.OptionParser()
36
37
p.add_option('--verbose', '-v', action='store_true')
49
50
                          os.path.basename(sys.argv[0])
50
51
    sys.exit(1)
51
52
 
52
 
config = ivle.config.Config()
53
 
store = ivle.database.get_store(config)
 
53
store = ivle.database.get_store(ivle.config.Config())
54
54
users = store.find(ivle.database.User).order_by(ivle.database.User.login)
55
55
 
56
 
logging.info("mass bind mount started")
 
56
logging.info("mass aufs mount started")
57
57
 
58
58
for user in users:
59
59
    login = user.login
60
60
    # This is where we'll mount to...
61
 
    destdir = os.path.join(config['paths']['jails']['mounts'], login)
 
61
    destdir = os.path.join(ivle.conf.jail_base, login)
62
62
    # ... and this is where we'll get the user bits.
63
 
    srcdir = os.path.join(config['paths']['jails']['src'], login)
 
63
    srcdir = os.path.join(ivle.conf.jail_src_base, login)
64
64
 
65
65
    try:
66
66
        if not options.unmount:
70
70
            if not os.path.exists(destdir):
71
71
                logging.debug("user %s had no mountpoint - creating" % login)
72
72
                os.mkdir(destdir)
73
 
            if os.path.exists(os.path.join(destdir, 'lib')):
74
 
                logging.info("%s's jail appears mounted. skipping." % login)
75
 
                continue
76
 
            # Mount read only root template
77
 
            if os.system('/bin/mount --bind -o ro %s %s'
78
 
                    % (config['paths']['jails']['template'], destdir)) == 0:
79
 
                logging.debug("mounted user %s's root template" % login)
80
 
            else:
81
 
                logging.debug("failed to mount %s's root template!" % login)
82
 
                continue
83
 
            # Mount homedir
84
 
            if os.system('/bin/mount --bind %s %s'
85
 
                    % (os.path.join(srcdir,'home'), os.path.join(destdir,'home'))) == 0:
86
 
                logging.debug("mounted user %s's home." % login)
87
 
            else:
88
 
                logging.error("failed to mount user %s's home!" % login)
89
 
                os.system("/bin/umount %s" % destdir)
90
 
                continue
91
 
            # Mount tmp
92
 
            if os.system('/bin/mount --bind %s %s'
93
 
                    % (os.path.join(srcdir,'tmp'), os.path.join(destdir,'tmp'))) == 0:
94
 
                logging.debug("mounted user %s's tmp." % login)
95
 
            else:
96
 
                logging.error("failed to mount user %s's tmp!" % login)
97
 
                os.system("/bin/umount %s" % os.path.join(destdir,'home'))
98
 
                os.system("/bin/umount %s" % destdir)
99
 
                continue
100
 
            logging.info("mounted user %s's jail" % login)
 
73
        
 
74
            if os.system('/bin/mount -t aufs -o dirs=%s:%s=ro none %s'
 
75
                             % (srcdir,ivle.conf.jail_system,destdir)) == 0:
 
76
                logging.info("mounted user %s's jail." % login)
 
77
            else:
 
78
                logging.error("failed to mount user %s's jail!" % login)
101
79
        else:
102
 
            os.system("/bin/umount %s" % os.path.join(destdir,'tmp'))
103
 
            os.system("/bin/umount %s" % os.path.join(destdir,'home'))
104
 
            os.system("/bin/umount %s" % destdir)
 
80
            os.system('/bin/umount ' + destdir)
105
81
            logging.info("unmounted user %s's jail." % login)
106
82
    except Exception, message:
107
83
        logging.warning(str(message))