コード例 #1
0
def check_module_version(path, version):
    descriptor = Module(
        tools.load_descriptor(os.path.join(path, 'module.yaml')), path,
        os.path.dirname(os.path.abspath(os.path.join(path, 'module.yaml'))))
    if hasattr(descriptor, 'version') and descriptor.version != version:
        raise CekitError("Requested conflicting version '%s' of module '%s'" %
                         (version, descriptor['name']))
コード例 #2
0
 def override(self, overrides_path):
     logger.info("Using overrides file from '%s'." % overrides_path)
     descriptor = Overrides(
         tools.load_descriptor(overrides_path),
         os.path.dirname(os.path.abspath(overrides_path)))
     descriptor.merge(self.image)
     return descriptor
コード例 #3
0
    def __init__(self, descriptor_path, target, builder, overrides, params):
        self._type = builder
        descriptor = tools.load_descriptor(descriptor_path)

        # if there is a local modules directory and no modules are defined
        # we will inject it for a backward compatibility
        local_mod_path = os.path.join(
            os.path.abspath(os.path.dirname(descriptor_path)), 'modules')
        if os.path.exists(local_mod_path) and 'modules' in descriptor:
            modules = descriptor.get('modules')
            if not modules.get('repositories'):
                modules['repositories'] = [{
                    'path': local_mod_path,
                    'name': 'modules'
                }]

        self.image = Image(descriptor,
                           os.path.dirname(os.path.abspath(descriptor_path)))
        self.target = target
        self._params = params
        self._fetch_repos = False

        if overrides:
            for override in overrides:
                self.image = self.override(override)

        logger.info("Initializing image descriptor...")
コード例 #4
0
ファイル: base.py プロジェクト: svkcemk/cekit
    def init(self):
        """
        Initializes the image object.
        """

        LOGGER.debug("Removing old target directory")
        shutil.rmtree(self.target, ignore_errors=True)
        os.makedirs(os.path.join(self.target, 'image'))

        # Read the main image descriptor and create an Image object from it
        descriptor = tools.load_descriptor(self._descriptor_path)

        if isinstance(descriptor, list):
            LOGGER.info(
                "Descriptor contains multiple elements, assuming multi-stage image"
            )
            LOGGER.info(
                "Found {} builder image(s) and one target image".format(
                    len(descriptor[:-1])))

            # Iterate over images defined in image descriptor and
            # create Image objects out of them
            for image_descriptor in descriptor[:-1]:
                self.builder_images.append(
                    Image(
                        image_descriptor,
                        os.path.dirname(os.path.abspath(
                            self._descriptor_path))))

            descriptor = descriptor[-1]

        self.image = Image(
            descriptor,
            os.path.dirname(os.path.abspath(self._descriptor_path)))

        # Construct list of all images (builder images + main one)
        self.images = [self.image] + self.builder_images

        for image in self.images:
            # Apply overrides to all image definitions:
            # intermediate (builder) images and target image as well
            # It is required to build the module registry
            image.apply_image_overrides(self._overrides)

        # Load definitions of modules
        # We need to load it after we apply overrides so that any changes to modules
        # will be reflected there as well
        self.build_module_registry()

        for image in self.images:
            # Process included modules
            image.apply_module_overrides(self._module_registry)
            image.process_defaults()

        # Add build labels
        self.add_build_labels()
コード例 #5
0
    def load_repository(self, repo_dir):
        for modules_dir, _, files in os.walk(repo_dir):
            if 'module.yaml' in files:

                module_descriptor_path = os.path.abspath(os.path.expanduser(
                    os.path.normcase(os.path.join(modules_dir, 'module.yaml'))))

                module = Module(tools.load_descriptor(module_descriptor_path),
                                modules_dir,
                                os.path.dirname(module_descriptor_path))
                LOGGER.debug("Adding module '{}', path: '{}'".format(module.name, module.path))
                self._module_registry.add_module(module)
