示例#1
0
    def _create_target_dump_dir(self,
                                dest_dir: Optional[Union[Path,
                                                         str]] = None) -> Path:
        """Create destination directory, Destination must be valid directory, If not specified dump in
         path of origin object.

        Args:
            dest_dir: destination directory to dump object.

        Returns:
            Path: Destionaion directory.

        Raises:
            DumpContentObjectError: If not valid directory path - not directory or not exists.
        """
        if dest_dir:
            dest_dir = Path(dest_dir)
            if dest_dir.exists() and not Path(dest_dir).is_dir():
                raise exc.ContentDumpError(
                    self, self._path,
                    "Destiantion is not valid directory path")
            else:
                dest_dir.mkdir(parents=True, exist_ok=True)
        else:
            dest_dir = self._path.parent

        return dest_dir
示例#2
0
    def _split_yaml_4_5_0(self, dest_dir: Path) -> List[Path]:
        """Split YAMLContentUnfiedObject in destination dir.

        Args:
            dest_dir: Destination directory.

        Returns:
            List[Path]: List of new created files.

        Notes:
            1. If object contain docker_image_4_5 key with value -> should split to:
                a. <original_file>
                b. <original_file_name>_4_5.yml

        TODO:
            1. Add Exception raising in unify module.
            2. Verbosity to quiet mode option in unify module.
        """
        # Directory configuration - Integrations or Scripts
        unify_dir = ENTITY_TYPE_TO_DIR[self._content_type.value]
        # Split step
        unifier = IntegrationScriptUnifier(input=str(self.path.parent), dir_name=unify_dir, output=str(dest_dir / self.path.name),
                                           force=True)
        yaml_dict = self.to_dict()
        yaml_dict_copy = copy.deepcopy(yaml_dict)
        script_object = self.script
        created_files: List[str] = unifier.write_yaml_with_docker(yaml_dict_copy, yaml_dict, script_object).keys()
        # Validate that split succeed - there is not exception raised in unify module.
        if not created_files:
            raise exc.ContentDumpError(self, self.path, "Unable to split object")

        return [Path(path) for path in created_files]
    def _unify(self, dest_dir: Path) -> List[Path]:
        """Unify YAMLContentUnfiedObject in destination dir.

        Args:
            dest_dir: Destination directory.

        Returns:
            List[Path]: List of new created files.

        TODO:
            1. Add Exception raising in unify module.
            2. Verbosity to quiet mode option in unify module.
        """
        # Directory configuration - Integrations or Scripts
        unify_dir = SCRIPTS_DIR if self._content_type == FileType.SCRIPT else INTEGRATIONS_DIR
        # Unify step
        unifier = Unifier(input=str(self.path.parent),
                          dir_name=unify_dir,
                          output=dest_dir,
                          force=True)
        created_files: List[str] = unifier.merge_script_package_to_yml()
        # Validate that unify succeed - there is not exception raised in unify module.
        if not created_files:
            raise exc.ContentDumpError(self, self.path,
                                       "Unable to unify object")

        return [Path(path) for path in created_files]
示例#4
0
    def _unify(self, dest_dir: Path) -> List[Path]:
        """Unify YAMLContentUnfiedObject in destination dir.

        Args:
            dest_dir: Destination directory.

        Returns:
            List[Path]: List of new created files.

        TODO:
            1. Add Exception raising in unify module.
            2. Verbosity to quiet mode option in unify module.
        """
        # Directory configuration - Integrations or Scripts
        unify_dir = ENTITY_TYPE_TO_DIR[self._content_type.value]

        # Unify step
        unifier: Union[IntegrationScriptUnifier, RuleUnifier]
        if self._content_type in [FileType.SCRIPT, FileType.INTEGRATION]:
            unifier = IntegrationScriptUnifier(input=str(self.path.parent), dir_name=unify_dir, output=dest_dir, force=True,
                                               yml_modified_data=self.to_dict())

        elif self._content_type in [FileType.PARSING_RULE, FileType.MODELING_RULE]:
            unifier = RuleUnifier(input=str(self.path.parent), output=dest_dir, force=True)

        created_files: List[str] = unifier.unify()

        # Validate that unify succeed - there is not exception raised in unify module.
        if not created_files:
            raise exc.ContentDumpError(self, self.path, "Unable to unify object")

        return [Path(path) for path in created_files]