Blame cloudinit/config/cc_byobu.py

Packit Service a04d08
# Copyright (C) 2009-2010 Canonical Ltd.
Packit Service a04d08
# Copyright (C) 2012 Hewlett-Packard Development Company, L.P.
Packit Service a04d08
#
Packit Service a04d08
# Author: Scott Moser <scott.moser@canonical.com>
Packit Service a04d08
# Author: Juerg Haefliger <juerg.haefliger@hp.com>
Packit Service a04d08
#
Packit Service a04d08
# This file is part of cloud-init. See LICENSE file for license information.
Packit Service a04d08
Packit Service a04d08
"""
Packit Service a04d08
Byobu
Packit Service a04d08
-----
Packit Service a04d08
**Summary:** enable/disable byobu system wide and for default user
Packit Service a04d08
Packit Service a04d08
This module controls whether byobu is enabled or disabled system wide and for
Packit Service a04d08
the default system user. If byobu is to be enabled, this module will ensure it
Packit Service a04d08
is installed. Likewise, if it is to be disabled, it will be removed if
Packit Service a04d08
installed.
Packit Service a04d08
Packit Service a04d08
Valid configuration options for this module are:
Packit Service a04d08
Packit Service a04d08
  - ``enable-system``: enable byobu system wide
Packit Service a04d08
  - ``enable-user``: enable byobu for the default user
Packit Service a04d08
  - ``disable-system``: disable byobu system wide
Packit Service a04d08
  - ``disable-user``: disable byobu for the default user
Packit Service a04d08
  - ``enable``: enable byobu both system wide and for default user
Packit Service a04d08
  - ``disable``: disable byobu for all users
Packit Service a04d08
  - ``user``: alias for ``enable-user``
Packit Service a04d08
  - ``system``: alias for ``enable-system``
Packit Service a04d08
Packit Service a04d08
**Internal name:** ``cc_byobu``
Packit Service a04d08
Packit Service a04d08
**Module frequency:** per instance
Packit Service a04d08
Packit Service a04d08
**Supported distros:** ubuntu, debian
Packit Service a04d08
Packit Service a04d08
**Config keys**::
Packit Service a04d08
Packit Service a04d08
    byobu_by_default: <user/system>
Packit Service a04d08
"""
Packit Service a04d08
Packit Service a04d08
from cloudinit.distros import ug_util
Packit Service 751c4a
from cloudinit import subp
Packit Service a04d08
from cloudinit import util
Packit Service a04d08
Packit Service a04d08
distros = ['ubuntu', 'debian']
Packit Service a04d08
Packit Service a04d08
Packit Service a04d08
def handle(name, cfg, cloud, log, args):
Packit Service a04d08
    if len(args) != 0:
Packit Service a04d08
        value = args[0]
Packit Service a04d08
    else:
Packit Service a04d08
        value = util.get_cfg_option_str(cfg, "byobu_by_default", "")
Packit Service a04d08
Packit Service a04d08
    if not value:
Packit Service a04d08
        log.debug("Skipping module named %s, no 'byobu' values found", name)
Packit Service a04d08
        return
Packit Service a04d08
Packit Service a04d08
    if value == "user" or value == "system":
Packit Service a04d08
        value = "enable-%s" % value
Packit Service a04d08
Packit Service a04d08
    valid = ("enable-user", "enable-system", "enable",
Packit Service a04d08
             "disable-user", "disable-system", "disable")
Packit Service a04d08
    if value not in valid:
Packit Service a04d08
        log.warning("Unknown value %s for byobu_by_default", value)
Packit Service a04d08
Packit Service a04d08
    mod_user = value.endswith("-user")
Packit Service a04d08
    mod_sys = value.endswith("-system")
Packit Service a04d08
    if value.startswith("enable"):
Packit Service a04d08
        bl_inst = "install"
Packit Service a04d08
        dc_val = "byobu byobu/launch-by-default boolean true"
Packit Service a04d08
        mod_sys = True
Packit Service a04d08
    else:
Packit Service a04d08
        if value == "disable":
Packit Service a04d08
            mod_user = True
Packit Service a04d08
            mod_sys = True
Packit Service a04d08
        bl_inst = "uninstall"
Packit Service a04d08
        dc_val = "byobu byobu/launch-by-default boolean false"
Packit Service a04d08
Packit Service a04d08
    shcmd = ""
Packit Service a04d08
    if mod_user:
Packit Service a04d08
        (users, _groups) = ug_util.normalize_users_groups(cfg, cloud.distro)
Packit Service a04d08
        (user, _user_config) = ug_util.extract_default(users)
Packit Service a04d08
        if not user:
Packit Service a04d08
            log.warning(("No default byobu user provided, "
Packit Service a04d08
                         "can not launch %s for the default user"), bl_inst)
Packit Service a04d08
        else:
Packit Service a04d08
            shcmd += " sudo -Hu \"%s\" byobu-launcher-%s" % (user, bl_inst)
Packit Service a04d08
            shcmd += " || X=$(($X+1)); "
Packit Service a04d08
    if mod_sys:
Packit Service a04d08
        shcmd += "echo \"%s\" | debconf-set-selections" % dc_val
Packit Service a04d08
        shcmd += " && dpkg-reconfigure byobu --frontend=noninteractive"
Packit Service a04d08
        shcmd += " || X=$(($X+1)); "
Packit Service a04d08
Packit Service a04d08
    if len(shcmd):
Packit Service a04d08
        cmd = ["/bin/sh", "-c", "%s %s %s" % ("X=0;", shcmd, "exit $X")]
Packit Service a04d08
        log.debug("Setting byobu to %s", value)
Packit Service 751c4a
        subp.subp(cmd, capture=False)
Packit Service a04d08
Packit Service a04d08
# vi: ts=4 expandtab