コード例 #6
0
    def init(self):
        """
        Initializes the image object.
        """

        LOGGER.debug("Removing old target directory")
        shutil.rmtree(self.target, ignore_errors=True)
        os.makedirs(os.path.join(self.target, 'image'))

        # Read the main image descriptor and create an Image object from it
        descriptor = tools.load_descriptor(self._descriptor_path)

        if isinstance(descriptor, list):
            LOGGER.info(
                "Descriptor contains multiple elements, assuming multi-stage image"
            )
            LOGGER.info(
                "Found {} builder image(s) and one target image".format(
                    len(descriptor[:-1])))

            # Iterate over images defined in image descriptor and
            # create Image objects out of them
            for image_descriptor in descriptor[:-1]:
                self.builder_images.append(
                    Image(
                        image_descriptor,
                        os.path.dirname(os.path.abspath(
                            self._descriptor_path))))

            descriptor = descriptor[-1]

        self.image = Image(
            descriptor,
            os.path.dirname(os.path.abspath(self._descriptor_path)))

        # apply overrides to the image definition
        self.image.apply_image_overrides(self._overrides)

        for builder in self.builder_images:
            builder.apply_image_overrides(self._overrides)

        # add build labels
        self.add_build_labels()
        # load the definitions of the modules
        self.build_module_registry()
        # process included modules
        self.image.apply_module_overrides(self._module_registry)
        self.image.process_defaults()
コード例 #7
0
    def __init__(self, descriptor_path, target, overrides):
        self._descriptor_path = descriptor_path
        self._overrides = []
        self.target = target
        self._fetch_repos = False
        self._module_registry = ModuleRegistry()
        self.image = None

        if overrides:
            for override in overrides:
                # TODO: If the overrides is provided as text, why do we try to get path to it?
                LOGGER.debug("Loading override '%s'" % (override))
                self._overrides.append(Overrides(tools.load_descriptor(
                    override), os.path.dirname(os.path.abspath(override))))

        LOGGER.info("Initializing image descriptor...")
コード例 #8
0
def discover_modules(repo_dir):
    """Looks through the directory trees for modules descriptor.
    When module is found, it create cekit.module.Module instance
    and add this instance to the cekit.module.modules list.
    """
    for modules_dir, _, files in os.walk(repo_dir):
        if 'module.yaml' in files:
            module = Module(
                tools.load_descriptor(os.path.join(modules_dir,
                                                   'module.yaml')),
                modules_dir,
                os.path.dirname(
                    os.path.abspath(os.path.join(modules_dir, 'module.yaml'))))
            module.fetch_dependencies(repo_dir)
            logger.debug("Adding module '%s', path: '%s'" %
                         (module.name, module.path))
            modules.append(module)
コード例 #9
0
    def init(self):
        """
        Initializes the image object.
        """

        # Read the main image descriptor and create an Image object from it
        descriptor = tools.load_descriptor(self._descriptor_path)
        self.image = Image(descriptor, os.path.dirname(os.path.abspath(self._descriptor_path)))

        # apply overrides to the image definition
        self.image.apply_image_overrides(self._overrides)
        # add build labels
        self.add_build_labels()
        # load the definitions of the modules
        self.build_module_registry()
        # process included modules
        self.apply_module_overrides()
        self.image.process_defaults()
コード例 #10
0
    def __init__(self, descriptor_path, target, overrides):
        self._descriptor_path = descriptor_path
        self._overrides = []
        self.target = target
        self._fetch_repos = False
        self._module_registry = ModuleRegistry()
        self.image = None
        self.builder_images = []
        self.images = []

        if overrides:
            for override in overrides:
                LOGGER.debug("Loading override '{}'".format(override))

                override_artifact_dir = os.path.dirname(os.path.abspath(override))
                if not os.path.exists(override):
                    override_artifact_dir = os.path.dirname(os.path.abspath(descriptor_path))
                self._overrides.append(Overrides(tools.load_descriptor(
                    override), override_artifact_dir))

        LOGGER.info("Initializing image descriptor...")
コード例 #11
0
    def init(self):
        """
        Initializes the image object.
        """

        LOGGER.debug("Removing old target directory")
        shutil.rmtree(self.target, ignore_errors=True)
        os.makedirs(os.path.join(self.target, 'image'))

        # Read the main image descriptor and create an Image object from it
        descriptor = tools.load_descriptor(self._descriptor_path)
        self.image = Image(
            descriptor,
            os.path.dirname(os.path.abspath(self._descriptor_path)))

        # apply overrides to the image definition
        self.image.apply_image_overrides(self._overrides)
        # add build labels
        self.add_build_labels()
        # load the definitions of the modules
        self.build_module_registry()
        # process included modules
        self.apply_module_overrides()
        self.image.process_defaults()