source: trunk/packages/sipb-xen-remctl-auto/sipb-xen-remctl-auto/files/etc/remctl/sipb-xen-auto/remctl-update.sh @ 32

Last change on this file since 32 was 32, checked in by tabbott, 17 years ago

Initial revison of reasonable automatic remctl setup.

  • Property svn:executable set to *
File size: 2.0 KB
Line 
1#!/bin/sh
2DIR=/etc/remctl/sipb-xen-auto
3TEMPLATE=$DIR/conf.template
4MACHINEDIR=$DIR/machine.d
5MOIRADIR=$DIR/moira-acl
6MOIRATMP=$DIR/moira-tmp
7MACHINETMP=$DIR/machine-list-tmp
8AUTOMACHINELIST=$DIR/auto-machine-list
9AUTOMOIRALIST=$DIR/auto-moira-list
10BINDIR=$DIR/bin
11ACLDIR=$DIR/acl
12
13update_machine()
14{
15    machine=$1
16    sed "s/#MACHINENAME#/$machine/g" $TEMPLATE | \
17        sed "s,#BINDIR#,$BINDIR,g" >| $MACHINETMP
18    if ! cmp -s $MACHINEDIR/$machine $MACHINETMP; then
19        mv $MACHINETMP $MACHINEDIR/$machine
20    else
21        rm -f $MACHINETMP
22    fi
23}
24
25update_moiragroup()
26{
27    group=$1
28    # Should perhaps replace with LDAP, but fine for now.
29
30    # We should do more careful error checking so we don't take away
31    # all bits and delete the moira-acl files whenever there's an AFS
32    # outage.
33    pts membership system:$group -noauth | tail -n+2 | \
34        sed 's/\./\//' | \
35        sed 's/^  //' | \
36        sed 's/$/@ATHENA.MIT.EDU/g' >| $MOIRATMP
37    if test -s $MOIRATMP; then
38        if ! cmp -s $MOIRADIR/$group $MOIRATMP; then
39            mv $MOIRATMP $MOIRADIR/$group
40        fi
41    else
42        if test -e $MOIRADIR/$group; then
43            rm $MOIRADIR/$group
44        fi
45    fi
46    rm -f $MOIRATMP
47}
48
49case "$1" in
50    moiragroup)
51        update_moiragroup "$2"
52        ;;
53
54    all_machines)
55        # update the remctl.conf definitions
56        for machine in `cat $AUTOMACHINELIST`; do
57            update_machine $machine
58        done
59        ;;
60    all_moira)
61        # update our moira ACL lists
62        for group in `cat $AUTOMOIRALIST`; do
63            update_moiragroup $group
64        done
65        ;;
66    auto_machine_list)
67        # update the list of maintained machines
68        /bin/ls $ACLDIR >| $AUTOMACHINELIST
69        ;;
70    auto_moira_list)
71        # update the moira list-of-lists
72        # /bin/ls $MOIRADIR >| $AUTOMOIRALIST # BAD IDEA in case of outage
73
74        # This extracts the list of all moira lists we care about, and updates those.
75        grep -R moira $ACLDIR/ /etc/remctl/acl/ | perl -pe 's/.*moira-acl\/(.*)/$1/g' >| $AUTOMOIRALIST
76        ;;
77    all)
78        "$0" auto_machine_list
79        "$0" all_machines
80        "$0" auto_moira_list
81        "$0" all_moira
82        ;;
83esac
84
85exit 0
Note: See TracBrowser for help on using the repository browser.