diff options
| author | Xiaofeng Wang <xiaofengw@vmware.com> | 2019-09-11 18:53:01 +0000 | 
|---|---|---|
| committer | Server Team CI Bot <josh.powers+server-team-bot@canonical.com> | 2019-09-11 18:53:01 +0000 | 
| commit | 45426d8d38a7224962867ba71f390cce653e0d17 (patch) | |
| tree | 7677d63eee9788a92541c19eb593dc2a8c5052a0 /cloudinit/sources/helpers | |
| parent | fa47d527a03a00319936323f0a857fbecafceaf7 (diff) | |
| download | vyos-cloud-init-45426d8d38a7224962867ba71f390cce653e0d17.tar.gz vyos-cloud-init-45426d8d38a7224962867ba71f390cce653e0d17.zip | |
VMWware: add option into VMTools config to enable/disable custom script.
VMWware customization already has support to run a custom script during
the VM customization. Adding this option allows a VM administrator to
disable the execution of customization scripts.  If set the script
will not execute and the customization status is set to
GUESTCUST_ERROR_SCRIPT_DISABLED.
Diffstat (limited to 'cloudinit/sources/helpers')
| -rw-r--r-- | cloudinit/sources/helpers/vmware/imc/guestcust_error.py | 1 | ||||
| -rw-r--r-- | cloudinit/sources/helpers/vmware/imc/guestcust_util.py | 37 | 
2 files changed, 38 insertions, 0 deletions
| diff --git a/cloudinit/sources/helpers/vmware/imc/guestcust_error.py b/cloudinit/sources/helpers/vmware/imc/guestcust_error.py index db5a00dc..65ae7390 100644 --- a/cloudinit/sources/helpers/vmware/imc/guestcust_error.py +++ b/cloudinit/sources/helpers/vmware/imc/guestcust_error.py @@ -10,5 +10,6 @@ class GuestCustErrorEnum(object):      """Specifies different errors of Guest Customization engine"""      GUESTCUST_ERROR_SUCCESS = 0 +    GUESTCUST_ERROR_SCRIPT_DISABLED = 6  # vi: ts=4 expandtab diff --git a/cloudinit/sources/helpers/vmware/imc/guestcust_util.py b/cloudinit/sources/helpers/vmware/imc/guestcust_util.py index a590f323..eb78172e 100644 --- a/cloudinit/sources/helpers/vmware/imc/guestcust_util.py +++ b/cloudinit/sources/helpers/vmware/imc/guestcust_util.py @@ -7,6 +7,7 @@  import logging  import os +import re  import time  from cloudinit import util @@ -117,4 +118,40 @@ def enable_nics(nics):      logger.warning("Can't connect network interfaces after %d attempts",                     enableNicsWaitRetries) + +def get_tools_config(section, key, defaultVal): +    """ Return the value of [section] key from VMTools configuration. + +        @param section: String of section to read from VMTools config +        @returns: String value from key in [section] or defaultVal if +                  [section] is not present or vmware-toolbox-cmd is +                  not installed. +    """ + +    if not util.which('vmware-toolbox-cmd'): +        logger.debug( +            'vmware-toolbox-cmd not installed, returning default value') +        return defaultVal + +    retValue = defaultVal +    cmd = ['vmware-toolbox-cmd', 'config', 'get', section, key] + +    try: +        (outText, _) = util.subp(cmd) +        m = re.match(r'([a-zA-Z0-9 ]+)=(.*)', outText) +        if m: +            retValue = m.group(2).strip() +            logger.debug("Get tools config: [%s] %s = %s", +                         section, key, retValue) +        else: +            logger.debug( +                "Tools config: [%s] %s is not found, return default value: %s", +                section, key, retValue) +    except util.ProcessExecutionError as e: +        logger.error("Failed running %s[%s]", cmd, e.exit_code) +        logger.exception(e) + +    return retValue + +  # vi: ts=4 expandtab | 
