Source code for exasol.slc.api.export

from exasol_integration_test_docker_environment.lib.base.dependency_logger_base_task import (
    DependencyLoggerBaseTask,
)
from exasol_integration_test_docker_environment.lib.base.import_build_step import (
    import_build_steps,
)
from exasol_integration_test_docker_environment.lib.base.run_task import (
    generate_root_task,
    run_task,
)
from exasol_integration_test_docker_environment.lib.models.config.build_config import (
    set_build_config,
)
from exasol_integration_test_docker_environment.lib.models.config.docker_config import (
    set_docker_repository_config,
)
from exasol_integration_test_docker_environment.lib.utils.api_function_decorators import (
    cli_function,
)

from exasol.slc.api._build_name_alias import resolve_build_name
from exasol.slc.internal.tasks.export.export_containers import ExportContainers
from exasol.slc.models.compression_strategy import (
    CompressionStrategy,
    defaultCompressionStrategy,
)
from exasol.slc.models.export_container_result import ExportContainerResult


[docs] @cli_function def export( flavor_path: tuple[str, ...], release_goal: tuple[str, ...] = ("release",), export_path: str | None = None, release_name: str | None = None, force_rebuild: bool = False, force_rebuild_from: tuple[str, ...] = tuple(), force_pull: bool = False, output_directory: str = ".build_output", temporary_base_directory: str = "/var/tmp", log_build_context_content: bool = False, cache_directory: str | None = None, build_name: str | None = None, source_docker_repository_name: str = "exasol/script-language-container", source_docker_tag_prefix: str = "", source_docker_username: str | None = None, source_docker_password: str | None = None, target_docker_repository_name: str = "exasol/script-language-container", target_docker_tag_prefix: str = "", target_docker_username: str | None = None, target_docker_password: str | None = None, workers: int = 5, task_dependencies_dot_file: str | None = None, log_level: str | None = None, use_job_specific_log_file: bool = True, cleanup_docker_images: bool = False, compression_strategy: CompressionStrategy = defaultCompressionStrategy(), ) -> ExportContainerResult: """ This command exports the whole script-language-container package of the flavor, ready for the upload into the bucketfs. If the stages do not exists locally, the system will build or pull them before the exporting the packaged container. :raises api_errors.TaskFailureError: if operation is not successful. :returns: ExportContainerResult """ import_build_steps(flavor_path) build_name = resolve_build_name(build_name, release_name) # Luigi keeps the previous value if we pass None here, so normalize to # an explicit empty string to clear stale build_name state from earlier calls. build_name_for_config = build_name if build_name is not None else "" set_build_config( force_rebuild, force_rebuild_from, force_pull, log_build_context_content, output_directory, temporary_base_directory, cache_directory, build_name_for_config, ) set_docker_repository_config( source_docker_password, source_docker_repository_name, source_docker_username, source_docker_tag_prefix, "source", ) set_docker_repository_config( target_docker_password, target_docker_repository_name, target_docker_username, target_docker_tag_prefix, "target", ) def root_task_generator() -> DependencyLoggerBaseTask: return generate_root_task( task_class=ExportContainers, flavor_paths=list(flavor_path), release_goals=list(release_goal), export_path=export_path, release_name=build_name, cleanup_docker_images=cleanup_docker_images, compression_strategy=compression_strategy, ) return run_task( root_task_generator, workers=workers, task_dependencies_dot_file=task_dependencies_dot_file, log_level=log_level, use_job_specific_log_file=use_job_specific_log_file, )