UPDATE 2015-01-28: Now taking into account recent changes to Juju 1.20+

If you’re frequently hacking on Juju source code or just creating and destroying local environments often, you may find the following snippet I came up with handy.

It’s supposed to be run as root, like sudo cleanup-juju (assuming it’s somewhere in your ‘$PATH’ and it’s executable). Just change LOCAL_ENV=localenv to whatever your local environment name is (from $HOME/.juju/environments.yaml – usually local ) and run it. Twice, if needed (when mongodb and/or jujud agents are busy), to clean up:

Any leftover gocheck or mgo test directories in /tmp (these tend to accumulate over time and waste space)

(these tend to accumulate over time and waste space) Juju run-time temporary directories (e.g. /tmp/juju-worker-deployer<random-number>/)

Mongo socket files created by mongod run from juju tests (port other than the default 27017)

Old-style upstart “auto start” configuration (in juju 1.17 and later we use user upstart jobs for that)

Any juju or juju-lxc logs

Any lxc containers created by juju for that local environment

The .jenv file of the environment itself

Kill any mongod or jujud processes related to the local environment (for this to work it’s important you pick a unique name for your environment, so that ps xa | grep <envname> does not return processes not belonging to the environment – i.e. “local” is a bit too generic, I use “localenv”)



cleanup-juju #!/bin/bash # Change this to match the name of your environment type:local in # ~/.juju/environments.yaml LOCAL_ENV=localenv [[ $UID != 0 ]] && echo "$0 must be run as root" && exit -1 pkill -9 -f $LOCAL_ENV pkill -9 -u $USER mongod find /tmp -name 'mongodb-*.sock' -not -name 'mongodb-27017.sock' -delete cleanup=( "/tmp/gocheck-*" "/tmp/test-mgo*" "/tmp/juju-*" "$HOME/.juju/${LOCAL_ENV}" "/etc/lxc/auto/*" "/var/log/juju*" "/var/lib/juju*" "/var/lib/lxc/${SUDO_USER}*" "/var/lib/lxc/juju-*" "/var/log/lxc/${SUDO_USER}*" "/var/log/upstart/juju*" "/var/log/upstart/lxc-instance-*" "${HOME}/.juju/environments/${LOCAL_ENV}.jenv" ) for f in "{cleanup[@]}"; do rm -fr $f done 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/bin/bash # Change this to match the name of your environment type:local in # ~/.juju/environments.yaml LOCAL_ENV = localenv [ [ $UID != 0 ] ] && echo "$0 must be run as root" && exit - 1 pkill - 9 - f $LOCAL_ENV pkill - 9 - u $USER mongod find / tmp - name 'mongodb-*.sock' - not - name 'mongodb-27017.sock' - delete cleanup = ( "/tmp/gocheck-*" "/tmp/test-mgo*" "/tmp/juju-*" "$HOME/.juju/${LOCAL_ENV}" "/etc/lxc/auto/*" "/var/log/juju*" "/var/lib/juju*" "/var/lib/lxc/${SUDO_USER}*" "/var/lib/lxc/juju-*" "/var/log/lxc/${SUDO_USER}*" "/var/log/upstart/juju*" "/var/log/upstart/lxc-instance-*" "${HOME}/.juju/environments/${LOCAL_ENV}.jenv" ) for f in "{cleanup[@]}" ; do rm - fr $f done