| # 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' |
| |