diff options
Diffstat (limited to 'cloudinit')
| -rw-r--r-- | cloudinit/helpers.py | 18 | ||||
| -rw-r--r-- | cloudinit/stages.py | 12 | ||||
| -rw-r--r-- | cloudinit/util.py | 8 | 
3 files changed, 20 insertions, 18 deletions
| diff --git a/cloudinit/helpers.py b/cloudinit/helpers.py index 1c46efde..e5eac6a7 100644 --- a/cloudinit/helpers.py +++ b/cloudinit/helpers.py @@ -292,11 +292,16 @@ class ContentHandlers(object):      def is_registered(self, content_type):          return content_type in self.registered -    def register(self, mod, initialized=False): +    def register(self, mod, initialized=False, overwrite=True):          types = set()          for t in mod.list_types(): +            if overwrite: +                types.add(t) +            else: +                if not self.is_registered(t): +                    types.add(t) +        for t in types:              self.registered[t] = mod -            types.add(t)          if initialized and mod not in self.initialized:              self.initialized.append(mod)          return types @@ -310,15 +315,6 @@ class ContentHandlers(object):      def iteritems(self):          return self.registered.iteritems() -    def register_defaults(self, defs): -        registered = set() -        for mod in defs: -            for t in mod.list_types(): -                if not self.is_registered(t): -                    self.registered[t] = mod -                    registered.add(t) -        return registered -  class Paths(object):      def __init__(self, path_cfgs, ds=None): diff --git a/cloudinit/stages.py b/cloudinit/stages.py index 3e49e8c5..07c55802 100644 --- a/cloudinit/stages.py +++ b/cloudinit/stages.py @@ -375,7 +375,9 @@ class Init(object):                      mod = importer.import_module(mod_locs[0])                      mod = handlers.fixup_handler(mod)                      types = c_handlers.register(mod) -                    LOG.debug("Added handler for %s from %s", types, fname) +                    if types: +                        LOG.debug("Added custom handler for %s from %s", +                                  types, fname)                  except Exception:                      util.logexc(LOG, "Failed to register handler from %s",                                  fname) @@ -386,10 +388,10 @@ class Init(object):          # Register any other handlers that come from the default set. This          # is done after the cloud-dir handlers so that the cdir modules can          # take over the default user-data handler content-types. -        def_handlers = self._default_userdata_handlers() -        applied_def_handlers = c_handlers.register_defaults(def_handlers) -        if applied_def_handlers: -            LOG.debug("Registered default handlers: %s", applied_def_handlers) +        for mod in self._default_userdata_handlers(): +            types = c_handlers.register(mod, overwrite=False) +            if types: +                LOG.debug("Added default handler for %s from %s", types, mod)          # Form our cloud interface          data = self.cloudify() diff --git a/cloudinit/util.py b/cloudinit/util.py index 4a74ba57..5032cc47 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -1791,15 +1791,19 @@ def log_time(logfunc, msg, func, args=None, kwargs=None, get_uptime=False):          ret = func(*args, **kwargs)      finally:          delta = time.time() - start +        udelta = None          if ustart is not None:              try:                  udelta = float(uptime()) - ustart              except ValueError: -                udelta = "N/A" +                pass          tmsg = " took %0.3f seconds" % delta          if get_uptime: -            tmsg += "(%0.2f)" % udelta +            if isinstance(udelta, (float)): +                tmsg += " (%0.2f)" % udelta +            else: +                tmsg += " (N/A)"          try:              logfunc(msg + tmsg)          except: | 
