User Tools

Site Tools


haas:status:status_201208

<html><center></html>STATUS updates<html></center></html>

TODO

  • the formular plugin is giving me errors, need to figure this out (email assignment form)
  • update grade not-z scripts to handle/be aware of winter terms
  • update system page for (new)www
  • redo DSLAB tweedledee/tweedledum with squeeze rebuilt tweedledee, tweedledum on the way
    • rebuild DSLAB www, irc, auth as squeeze VMs
  • load balance/replicate www/wiki content between LAIR and DSLAB
  • adapt LAIR irc and lab46 to use self-contained kernels (how to do this?)
  • update system page for db
  • migrate nfs1/nfs2 system page to current wiki
  • update nfs1/nfs2 to squeeze
  • flake* multiseat page

URLs

Other Days

August 27th, 2012

Fall 2012

It is now the Fall 2012 semester.

mkopus effectively rewritten

The once-ugly opus content creation process is hopefully a lot cleaner now. I rewrone the central loops in mkopus, so mkopuspart is really no longer needed (at least in its current form).

1
#!/bin/bash                                                                                                                                                                                                          
#
# mkopus- create opus
#
# This script NEEDS to be run on www
#
# 20120827 - overhaul to accommodate opus changes
# 20111218 - initial implementation
#
 
##
## Bootstrap
##
source ~/bin/lib/gnops.sh
hostchk www 
cd /usr/local/etc/mth
 
##
## Configuration and Variables
##
PATH=$PATH:/home/wedge/bin
SEMESTER="`gn semester`"
OPUSPATH="/var/www/lab46web/data/pages/opus/${SEMESTER}"
YEAR="`date +%Y`"
MONTH="`date +%B`"
 
# Verify that ${OPUSPATH} exists
#
if [ ! -e "${OPUSPATH}" ]; then
    mkdir -p ${OPUSPATH}
fi
 
if [ -z "${1}" ]; then  # no part was specified on the command line
    part=1
else
    part="${1}"
fi
 
echo "Processing . . ."
 
for student in `gn list`; do
    echo -n " -> $student: "
    pt= 
 
    if [ ! -e "${OPUSPATH}/${student}" ]; then
        mkdir -p ${OPUSPATH}/${student}
    fi  
 
    for section in start title intro; do
        if [ ! -e "${OPUSPATH}/${student}/${section}.txt" ]; then 
            cat ${OPUSPATH}/${section}.txt | sed "s/SEMESTER/${SEMESTER}/g" | sed "s/USER/${student}/g" | sed "s/YEAR/${YEAR}/g" | sed "s/MONTH/${MONTH}/g" > ${OPUSPATH}/${student}/${section}.txt
            echo -n "${section} "
        fi
            done
 
    if [ ! -e "${OPUSPATH}/${student}/part${part}.txt" ]; then 
        cp ${OPUSPATH}/part.txt ${OPUSPATH}/${student}/part${part}.txt
        echo -n "part${part}( "
        pt=1
    fi
 
    for course in `gn deref ${student}`; do
        if [ ! -e "${OPUSPATH}/${student}/${course}part${part}.txt" ]; then 
            cat ${OPUSPATH}/keyword0.txt | sed "s/DESIG/${course}/g" | sed "s/NUM/${part}/g" >> ${OPUSPATH}/${student}/part${part}.txt
            cat ${OPUSPATH}/keyword1.txt | sed "s/DESIG/${course}/g" | sed "s/NUM/${part}/g" >> ${OPUSPATH}/${student}/${course}part${part}.txt
            echo -n "${course} "
        fi
    done
 
    if [ ! -z "${pt}" ]; then
        echo -n ") "
    fi
 
    if [ "`cat ${OPUSPATH}/${student}/part${part}.txt | grep "Experiment ${part}" | wc -l`" -eq 0 ]; then
        cat ${OPUSPATH}/experiment.txt | sed "s/NUM/${part}/g" >> ${OPUSPATH}/${student}/part${part}.txt
        echo -n "experiment "
    fi
    echo "."
done
echo "PROCESSING COMPLETE."
 
echo
echo "ESTABLISHING PROPER ACCESS CONTROL... "
sudo chmod -R u=rwX,g=rwX,o= ${OPUSPATH}
sudo chown -R wedge:www-data ${OPUSPATH}
echo "OPUS CREATION TASK COMPLETE"
 
exit 0

Student Opus data has been created.

Data Directories Created

I don't think I've written a script for this yet, but I went and created the student data directories:

for student in `gn list`; do
    mkdir ${student}
    sudo chgrp ${student} ${student}
    sudo chmod 770 ${student}
    sudo chmod +t ${student}
done

The parent “data” directory is chmod 710 with sticky bit applied, AND chgrp to lab46.

The previous data was renamed to data.summer2012.

It would be nice to make increased use out of this some semester (perhaps this one).

So long as I'm in this motivated mood to work on stuff…

desig subset bleedover bug

The bug I noticed the other day, causing students only in datacomm to show up in data has been identified and fixed! Problem was in gn's list function:

The problem was the wildcard “${FSTR}*”, as presented here (lines 348, 350, and 354):

