| # Licensed to the Apache Software Foundation (ASF) under one or more | |
| # contributor license agreements. See the NOTICE file distributed with | |
| # this work for additional information regarding copyright ownership. | |
| # The ASF licenses this file to You under the Apache License, Version 2.0 | |
| # (the "License"); you may not use this file except in compliance with | |
| # the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| """ | |
| Configuration for CI/CD steps | |
| """ | |
| import os | |
| from dataclasses import dataclass | |
| from enum import Enum | |
| from typing import Literal | |
| from api.v1.api_pb2 import STATUS_VALIDATION_ERROR, STATUS_ERROR, \ | |
| STATUS_PREPARATION_ERROR, STATUS_COMPILE_ERROR, \ | |
| STATUS_RUN_TIMEOUT, STATUS_RUN_ERROR, SDK_JAVA, SDK_GO, SDK_PYTHON, \ | |
| SDK_SCIO, Sdk | |
| from constants import SERVER_ADDRESS_ENV_VAR_KEY, SDK_CONFIG_ENV_VAR_KEY | |
| @dataclass(frozen=True) | |
| class Config: | |
| """ | |
| General configuration for CI/CD steps | |
| """ | |
| SERVER_ADDRESS = os.getenv(SERVER_ADDRESS_ENV_VAR_KEY, "localhost:8080") | |
| EXTENSION_TO_SDK = { | |
| "java": SDK_JAVA, "go": SDK_GO, "py": SDK_PYTHON, "scala": SDK_SCIO | |
| } | |
| SUPPORTED_SDK = ( | |
| Sdk.Name(SDK_JAVA), | |
| Sdk.Name(SDK_GO), | |
| Sdk.Name(SDK_PYTHON), | |
| Sdk.Name(SDK_SCIO)) | |
| SDK_TO_EXTENSION = { | |
| SDK_JAVA: "java", SDK_GO: "go", SDK_PYTHON: "py", SDK_SCIO: "scala" | |
| } | |
| ERROR_STATUSES = [ | |
| STATUS_VALIDATION_ERROR, | |
| STATUS_ERROR, | |
| STATUS_PREPARATION_ERROR, | |
| STATUS_COMPILE_ERROR, | |
| STATUS_RUN_TIMEOUT, | |
| STATUS_RUN_ERROR | |
| ] | |
| BEAM_PLAYGROUND_TITLE = "beam-playground:\n" | |
| BEAM_PLAYGROUND = "beam-playground" | |
| PAUSE_DELAY = 1 | |
| CI_STEP_NAME = "CI" | |
| CD_STEP_NAME = "CD" | |
| CI_CD_LITERAL = Literal["CI", "CD"] | |
| URL_VCS_PREFIX = "https://github.com/apache/beam/blob/master" | |
| SDK_CONFIG = os.getenv(SDK_CONFIG_ENV_VAR_KEY, "../../playground/sdks.yaml") | |
| DEFAULT_NAMESPACE = "Playground" | |
| @dataclass(frozen=True) | |
| class TagFields: | |
| name: str = "name" | |
| description: str = "description" | |
| multifile: str = "multifile" | |
| categories: str = "categories" | |
| pipeline_options: str = "pipeline_options" | |
| default_example: str = "default_example" | |
| context_line: str = "context_line" | |
| complexity: str = "complexity" | |
| tags: str = "tags" | |
| emulators: str = "emulators" | |
| datasets: str = "datasets" | |
| url_notebook: str = "url_notebook" | |
| @dataclass(frozen=True) | |
| class PrecompiledExample: | |
| OUTPUT_EXTENSION = "output" | |
| LOG_EXTENSION = "log" | |
| GRAPH_EXTENSION = "graph" | |
| META_NAME = "meta" | |
| META_EXTENSION = "info" | |
| @dataclass(frozen=True) | |
| class PrecompiledExampleType: | |
| examples = "examples" | |
| katas = "katas" | |
| test_ends = ("test", "it") | |
| @dataclass(frozen=True) | |
| class DatastoreProps: | |
| NAMESPACE = "Playground" | |
| KEY_NAME_DELIMITER = "_" | |
| EXAMPLE_KIND = "pg_examples" | |
| SNIPPET_KIND = "pg_snippets" | |
| SCHEMA_KIND = "pg_schema_versions" | |
| PRECOMPILED_OBJECT_KIND = "pg_pc_objects" | |
| FILES_KIND = "pg_files" | |
| SDK_KIND = "pg_sdks" | |
| DATASET_KIND = "pg_datasets" | |
| @dataclass(frozen=True) | |
| class RepoProps: | |
| REPO_DATASETS_PATH = "../backend/datasets" | |
| class Origin(str, Enum): | |
| PG_EXAMPLES = 'PG_EXAMPLES' | |
| PG_USER = 'PG_USER' | |
| PG_BEAMDOC = 'PG_BEAMDOC' | |
| TB_EXAMPLES = 'TB_EXAMPLES' | |
| TB_USER = 'TB_USER' | |