Changeset 695


Ignore:
Timestamp:
Nov 11, 2007 4:30:07 AM (6 years ago)
Author:
dkg
Message:

vblade-persist: allow destruction of persistent vblades, and make mac address filtering convenient for persistent vblades.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/vblade-persist/src/vblade-persist

    r694 r695  
    1212 
    1313usage() { 
    14     echo "usage: vblade-persist setup SHELF SLOT NETIF SOURCE" 
    15     echo "       vblade-persist ls" 
     14    echo "usage: vblade-persist ls" 
    1615    echo "       vblade-persist start|stop|restart|auto|noauto SHELF SLOT" 
    1716    echo "       vblade-persist start|stop|restart|auto|noauto all" 
     17    echo "       vblade-persist setup SHELF SLOT NETIF SOURCE" 
     18    echo "       vblade-persist destroy SHELF SLOT" 
     19    echo "       vblade-persist mac SHELF SLOT" 
     20    echo "       vblade-persist mac SHELF SLOT clear" 
     21    echo "       vblade-persist mac SHELF SLOT add [MAC ...] " 
     22    echo "       vblade-persist mac SHELF SLOT del [MAC ...] " 
    1823} 
    1924 
     
    6772 
    6873setup() { 
    69     SHELF="$1" 
    70     SLOT="$2" 
    71     NETIF="$3" 
    72     SOURCE="$4" 
     74    local SHELF="$1" 
     75    local SLOT="$2" 
     76    local NETIF="$3" 
     77    local SOURCE="$4" 
    7378 
    7479    verify_shelf "$SHELF" || fatal "not a valid shelf: '$SHELF'" 
     
    7782    verify_source "$SOURCE" || fatal "not a valid source: '$SOURCE'" 
    7883 
    79     DNAME="e$SHELF.$SLOT" 
     84    local DNAME="e$SHELF.$SLOT" 
    8085     
    8186    mkdir "$VDIR/$DNAME" || fatal "Could not create directory '$VDIR/$DNAME'" 
     
    100105} 
    101106 
     107destroy() { 
     108    local SHELF="$1" 
     109    local SLOT="$2" 
     110    verify_shelf "$SHELF" || fatal "Not a valid shelf: '$SHELF'" 
     111    verify_slot "$SLOT" || fatal "Not a valid slot: '$SLOT'" 
     112 
     113    local DNAME="e$SHELF.$SLOT" 
     114    local DPATH="$VDIR/$DNAME" 
     115    verify_vblade_persist_path "$DPATH" || fatal "'`basename $DPATH`' is not a vblade-persist-managed export." 
     116     
     117    rm -f "/var/lib/service/vblade-$DNAME" 
     118    sv exit "$DPATH" 
     119    rm -rf "$DPATH" 
     120} 
     121 
    102122 
    103123list() { 
     
    111131svcommand() { 
    112132    require_sv 
    113     CMD="$1" 
    114     SVDIR="$2" 
    115     verify_vblade_persist_path "$SVDIR" || fatal "This is not a vblade-persist path" 
     133    local CMD="$1" 
     134    local SVDIR="$2" 
     135    verify_vblade_persist_path "$SVDIR" || fatal "'`basename $DPATH`' is not a vblade-persist-managed export" 
    116136    sv "$CMD" "$SVDIR" 
    117137} 
     
    119139 
    120140auto() { 
    121     verify_vblade_persist_path "$2" || fatal "This is not a vblade-persist path" 
     141    verify_vblade_persist_path "$2" || fatal "'`basename $DPATH`' is not a vblade-persist-managed export" 
    122142    if [ "$1" == "auto" ] ; then 
    123143        rm -f "$2/down" 
     
    128148 
    129149autoall() { 
    130     AUTO="$1" 
     150    local AUTO="$1" 
    131151    for dev in `ls "$VDIR"` ; do 
    132152        auto "$AUTO" "$VDIR/$dev" 
     
    136156svall() { 
    137157    require_sv 
    138     CMD="$1" 
     158    local CMD="$1" 
    139159    for dev in `ls "$VDIR"` ; do 
    140160        svcommand "$CMD" "$VDIR/$dev" 
     
    142162} 
    143163 
     164mac() { 
     165    local SHELF="$1" 
     166    shift 
     167    local SLOT="$1" 
     168    shift 
     169 
     170    verify_shelf "$SHELF" || fatal "Not a valid shelf: '$SHELF'" 
     171    verify_slot "$SLOT" || fatal "Not a valid slot: '$SLOT'" 
     172     
     173    local DPATH="$VDIR/e$SHELF.$SLOT" 
     174    verify_vblade_persist_path "$DPATH" || fatal "'`basename $DPATH`' is not a vblade-persist-managed export." 
     175 
     176    local CHANGES=no 
     177 
     178    local CMD="$1" 
     179    case "$CMD" in 
     180        clear) 
     181            if (ls "$DPATH/macs/" | grep -q ^.) ; then 
     182                rm -f "$DPATH"/macs/* 
     183                CHANGES=yes 
     184            fi 
     185            ;; 
     186        add) 
     187            shift 
     188            for mac in "$@"; do  
     189                if [ ! -e "$DPATH/macs/$mac" ] ; then 
     190                    touch "$DPATH/macs/$mac" 
     191                    CHANGES=yes 
     192                fi 
     193            done 
     194            ;; 
     195        del) 
     196            shift 
     197            for mac in "$@"; do  
     198                if [ -e "$DPATH/macs/$mac" ] ; then 
     199                    rm -f "$DPATH/macs/$mac" 
     200                    CHANGES=yes 
     201                fi 
     202            done 
     203            ;; 
     204        *) 
     205            ls -1 "$DPATH/macs/" 
     206            ;; 
     207    esac 
     208 
     209    # restart the vblade upon change 
     210    if [ "$CHANGES" == "yes" ] && [ `cat "$DPATH/supervise/stat"` == "run" ] ; then 
     211        sv restart "$DPATH" 
     212    fi 
     213} 
     214 
    144215case "$1" in 
    145216    setup) 
    146217        setup "$2" "$3" "$4" "$5" 
     218        ;; 
     219    destroy) 
     220        destroy "$2" "$3" 
    147221        ;; 
    148222    l*) 
     
    167241        fi 
    168242        ;; 
     243    mac) 
     244        shift 
     245        mac "$@" 
     246        ;; 
    169247    *) 
    170248        usage 
Note: See TracChangeset for help on using the changeset viewer.