Ejemplo n.º 1
0
def create_app(name=None, urls=None, py_version='26', app_dir='/opt/apps',
    ve_dir='/opt/ve', app_port=8000):
    """
    Creates a new application container

    :param name: Name of application
    :param urls: Application public URLs (semi-colon separated - i.e. "example.com;anotherexample.com")
    :param py_version: Version of Python to use (default: 26)
    :param app_dir: Root directory for applications (default: /opt/apps)
    :param ve_dir: Root directory for virtualenvs (default: /opt/ve)
    :param app_port: Application port

    """
    if not name or not urls:
        raise RuntimeError('You must specify an name and urls')
    with default_settings():
        # create app directory
        sudo('mkdir -p {0}'.format(os.path.join(app_dir, name)))
        # create supervisor config
        uwsgi_tmp_conf = tempfile.mktemp()
        with open(uwsgi_tmp_conf, 'w') as f:
            f.write(generate_uwsgi_config(app_name=name, app_dir=app_dir, ve_dir=ve_dir, user='******', group='www-data'))
        nginx_tmp_conf = tempfile.mktemp()
        # create nginx config
        with open(nginx_tmp_conf, 'w') as f:
            f.write(generate_nginx_config(app_name=name, urls=urls.split(';'),
                app_port=app_port))
        put(uwsgi_tmp_conf, '/etc/supervisor/conf.d/uwsgi-{0}.conf'.format(name), mode=0755, use_sudo=True)
        put(nginx_tmp_conf, '/etc/nginx/conf.d/{0}.conf'.format(name), mode=0755, use_sudo=True)
        # update supervisor
        sudo('supervisorctl update')
        # cleanup
        os.remove(uwsgi_tmp_conf)
        os.remove(nginx_tmp_conf)
Ejemplo n.º 2
0
def uptime():
    """
    Shows system uptime

    """
    with default_settings():
        run('uptime')
Ejemplo n.º 3
0
def update_check():
    """
    Shows update status

    """
    with default_settings():
        run('cat /var/lib/update-notifier/updates-available')
Ejemplo n.º 4
0
def memory():
    """
    Shows system uptime

    """
    with default_settings():
        run('free -m')
Ejemplo n.º 5
0
def update_check():
    """
    Shows update status

    """
    with default_settings():
        sudo('apt-get update > /dev/null 2>&1')
        run('if [ -e /var/lib/update-notifier/updates-available ]; then cat '\
            '/var/lib/update-notifier/updates-available; else '\
            'echo "Unavailable"; fi')
Ejemplo n.º 6
0
def upload_file(src, dest, mode=None):
    """
    Uploads a local file

    :param src: Path to the local file
    :param dest: Destination path on the host
    :param mode: Mode to set the remote file
    """
    if mode:
        mode = int(mode)
    with default_settings():
        put(src, dest, use_sudo=True, mode=mode)
Ejemplo n.º 7
0
def run_command(command):
    """
    Shows the output from the specified command

    :param command: Command to execute

    """
    with default_settings():
        try:
            run(command)
        except: # ignore python traceback output from command that returns non-zero
            pass
Ejemplo n.º 8
0
def delete_app(name=None, app_dir='/opt/apps', ve_dir='/opt/ve'):
    """
    Deletes an application

    :param name: Name of application
    :param app_dir: Root directory for applications (default: /opt/apps)
    :param ve_dir: Root directory for virtualenvs (default: /opt/ve)

    """
    if not name:
        raise RuntimeError('You must specify a name')
    with default_settings():
        # remove configs
        sudo('rm /etc/nginx/conf.d/{0}.conf'.format(name))
        sudo('rm /etc/supervisor/conf.d/uwsgi-{0}.conf'.format(name))
        # remove app
        sudo('rm -rf {0}'.format(os.path.join(app_dir, name)))
        sudo('rm -rf {0}'.format(os.path.join(ve_dir, name)))
        # bounce nginx and supervisor
        sudo('service nginx reload')
        sudo('supervisorctl reload')