#!/usr/bin/env python3
# Copyright 2017 Canonical Ltd.  This software is licensed under the
# GNU Affero General Public License version 3 (see the file LICENSE).

import grp
import os
import sys


def check_user():
    # At present, only root should execute this.
    if os.getuid() != 0:
        raise SystemExit("This utility may only be run as root.")


def set_umask():
    # Prevent creation of world-readable (or writable, executable) files.
    os.umask(0o007)


def run():
    # Allow maas-region to work in a snap.
    os.environ.setdefault(
        "DJANGO_SETTINGS_MODULE", "maasserver.djangosettings.snappy")
    os.environ.setdefault("MAAS_PATH", os.environ.get("SNAP"))
    os.environ.setdefault("MAAS_ROOT", os.environ.get("SNAP_DATA"))
    os.environ.setdefault(
        "MAAS_REGION_CONFIG",
        os.path.join(os.environ.get("SNAP_DATA"), "regiond.conf"))
    os.environ.setdefault(
        "MAAS_DNS_CONFIG_DIR",
        os.path.join(os.environ.get("SNAP_DATA"), "bind"))
    os.environ.setdefault(
        "MAAS_PROXY_CONFIG_DIR",
        os.path.join(os.environ.get("SNAP_DATA"), "proxy"))
    os.environ.setdefault(
        "MAAS_SYSLOG_CONFIG_DIR",
        os.path.join(os.environ.get("SNAP_DATA"), "syslog"))
    os.environ.setdefault(
        "MAAS_IMAGES_KEYRING_FILEPATH",
        "/snap/maas/current/usr/share/keyrings/ubuntu-cloudimage-keyring.gpg")
    os.environ.setdefault(
        "MAAS_IMAGES_KEYRING_FILEPATH",
        os.path.join(os.environ.get("SNAP"), "etc", "maas", "drivers.yaml"))

    # Let Django do the rest.
    from django.core import management
    management.execute_from_command_line()


def main():
    check_user()
    set_umask()
    run()


if __name__ == "__main__":
    main()
