コード例 #1
0
ファイル: test_init.py プロジェクト: zdc/vyos-cloud-init
 def test_get_hostname_subclass_support(self):
     """Validate get_hostname signature on all subclasses of DataSource."""
     # Use inspect.getfullargspec when we drop py2.6 and py2.7
     get_args = inspect.getargspec  # pylint: disable=W1505
     base_args = get_args(DataSource.get_hostname)  # pylint: disable=W1505
     # Import all DataSource subclasses so we can inspect them.
     modules = util.find_modules(os.path.dirname(os.path.dirname(__file__)))
     for _loc, name in modules.items():
         mod_locs, _ = importer.find_module(name, ['cloudinit.sources'], [])
         if mod_locs:
             importer.import_module(mod_locs[0])
     for child in DataSource.__subclasses__():
         if 'Test' in child.dsname:
             continue
         self.assertEqual(
             base_args,
             get_args(child.get_hostname),  # pylint: disable=W1505
             '%s does not implement DataSource.get_hostname params'
             % child)
         for grandchild in child.__subclasses__():
             self.assertEqual(
                 base_args,
                 get_args(grandchild.get_hostname),  # pylint: disable=W1505
                 '%s does not implement DataSource.get_hostname params'
                 % grandchild)
コード例 #2
0
 def register_handlers_in_dir(path):
     # Attempts to register any handler modules under the given path.
     if not path or not os.path.isdir(path):
         return
     potential_handlers = util.find_modules(path)
     for (fname, mod_name) in potential_handlers.items():
         try:
             mod_locs, looked_locs = importer.find_module(
                 mod_name, [""], ["list_types", "handle_part"]
             )
             if not mod_locs:
                 LOG.warning(
                     "Could not find a valid user-data handler"
                     " named %s in file %s (searched %s)",
                     mod_name,
                     fname,
                     looked_locs,
                 )
                 continue
             mod = importer.import_module(mod_locs[0])
             mod = handlers.fixup_handler(mod)
             types = c_handlers.register(mod)
             if types:
                 LOG.debug(
                     "Added custom handler for %s [%s] from %s",
                     types,
                     mod,
                     fname,
                 )
         except Exception:
             util.logexc(
                 LOG, "Failed to register handler from %s", fname
             )
コード例 #3
0
ファイル: schema.py プロジェクト: cloud-init/cloud-init
def get_schema():
    """Return jsonschema coalesced from all cc_* cloud-config module."""
    global FULL_SCHEMA
    if FULL_SCHEMA:
        return FULL_SCHEMA
    full_schema = {
        '$schema': 'http://json-schema.org/draft-04/schema#',
        'id': 'cloud-config-schema', 'allOf': []}

    configs_dir = os.path.dirname(os.path.abspath(__file__))
    potential_handlers = find_modules(configs_dir)
    for (_fname, mod_name) in potential_handlers.items():
        mod_locs, _looked_locs = importer.find_module(
            mod_name, ['cloudinit.config'], ['schema'])
        if mod_locs:
            mod = importer.import_module(mod_locs[0])
            full_schema['allOf'].append(mod.schema)
    FULL_SCHEMA = full_schema
    return full_schema
コード例 #4
0
def get_schema():
    """Return jsonschema coalesced from all cc_* cloud-config module."""
    global FULL_SCHEMA
    if FULL_SCHEMA:
        return FULL_SCHEMA
    full_schema = {
        '$schema': 'http://json-schema.org/draft-04/schema#',
        'id': 'cloud-config-schema', 'allOf': []}

    configs_dir = os.path.dirname(os.path.abspath(__file__))
    potential_handlers = find_modules(configs_dir)
    for (fname, mod_name) in potential_handlers.items():
        mod_locs, looked_locs = importer.find_module(
            mod_name, ['cloudinit.config'], ['schema'])
        if mod_locs:
            mod = importer.import_module(mod_locs[0])
            full_schema['allOf'].append(mod.schema)
    FULL_SCHEMA = full_schema
    return full_schema
コード例 #5
0
ファイル: stages.py プロジェクト: HenryTheHamster/cloud-init
 def register_handlers_in_dir(path):
     # Attempts to register any handler modules under the given path.
     if not path or not os.path.isdir(path):
         return
     potential_handlers = util.find_modules(path)
     for (fname, mod_name) in potential_handlers.items():
         try:
             mod_locs, looked_locs = importer.find_module(
                 mod_name, [''], ['list_types', 'handle_part'])
             if not mod_locs:
                 LOG.warn("Could not find a valid user-data handler"
                          " named %s in file %s (searched %s)",
                          mod_name, fname, looked_locs)
                 continue
             mod = importer.import_module(mod_locs[0])
             mod = handlers.fixup_handler(mod)
             types = c_handlers.register(mod)
             if types:
                 LOG.debug("Added custom handler for %s [%s] from %s",
                           types, mod, fname)
         except Exception:
             util.logexc(LOG, "Failed to register handler from %s",
                         fname)
コード例 #6
0
ファイル: test_init.py プロジェクト: JazzEd-EdTech/cloud-init
 def test_get_hostname_subclass_support(self):
     """Validate get_hostname signature on all subclasses of DataSource."""
     base_args = inspect.getfullargspec(DataSource.get_hostname)
     # Import all DataSource subclasses so we can inspect them.
     modules = util.find_modules(os.path.dirname(os.path.dirname(__file__)))
     for _loc, name in modules.items():
         mod_locs, _ = importer.find_module(name, ["cloudinit.sources"], [])
         if mod_locs:
             importer.import_module(mod_locs[0])
     for child in DataSource.__subclasses__():
         if "Test" in child.dsname:
             continue
         self.assertEqual(
             base_args,
             inspect.getfullargspec(child.get_hostname),
             "%s does not implement DataSource.get_hostname params" % child,
         )
         for grandchild in child.__subclasses__():
             self.assertEqual(
                 base_args,
                 inspect.getfullargspec(grandchild.get_hostname),
                 "%s does not implement DataSource.get_hostname params" %
                 grandchild,
             )
コード例 #7
0
def get_modules() -> dict:
    configs_dir = os.path.dirname(os.path.abspath(__file__))
    return find_modules(configs_dir)