aboutsummaryrefslogtreecommitdiff
path: root/src/aiet/backend/config.py
blob: dd4201232294703de84f052a7f3de75d8d301e83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates.
# SPDX-License-Identifier: Apache-2.0
"""Contain definition of backend configuration."""
from pathlib import Path
from typing import Dict
from typing import List
from typing import Literal
from typing import Optional
from typing import Tuple
from typing import TypedDict
from typing import Union


class UserParamConfig(TypedDict, total=False):
    """User parameter configuration."""

    name: Optional[str]
    default_value: str
    values: List[str]
    description: str
    alias: str


UserParamsConfig = Dict[str, List[UserParamConfig]]


class ExecutionConfig(TypedDict, total=False):
    """Execution configuration."""

    commands: Dict[str, List[str]]
    user_params: UserParamsConfig
    build_dir: str
    variables: Dict[str, str]
    lock: bool


class NamedExecutionConfig(ExecutionConfig):
    """Execution configuration with name."""

    name: str


class BaseBackendConfig(ExecutionConfig, total=False):
    """Base backend configuration."""

    name: str
    description: str
    config_location: Path
    annotations: Dict[str, Union[str, List[str]]]


class ApplicationConfig(BaseBackendConfig, total=False):
    """Application configuration."""

    supported_systems: List[str]
    deploy_data: List[Tuple[str, str]]


class ExtendedApplicationConfig(BaseBackendConfig, total=False):
    """Extended application configuration."""

    supported_systems: List[NamedExecutionConfig]
    deploy_data: List[Tuple[str, str]]


class ProtocolConfig(TypedDict, total=False):
    """Protocol config."""

    protocol: Literal["local", "ssh"]


class SSHConfig(ProtocolConfig, total=False):
    """SSH configuration."""

    username: str
    password: str
    hostname: str
    port: str


class LocalProtocolConfig(ProtocolConfig, total=False):
    """Local protocol config."""


class SystemConfig(BaseBackendConfig, total=False):
    """System configuration."""

    data_transfer: Union[SSHConfig, LocalProtocolConfig]
    reporting: Dict[str, Dict]


class ToolConfig(BaseBackendConfig, total=False):
    """Tool configuration."""

    supported_systems: List[str]


class ExtendedToolConfig(BaseBackendConfig, total=False):
    """Extended tool configuration."""

    supported_systems: List[NamedExecutionConfig]


BackendItemConfig = Union[ApplicationConfig, SystemConfig, ToolConfig]
BackendConfig = Union[
    List[ExtendedApplicationConfig], List[SystemConfig], List[ToolConfig]
]