123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #!/bin/bash
- # This script will prepare NetBox to run after the code has been upgraded to
- # its most recent release.
- #
- # Once the script completes, remember to restart the WSGI service (e.g.
- # gunicorn or uWSGI).
- # Determine which version of Python/pip to use. Default to v3 (if available)
- # but allow the user to force v2.
- PYTHON="python3"
- PIP="pip3"
- type $PYTHON >/dev/null 2>&1 && type $PIP >/dev/null 2>&1 || PYTHON="python" PIP="pip"
- while getopts ":2" opt; do
- case $opt in
- 2)
- PYTHON="python"
- PIP="pip"
- echo "Forcing Python/pip v2"
- ;;
- \?)
- echo "Invalid option: -$OPTARG" >&2
- exit
- ;;
- esac
- done
- # Optionally use sudo if not already root, and always prompt for password
- # before running the command
- PREFIX="sudo -k "
- if [ "$(whoami)" = "root" ]; then
- # When running upgrade as root, ask user to confirm if they wish to
- # continue
- read -n1 -rsp $'Running NetBox upgrade as root, press any key to continue or ^C to cancel\n'
- PREFIX=""
- fi
- # Delete stale bytecode
- COMMAND="${PREFIX}find . -name \"*.pyc\" -delete"
- echo "Cleaning up stale Python bytecode ($COMMAND)..."
- eval $COMMAND
- # Uninstall any Python packages which are no longer needed
- COMMAND="${PREFIX}${PIP} uninstall -r old_requirements.txt -y"
- echo "Removing old Python packages ($COMMAND)..."
- eval $COMMAND
- # Install any new Python packages
- COMMAND="${PREFIX}${PIP} install -r requirements.txt --upgrade"
- echo "Updating required Python packages ($COMMAND)..."
- eval $COMMAND
- # Apply any database migrations
- COMMAND="${PYTHON} netbox/manage.py migrate"
- echo "Applying database migrations ($COMMAND)..."
- eval $COMMAND
- # Collect static files
- COMMAND="${PYTHON} netbox/manage.py collectstatic --no-input"
- echo "Collecting static files ($COMMAND)..."
- eval $COMMAND
|