diff options
Diffstat (limited to 'cloudinit/sources/DataSourceOVF.py')
| -rw-r--r-- | cloudinit/sources/DataSourceOVF.py | 58 | 
1 files changed, 34 insertions, 24 deletions
diff --git a/cloudinit/sources/DataSourceOVF.py b/cloudinit/sources/DataSourceOVF.py index 72ba5aba..23996b4a 100644 --- a/cloudinit/sources/DataSourceOVF.py +++ b/cloudinit/sources/DataSourceOVF.py @@ -66,20 +66,26 @@ class DataSourceOVF(sources.DataSource):          system_type = util.read_dmi_data("system-product-name")          if system_type is None: -           LOG.debug("No system-product-name found") +            LOG.debug("No system-product-name found")          elif 'vmware' in system_type.lower(): -            LOG.debug("VMware Virtual Platform found") -            deployPkgPluginPath = search_file("/usr/lib/vmware-tools", "libdeployPkgPlugin.so") -            if deployPkgPluginPath: -                vmwareImcConfigFilePath = util.log_time(logfunc=LOG.debug, -                                  msg="waiting for configuration file", -                                  func=wait_for_imc_cfg_file, -                                  args=("/tmp", "cust.cfg")) - -            if vmwareImcConfigFilePath: -                LOG.debug("Found VMware DeployPkg Config File Path at %s" % vmwareImcConfigFilePath) +            LOG.debug("VMware Virtualization Platform found") +            if not util.get_cfg_option_bool( +                    self.sys_cfg, "disable_vmware_customization", True): +                deployPkgPluginPath = search_file("/usr/lib/vmware-tools", +                                                  "libdeployPkgPlugin.so") +                if deployPkgPluginPath: +                    vmwareImcConfigFilePath = util.log_time( +                        logfunc=LOG.debug, +                        msg="waiting for configuration file", +                        func=wait_for_imc_cfg_file, args=("/tmp", "cust.cfg")) + +                if vmwareImcConfigFilePath: +                    LOG.debug("Found VMware DeployPkg Config File at %s" % +                              vmwareImcConfigFilePath) +                else: +                    LOG.debug("Did not find VMware DeployPkg Config File Path")              else: -                LOG.debug("Didn't find VMware DeployPkg Config File Path") +                LOG.debug("Customization for VMware platform is disabled.")          if vmwareImcConfigFilePath:              try: @@ -90,7 +96,8 @@ class DataSourceOVF(sources.DataSource):                  nicConfigurator.configure()                  vmwarePlatformFound = True              except Exception as inst: -                LOG.debug("Error while parsing the Customization Config File") +                LOG.debug("Error while parsing the Customization " +                          "Config File: %s", inst)              finally:                  dirPath = os.path.dirname(vmwareImcConfigFilePath)                  shutil.rmtree(dirPath) @@ -146,7 +153,7 @@ class DataSourceOVF(sources.DataSource):      def get_public_ssh_keys(self):          if 'public-keys' not in self.metadata: -           return [] +            return []          pks = self.metadata['public-keys']          if isinstance(pks, (list)):              return pks @@ -169,7 +176,7 @@ class DataSourceOVFNet(DataSourceOVF):  def wait_for_imc_cfg_file(dirpath, filename, maxwait=180, naplen=5):      waited = 0 -     +      while waited < maxwait:          fileFullPath = search_file(dirpath, filename)          if fileFullPath: @@ -178,6 +185,7 @@ def wait_for_imc_cfg_file(dirpath, filename, maxwait=180, naplen=5):          waited += naplen      return None +  # This will return a dict with some content  #  meta-data, user-data, some config  def read_vmware_imc(config): @@ -185,13 +193,14 @@ def read_vmware_imc(config):      cfg = {}      ud = ""      if config.host_name: -       if config.domain_name: -          md['local-hostname'] = config.host_name + "." + config.domain_name -       else: -          md['local-hostname'] = config.host_name +        if config.domain_name: +            md['local-hostname'] = config.host_name + "." + config.domain_name +        else: +            md['local-hostname'] = config.host_name      return (md, ud, cfg) +  # This will return a dict with some content  #  meta-data, user-data, some config  def read_ovf_environment(contents): @@ -327,14 +336,14 @@ def get_properties(contents):      # could also check here that elem.namespaceURI ==      #   "http://schemas.dmtf.org/ovf/environment/1"      propSections = find_child(dom.documentElement, -        lambda n: n.localName == "PropertySection") +                              lambda n: n.localName == "PropertySection")      if len(propSections) == 0:          raise XmlError("No 'PropertySection's")      props = {}      propElems = find_child(propSections[0], -                            (lambda n: n.localName == "Property")) +                           (lambda n: n.localName == "Property"))      for elem in propElems:          key = elem.attributes.getNamedItemNS(envNsURI, "key").value @@ -346,7 +355,7 @@ def get_properties(contents):  def search_file(dirpath, filename):      if not dirpath or not filename: -       return None +        return None      for root, dirs, files in os.walk(dirpath):          if filename in files: @@ -354,14 +363,15 @@ def search_file(dirpath, filename):      return None +  class XmlError(Exception):      pass  # Used to match classes to dependencies  datasources = ( -  (DataSourceOVF, (sources.DEP_FILESYSTEM, )), -  (DataSourceOVFNet, (sources.DEP_FILESYSTEM, sources.DEP_NETWORK)), +    (DataSourceOVF, (sources.DEP_FILESYSTEM, )), +    (DataSourceOVFNet, (sources.DEP_FILESYSTEM, sources.DEP_NETWORK)),  )  | 
