404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@13.59.62.63: ~ $
# Copyright (C) 2012 Canonical Ltd.
# Copyright (C) 2012 Hewlett-Packard Development Company, L.P.
# Copyright (C) 2012 Yahoo! Inc.
#
# Author: Scott Moser <scott.moser@canonical.com>
# Author: Juerg Haefliger <juerg.haefliger@hp.com>
# Author: Joshua Harlow <harlowja@yahoo-inc.com>
#
# This file is part of cloud-init. See LICENSE file for license information.

import importlib
from types import ModuleType
from typing import Optional, Sequence

from cloudinit import util


def import_module(module_name: str) -> ModuleType:
    return importlib.import_module(module_name)


def _count_attrs(
    module_name: str, attrs: Optional[Sequence[str]] = None
) -> int:
    found_attrs = 0
    if not attrs:
        return found_attrs
    mod = importlib.import_module(module_name)
    for attr in attrs:
        if hasattr(mod, attr):
            found_attrs += 1
    return found_attrs


def match_case_insensitive_module_name(mod_name: str) -> Optional[str]:
    """Check the importable datasource modules for a case-insensitive match."""

    # nocloud-net is the only datasource that requires matching on a name that
    # does not match its python module - canonicalize it here
    if "nocloud-net" == mod_name.lower():
        mod_name = mod_name[:-4]
    if not mod_name.startswith("DataSource"):
        mod_name = f"DataSource{mod_name}"
    modules = {}
    spec = importlib.util.find_spec("cloudinit.sources")
    if spec and spec.submodule_search_locations:
        for dir in spec.submodule_search_locations:
            modules.update(util.get_modules_from_dir(dir))
        for module in modules.values():
            if module.lower() == mod_name.lower():
                return module
    return mod_name


def find_module(
    base_name: str,
    search_paths: Sequence[str],
    required_attrs: Optional[Sequence[str]] = None,
) -> tuple:
    """Finds specified modules"""
    if not required_attrs:
        required_attrs = []
    lookup_paths = []
    found_paths = []

    for path in search_paths:
        # Add base name to search paths. Filter out empty paths.
        full_path = ".".join(filter(None, [path, base_name]))
        lookup_paths.append(full_path)
        if not importlib.util.find_spec(full_path):
            continue
        # Check that required_attrs are all present within the module.
        if _count_attrs(full_path, required_attrs) == len(required_attrs):
            found_paths.append(full_path)
    return (found_paths, lookup_paths)

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
analyze Folder 0755
cmd Folder 0755
config Folder 0755
distros Folder 0755
filters Folder 0755
handlers Folder 0755
mergers Folder 0755
net Folder 0755
reporting Folder 0755
sources Folder 0755
__init__.py File 0 B 0644
apport.py File 7.05 KB 0644
atomic_helper.py File 2.45 KB 0644
cloud.py File 3.22 KB 0644
dmi.py File 6.77 KB 0644
event.py File 2 KB 0644
features.py File 3.38 KB 0644
gpg.py File 4.28 KB 0644
helpers.py File 16.41 KB 0644
importer.py File 2.43 KB 0644
log.py File 5.47 KB 0644
netinfo.py File 22.97 KB 0644
persistence.py File 2.52 KB 0644
registry.py File 1022 B 0644
safeyaml.py File 10.28 KB 0644
settings.py File 2.02 KB 0644
signal_handler.py File 1.74 KB 0644
simpletable.py File 1.93 KB 0644
ssh_util.py File 22.28 KB 0644
stages.py File 38.88 KB 0644
subp.py File 13.23 KB 0644
temp_utils.py File 3.15 KB 0644
templater.py File 5.95 KB 0644
type_utils.py File 703 B 0644
url_helper.py File 27.32 KB 0644
user_data.py File 14.43 KB 0644
util.py File 96.43 KB 0644
version.py File 565 B 0644
warnings.py File 3.76 KB 0644