348     if [ "`cat ${FSTR}* 2> /dev/null | wc -l`" -gt 0 ]; then
349         if [ "$1" = "classes" ]; then
350             for item in `ls -1 ${FSTR}* | cut -d'.' -f3`; do
351                 roster="$roster $item"
352             done
353         else
354             for item in `cat ${FSTR}* | grep '^[a-z]' | sort -u`; do
355                 roster="$roster $item"
356             done
357         fi

It was fixed by making it more specific- note the . inserted between ${FSTR} and the *:

348     if [ "`cat ${FSTR}.* 2> /dev/null | wc -l`" -gt 0 ]; then
349         if [ "$1" = "classes" ]; then
350             for item in `ls -1 ${FSTR}.* | cut -d'.' -f3`; do
351                 roster="$roster $item"
352             done
353         else
354             for item in `cat ${FSTR}.* | grep '^[a-z]' | sort -u`; do
355                 roster="$roster $item"
356             done
357         fi

Nice to have that potentially aggravating bug out of the way.

wiki ACLs updated

It would be nice if students could actually edit their Opus!

I went and updated the wiki ACLs for the current semester, including class notes pages.

Should be good to go.

Also disabled access to summer2012 content.

further mkopus tweaks

Some minor tweaks were still needed to correct some presentation bugs once rendered by the wiki.

Also: I implemented a fix for the post-entry 4 “missing” edit button. So the big known bugs from previous semesters are now resolved! (edit button and experiment numbering).

Yay.

August 26th, 2012

semester logic

I made some further tweaks to my semester detection logic- by adding on override. OVERSEMESTER, to be specific.

If OVERSEMESTER (a variable) is not NULL, the current semester will be set to the value in OVERSEMESTER (and then OVERSEMESTER is NULLED out).

For example:

lab46:~$ gn semester
summer2012
lab46:~$ OVERSEMESTER=fall2012 gn semester
fall2012
lab46:~$ gn semester
summer2012
lab46:~$ 

This way I can check things before the next semester logically starts (and no longer do I need to edit the script and hardcode values for testing, potentially mucking up other scripts running).

studentlistcreate

My studentlistcreate script now auto-generates the class lists, vs. having a hardcoded list that needs to be changed should the classes I teach change (case in point- datacomm).

August 25th, 2012

newuserbatch errors

Holy typos batman! Back when I added in the logic for Mercurial repo creation, I really must have just copied and pasted, resulting in incompatible variable names, an unmatched set of quotes, and all around non-workingness.

I split off the resource creation logic into a new and separate script- assetcreate, mainly so I could better debug where problems were. In the process I made a few streamlining improvements and now everything is working (with no apparent side effects).

On a side note, user creation took inordinately long- I suspect it was due to a lack of entropy for /dev/urandom.

ldaptool script logic error

There's a regex somewhere that is far too loose, either in that script directly or in one of the sub-scripts it calls.

For course designations “data” and “datacomm”, students who were in “datacomm” but not “data” showed up in the “data” LDAP group.

UPDATE (Aug 27th, 2012): This bug has been found and fixed! Problem was in the list function of gn

August 24th, 2012

UPS batteries upgraded

At the start of summer, a fresh set of RBC23 Tempest UPS batteries were purchased to replace those currently in use in BOTH the LAIReast and LAIRwest racks. We finally got around to replacing them today, eventually becoming minor experts (of course we'll soon forget the intrinsic knowledge and ultimately rediscover it the next time).

Some important things of note:

  • When Jacob says something matter-of-factly, odds are you should JUST go with what he says. He was right more times than not.
  • There is no need to unplug everything– the UPS unit slides out, and the batteries are in an equally modular subunit.
  • The LAIRwest UPS unit has weird rackears, making insertion tricky– gotta be done JUST RIGHT.

LAIRpods cleaned up and tested

The 4 tables were spruced up and the summer's assorted project bits removed elsewhere, booted up and tested. Replaced all the USB→PS2 splitters, so we're now running all USB keyboards (hopefully will help with the occasionally reported but always annoying input errors).

The occasional persistent lack of login screen still exists. No idea why… generally a straight reboot tends to fix the problem.

All systems rebooted

Following the UPS servicing, all machines were taken down for their pre-semester reboot.

No anomalous issues were experienced, and hopefully the fresh start will mitigate any usage issues during the semester.

cobras UPS back in action

Using some of the “used” UPS batteries from the LAIReast rack, the other small UPS was put back in service by cobras, once again protecting cobras and koolaid (and the corresponding 5-port TrendNET switch) from losing power during any of our occasional power flickers.

August 19th, 2012

gn semester logic updated

I deployed some new logic for semester detection, hopefully more robust AND accurate.

Regex and logic to more accurately determine the start and end of given semesters, and compare the current day to those in making decisions.

Also uses those same comparisons to make identifications of summer and winter semesters.

Plus, should the web fetch fail, my original original hard month logic is now waiting at the end in an if statement, so it will happily run should the snazzier logic fail (there should ALWAYS be a semester reported now).

One improvement I could look into is actually storing this data, and creating some sort of “update local storage” script… so I could do without the constant web fetches.

The data retrieved can now be used for additional purposes as well, such as break detection– so incorporating some sort of local data store would be a good idea.

<html><center></html>

<html></center></html>

haas/status/status_201208.txt · Last modified: 2012/09/01 01:12 by 127.0.0.1