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

« back to all changes in this revision

Viewing changes to bin/ivle-refreshfilesystem

  • Committer: David Coles
  • Date: 2009-12-08 02:10:26 UTC
  • Revision ID: coles.david@gmail.com-20091208021026-3a27ecdzm49y39me
Configuration documentation - fixing a few references

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
"""
27
27
 
28
28
import datetime
29
 
import logging
30
29
import os
31
30
import os.path
32
31
import shutil
 
32
import sys
33
33
 
34
34
from ivle.config import Config
35
35
from ivle.database import get_store, ProjectGroup, User
36
36
import ivle.makeuser
37
 
 
38
 
 
39
 
logging.basicConfig(
40
 
    format='%(asctime)s %(levelname)s %(message)s',
41
 
    level=logging.INFO)
42
 
 
43
 
 
44
 
JUNK_DIRECTORY_SUFFIX = (
 
37
# Python 2.5's shutil.rmtree follows symlinks!
 
38
from ivle.util import safe_rmtree
 
39
 
 
40
junk_directory_suffix = (
45
41
    '-removed-%s' % datetime.datetime.now().strftime('%Y%m%d-%H%M%S'))
46
42
 
47
 
 
48
43
def get_junk_dir(path):
49
 
    return os.path.normpath(path) + JUNK_DIRECTORY_SUFFIX
50
 
 
 
44
    return os.path.normpath(path) + junk_directory_suffix
51
45
 
52
46
def junk(parent, name):
53
47
    """Move the named directory into a junk directory alongside the parent."""
58
52
        os.path.join(get_junk_dir(parent), name))
59
53
 
60
54
 
61
 
def refresh_filesystem(config, store):
62
 
    active_users = store.find(User, state=u'enabled').order_by(User.login)
63
 
 
64
 
    logging.info("Refreshing active user jails.")
65
 
    for user in active_users:
66
 
        ivle.makeuser.make_jail(user, config)
67
 
 
68
 
    present_jails = set(
69
 
        login for login in os.listdir(config['paths']['jails']['src'])
70
 
        if not (login.startswith('__') and login.endswith('__')))
71
 
 
72
 
    logging.info("Junking extra user jails...")
73
 
    for jail in present_jails - set(user.login for user in active_users):
74
 
        logging.info(' - %s' % jail)
75
 
        junk(config['paths']['jails']['src'], jail)
76
 
 
77
 
    repo_root = config['paths']['svn']['repo_path']
78
 
 
79
 
    logging.info("Creating missing Subversion user repositories.")
80
 
    present_user_repos = set(
81
 
        login for login in os.listdir(os.path.join(repo_root, 'users')))
82
 
 
83
 
    for repo in set(user.login for user in active_users) - present_user_repos:
84
 
        logging.info(' - %s' % repo)
85
 
        ivle.makeuser.make_svn_repo(
86
 
            os.path.join(repo_root, 'users', repo), throw_on_error=True)
87
 
 
88
 
    logging.info("Junking extra Subversion user repositories.")
89
 
    for repo in present_user_repos - set(user.login for user in active_users):
90
 
        logging.info(' - %s' % repo)
91
 
        junk(os.path.join(repo_root, 'users'), repo)
92
 
 
93
 
 
94
 
    logging.info("Creating missing Subversion group repositories.")
95
 
    present_group_repos = set(
96
 
        group for group in os.listdir(os.path.join(repo_root, 'groups')))
97
 
 
98
 
    active_group_identifiers = set("_".join(
99
 
        [group.project_set.offering.subject.short_name,
100
 
         group.project_set.offering.semester.year,
101
 
         group.project_set.offering.semester.semester,
102
 
         group.name]) for group in store.find(ProjectGroup))
103
 
 
104
 
    for repo in active_group_identifiers - present_group_repos:
105
 
        logging.info(' - %s' % repo)
106
 
        ivle.makeuser.make_svn_repo(
107
 
            os.path.join(repo_root, 'groups', repo), throw_on_error=True)
108
 
 
109
 
    logging.info("Junking extra Subversion user repositories.")
110
 
    for repo in present_group_repos - active_group_identifiers:
111
 
        logging.info(' - %s' % repo)
112
 
        junk(os.path.join(repo_root, 'groups'), repo)
113
 
 
114
 
 
115
 
    logging.info("Rebuild Subversion password file.")
116
 
    for user in store.find(User, state=u'enabled'):
117
 
        ivle.makeuser.make_svn_auth(
118
 
            store, user.login, config, throw_on_error=True)
119
 
    logging.info("Rebuilding Subversion user configuration.")
120
 
    ivle.makeuser.rebuild_svn_config(store, config)
121
 
    logging.info("Rebuilding Subversion group configuration.")
122
 
    ivle.makeuser.rebuild_svn_group_config(store, config)
123
 
 
124
 
 
125
 
if __name__ == '__main__':
126
 
    config = Config()
127
 
    store = get_store(config)
128
 
    refresh_filesystem(config, store)
 
55
config = Config()
 
56
store = get_store(config)
 
57
 
 
58
active_users = store.find(User, state=u'enabled').order_by(User.login)
 
59
 
 
60
print >>sys.stderr, "Refreshing active user jails..."
 
61
for user in active_users:
 
62
    ivle.makeuser.make_jail(user, config)
 
63
 
 
64
present_jails = set(
 
65
    login for login in os.listdir(config['paths']['jails']['src'])
 
66
    if not (login.startswith('__') and login.endswith('__')))
 
67
 
 
68
print >>sys.stderr, "Junking extra user jails..."
 
69
for jail in present_jails - set(user.login for user in active_users):
 
70
    print ' - %s' % jail
 
71
    junk(config['paths']['jails']['src'], jail)
 
72
 
 
73
repo_root = config['paths']['svn']['repo_path']
 
74
 
 
75
print >>sys.stderr, "Creating missing Subversion user repositories..."
 
76
present_user_repos= set(
 
77
    login for login in os.listdir(os.path.join(repo_root, 'users')))
 
78
 
 
79
for repo in set(user.login for user in active_users) - present_user_repos:
 
80
    print ' - %s' % repo
 
81
    ivle.makeuser.make_svn_repo(
 
82
        os.path.join(repo_root, 'users', repo), throw_on_error=True)
 
83
 
 
84
print >>sys.stderr, "Junking extra Subversion user repositories..."
 
85
for repo in present_user_repos - set(user.login for user in active_users):
 
86
    print ' - %s' % repo
 
87
    junk(os.path.join(repo_root, 'users'), repo)
 
88
 
 
89
 
 
90
print >>sys.stderr, "Creating missing Subversion group repositories..."
 
91
present_group_repos = set(
 
92
    group for group in os.listdir(os.path.join(repo_root, 'groups')))
 
93
 
 
94
active_group_identifiers = set("_".join(
 
95
    [group.project_set.offering.subject.short_name,
 
96
     group.project_set.offering.semester.year,
 
97
     group.project_set.offering.semester.semester,
 
98
     group.name]) for group in store.find(ProjectGroup))
 
99
 
 
100
for repo in active_group_identifiers - present_group_repos:
 
101
    print ' - %s' % repo
 
102
    ivle.makeuser.make_svn_repo(
 
103
        os.path.join(repo_root, 'groups', repo), throw_on_error=True)
 
104
 
 
105
print >>sys.stderr, "Junking extra Subversion user repositories..."
 
106
for repo in present_group_repos - active_group_identifiers:
 
107
    print ' - %s' % repo
 
108
    junk(os.path.join(repo_root, 'groups'), repo)
 
109
 
 
110
 
 
111
print >>sys.stderr, "Rebuilding Subversion user configuration..."
 
112
ivle.makeuser.rebuild_svn_config(store, config)
 
113
print >>sys.stderr, "Rebuilding Subversion group configuration..."
 
114
ivle.makeuser.rebuild_svn_group_config(store, config)
 
115
 
 
116