argus-alm 0.12.9__py3-none-any.whl → 0.13.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- argus/client/base.py +1 -1
- argus/client/driver_matrix_tests/cli.py +2 -2
- argus/client/driver_matrix_tests/client.py +1 -1
- argus/client/generic/cli.py +2 -2
- argus/client/generic_result.py +3 -2
- argus/client/sct/client.py +3 -3
- argus/client/sirenada/client.py +1 -1
- {argus_alm-0.12.9.dist-info → argus_alm-0.13.0.dist-info}/METADATA +2 -4
- argus_alm-0.13.0.dist-info/RECORD +20 -0
- argus/backend/.gitkeep +0 -0
- argus/backend/cli.py +0 -41
- argus/backend/controller/__init__.py +0 -0
- argus/backend/controller/admin.py +0 -20
- argus/backend/controller/admin_api.py +0 -354
- argus/backend/controller/api.py +0 -529
- argus/backend/controller/auth.py +0 -67
- argus/backend/controller/client_api.py +0 -108
- argus/backend/controller/main.py +0 -274
- argus/backend/controller/notification_api.py +0 -72
- argus/backend/controller/notifications.py +0 -13
- argus/backend/controller/team.py +0 -126
- argus/backend/controller/team_ui.py +0 -18
- argus/backend/controller/testrun_api.py +0 -482
- argus/backend/controller/view_api.py +0 -162
- argus/backend/db.py +0 -100
- argus/backend/error_handlers.py +0 -21
- argus/backend/events/event_processors.py +0 -34
- argus/backend/models/__init__.py +0 -0
- argus/backend/models/result.py +0 -138
- argus/backend/models/web.py +0 -389
- argus/backend/plugins/__init__.py +0 -0
- argus/backend/plugins/core.py +0 -225
- argus/backend/plugins/driver_matrix_tests/controller.py +0 -63
- argus/backend/plugins/driver_matrix_tests/model.py +0 -421
- argus/backend/plugins/driver_matrix_tests/plugin.py +0 -22
- argus/backend/plugins/driver_matrix_tests/raw_types.py +0 -62
- argus/backend/plugins/driver_matrix_tests/service.py +0 -60
- argus/backend/plugins/driver_matrix_tests/udt.py +0 -42
- argus/backend/plugins/generic/model.py +0 -79
- argus/backend/plugins/generic/plugin.py +0 -16
- argus/backend/plugins/generic/types.py +0 -13
- argus/backend/plugins/loader.py +0 -40
- argus/backend/plugins/sct/controller.py +0 -185
- argus/backend/plugins/sct/plugin.py +0 -38
- argus/backend/plugins/sct/resource_setup.py +0 -178
- argus/backend/plugins/sct/service.py +0 -491
- argus/backend/plugins/sct/testrun.py +0 -272
- argus/backend/plugins/sct/udt.py +0 -101
- argus/backend/plugins/sirenada/model.py +0 -113
- argus/backend/plugins/sirenada/plugin.py +0 -17
- argus/backend/service/admin.py +0 -27
- argus/backend/service/argus_service.py +0 -688
- argus/backend/service/build_system_monitor.py +0 -188
- argus/backend/service/client_service.py +0 -122
- argus/backend/service/event_service.py +0 -18
- argus/backend/service/jenkins_service.py +0 -240
- argus/backend/service/notification_manager.py +0 -150
- argus/backend/service/release_manager.py +0 -230
- argus/backend/service/results_service.py +0 -317
- argus/backend/service/stats.py +0 -540
- argus/backend/service/team_manager_service.py +0 -83
- argus/backend/service/testrun.py +0 -559
- argus/backend/service/user.py +0 -307
- argus/backend/service/views.py +0 -258
- argus/backend/template_filters.py +0 -27
- argus/backend/tests/__init__.py +0 -0
- argus/backend/tests/argus_web.test.yaml +0 -39
- argus/backend/tests/conftest.py +0 -44
- argus/backend/tests/results_service/__init__.py +0 -0
- argus/backend/tests/results_service/test_best_results.py +0 -70
- argus/backend/util/common.py +0 -65
- argus/backend/util/config.py +0 -38
- argus/backend/util/encoders.py +0 -41
- argus/backend/util/logsetup.py +0 -81
- argus/backend/util/module_loaders.py +0 -30
- argus/backend/util/send_email.py +0 -91
- argus/client/generic_result_old.py +0 -143
- argus/db/.gitkeep +0 -0
- argus/db/argus_json.py +0 -14
- argus/db/cloud_types.py +0 -125
- argus/db/config.py +0 -135
- argus/db/db_types.py +0 -139
- argus/db/interface.py +0 -370
- argus/db/testrun.py +0 -740
- argus/db/utils.py +0 -15
- argus_alm-0.12.9.dist-info/RECORD +0 -96
- /argus/{backend → common}/__init__.py +0 -0
- /argus/{backend/util → common}/enums.py +0 -0
- /argus/{backend/plugins/sct/types.py → common/sct_types.py} +0 -0
- /argus/{backend/plugins/sirenada/types.py → common/sirenada_types.py} +0 -0
- {argus_alm-0.12.9.dist-info → argus_alm-0.13.0.dist-info}/LICENSE +0 -0
- {argus_alm-0.12.9.dist-info → argus_alm-0.13.0.dist-info}/WHEEL +0 -0
- {argus_alm-0.12.9.dist-info → argus_alm-0.13.0.dist-info}/entry_points.txt +0 -0
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
from flask import Blueprint
|
|
2
|
-
|
|
3
|
-
from argus.backend.plugins.core import PluginInfoBase, PluginModelBase
|
|
4
|
-
from argus.backend.plugins.generic.model import GenericRun
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class PluginInfo(PluginInfoBase):
|
|
8
|
-
# pylint: disable=too-few-public-methods
|
|
9
|
-
name: str = "generic"
|
|
10
|
-
model: PluginModelBase = GenericRun
|
|
11
|
-
controller: Blueprint = None
|
|
12
|
-
all_models = [
|
|
13
|
-
GenericRun
|
|
14
|
-
]
|
|
15
|
-
all_types = [
|
|
16
|
-
]
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
from typing import TypedDict
|
|
2
|
-
|
|
3
|
-
class GenericRunSubmitRequest(TypedDict):
|
|
4
|
-
build_id: str
|
|
5
|
-
build_url: str
|
|
6
|
-
run_id: str
|
|
7
|
-
started_by: str
|
|
8
|
-
scylla_version: str | None
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class GenericRunFinishRequest(TypedDict):
|
|
12
|
-
status: str
|
|
13
|
-
scylla_version: str | None
|
argus/backend/plugins/loader.py
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
from pathlib import Path
|
|
2
|
-
import typing
|
|
3
|
-
from argus.backend.plugins.core import PluginInfoBase
|
|
4
|
-
from argus.backend.plugins.core import PluginModelBase
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class PluginModule(typing.Protocol):
|
|
8
|
-
# pylint: disable=too-few-public-methods
|
|
9
|
-
PluginInfo: PluginInfoBase
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def plugin_loader() -> dict[str, PluginInfoBase]:
|
|
13
|
-
loader_path = Path(__file__).parent
|
|
14
|
-
plugin_dirs = [p for p in loader_path.glob("*") if p.is_dir()]
|
|
15
|
-
modules = {}
|
|
16
|
-
parent_module = ".".join(__name__.split(".")[:-1])
|
|
17
|
-
for directory in plugin_dirs:
|
|
18
|
-
if (plugin_path := directory / "plugin.py").exists():
|
|
19
|
-
rel_path = str(plugin_path.relative_to(loader_path))
|
|
20
|
-
module_path = rel_path.replace("/", ".").replace(".py", "")
|
|
21
|
-
module: PluginModule = __import__(
|
|
22
|
-
f"{parent_module}.{module_path}",
|
|
23
|
-
globals=globals(),
|
|
24
|
-
fromlist=("PluginInfo",)
|
|
25
|
-
)
|
|
26
|
-
plugin = module.PluginInfo
|
|
27
|
-
modules[plugin.name] = plugin
|
|
28
|
-
|
|
29
|
-
return modules
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
AVAILABLE_PLUGINS = plugin_loader()
|
|
33
|
-
print(AVAILABLE_PLUGINS)
|
|
34
|
-
|
|
35
|
-
def all_plugin_models(include_all=False) -> list[PluginModelBase]:
|
|
36
|
-
return [model for plugin in AVAILABLE_PLUGINS.values() for model in plugin.all_models if issubclass(model, PluginModelBase) or include_all]
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def all_plugin_types():
|
|
40
|
-
return [user_type for plugin in AVAILABLE_PLUGINS.values() for user_type in plugin.all_types]
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
from flask import Blueprint, request
|
|
2
|
-
|
|
3
|
-
from argus.backend.error_handlers import handle_api_exception
|
|
4
|
-
from argus.backend.service.user import api_login_required
|
|
5
|
-
from argus.backend.plugins.sct.service import SCTService
|
|
6
|
-
from argus.backend.util.common import get_payload
|
|
7
|
-
|
|
8
|
-
bp = Blueprint("sct_api", __name__, url_prefix="/sct")
|
|
9
|
-
bp.register_error_handler(Exception, handle_api_exception)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@bp.route("/<string:run_id>/packages/submit", methods=["POST"])
|
|
13
|
-
@api_login_required
|
|
14
|
-
def sct_submit_packages(run_id: str):
|
|
15
|
-
payload = get_payload(request)
|
|
16
|
-
result = SCTService.submit_packages(run_id=run_id, packages=payload["packages"])
|
|
17
|
-
return {
|
|
18
|
-
"status": "ok",
|
|
19
|
-
"response": result
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
@bp.route("/<string:run_id>/screenshots/submit", methods=["POST"])
|
|
24
|
-
@api_login_required
|
|
25
|
-
def sct_submit_screenshots(run_id: str):
|
|
26
|
-
payload = get_payload(request)
|
|
27
|
-
result = SCTService.submit_screenshots(run_id=run_id, screenshot_links=payload["screenshot_links"])
|
|
28
|
-
return {
|
|
29
|
-
"status": "ok",
|
|
30
|
-
"response": result
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
@bp.route("/<string:run_id>/sct_runner/set", methods=["POST"])
|
|
35
|
-
@api_login_required
|
|
36
|
-
def sct_set_runner(run_id: str):
|
|
37
|
-
payload = get_payload(request)
|
|
38
|
-
result = SCTService.set_sct_runner(
|
|
39
|
-
run_id=run_id,
|
|
40
|
-
public_ip=payload["public_ip"],
|
|
41
|
-
private_ip=payload["private_ip"],
|
|
42
|
-
region=payload["region"],
|
|
43
|
-
backend=payload["backend"]
|
|
44
|
-
)
|
|
45
|
-
return {
|
|
46
|
-
"status": "ok",
|
|
47
|
-
"response": result
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
@bp.route("/<string:run_id>/resource/create", methods=["POST"])
|
|
52
|
-
@api_login_required
|
|
53
|
-
def sct_resource_create(run_id: str):
|
|
54
|
-
payload = get_payload(request)
|
|
55
|
-
result = SCTService.create_resource(run_id=run_id, resource_details=payload["resource"])
|
|
56
|
-
return {
|
|
57
|
-
"status": "ok",
|
|
58
|
-
"response": result
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
@bp.route("/<string:run_id>/resource/<string:resource_name>/terminate", methods=["POST"])
|
|
63
|
-
@api_login_required
|
|
64
|
-
def sct_resource_terminate(run_id: str, resource_name: str):
|
|
65
|
-
payload = get_payload(request)
|
|
66
|
-
result = SCTService.terminate_resource(run_id=run_id, resource_name=resource_name, reason=payload["reason"])
|
|
67
|
-
return {
|
|
68
|
-
"status": "ok",
|
|
69
|
-
"response": result
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
@bp.route("/<string:run_id>/resource/<string:resource_name>/shards", methods=["POST"])
|
|
74
|
-
@api_login_required
|
|
75
|
-
def sct_resource_update_shards(run_id: str, resource_name: str):
|
|
76
|
-
payload = get_payload(request)
|
|
77
|
-
result = SCTService.update_resource_shards(run_id=run_id, resource_name=resource_name, new_shards=payload["shards"])
|
|
78
|
-
return {
|
|
79
|
-
"status": "ok",
|
|
80
|
-
"response": result
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
@bp.route("/<string:run_id>/resource/<string:resource_name>/update", methods=["POST"])
|
|
85
|
-
@api_login_required
|
|
86
|
-
def sct_resource_update(run_id: str, resource_name: str):
|
|
87
|
-
payload = get_payload(request)
|
|
88
|
-
result = SCTService.update_resource(run_id=run_id, resource_name=resource_name, update_data=payload["update_data"])
|
|
89
|
-
return {
|
|
90
|
-
"status": "ok",
|
|
91
|
-
"response": result
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
@bp.route("/<string:run_id>/nemesis/submit", methods=["POST"])
|
|
96
|
-
@api_login_required
|
|
97
|
-
def sct_nemesis_submit(run_id: str):
|
|
98
|
-
payload = get_payload(request)
|
|
99
|
-
result = SCTService.submit_nemesis(run_id=run_id, nemesis_details=payload["nemesis"])
|
|
100
|
-
return {
|
|
101
|
-
"status": "ok",
|
|
102
|
-
"response": result
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
@bp.route("/<string:run_id>/nemesis/finalize", methods=["POST"])
|
|
107
|
-
@api_login_required
|
|
108
|
-
def sct_nemesis_finalize(run_id: str):
|
|
109
|
-
payload = get_payload(request)
|
|
110
|
-
result = SCTService.finalize_nemesis(run_id=run_id, nemesis_details=payload["nemesis"])
|
|
111
|
-
return {
|
|
112
|
-
"status": "ok",
|
|
113
|
-
"response": result
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
@bp.route("/<string:run_id>/events/submit", methods=["POST"])
|
|
118
|
-
@api_login_required
|
|
119
|
-
def sct_events_submit(run_id: str):
|
|
120
|
-
payload = get_payload(request)
|
|
121
|
-
result = SCTService.submit_events(run_id=run_id, events=payload["events"])
|
|
122
|
-
return {
|
|
123
|
-
"status": "ok",
|
|
124
|
-
"response": result
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
@bp.route("/<string:run_id>/gemini/submit", methods=["POST"])
|
|
129
|
-
@api_login_required
|
|
130
|
-
def sct_gemini_results_submit(run_id: str):
|
|
131
|
-
payload = get_payload(request)
|
|
132
|
-
result = SCTService.submit_gemini_results(run_id=run_id, gemini_data=payload["gemini_data"])
|
|
133
|
-
return {
|
|
134
|
-
"status": "ok",
|
|
135
|
-
"response": result
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
@bp.route("/<string:run_id>/performance/submit", methods=["POST"])
|
|
139
|
-
@api_login_required
|
|
140
|
-
def sct_performance_results_submit(run_id: str):
|
|
141
|
-
payload = get_payload(request)
|
|
142
|
-
result = SCTService.submit_performance_results(run_id=run_id, performance_results=payload["performance_results"])
|
|
143
|
-
return {
|
|
144
|
-
"status": "ok",
|
|
145
|
-
"response": result
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
@bp.route("/<string:run_id>/performance/history", methods=["GET"])
|
|
149
|
-
@api_login_required
|
|
150
|
-
def sct_get_performance_history(run_id: str):
|
|
151
|
-
result = SCTService.get_performance_history_for_test(run_id=run_id)
|
|
152
|
-
return {
|
|
153
|
-
"status": "ok",
|
|
154
|
-
"response": result
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
@bp.route("/release/<string:release_name>/kernels", methods=["GET"])
|
|
159
|
-
@api_login_required
|
|
160
|
-
def sct_get_kernel_report(release_name: str):
|
|
161
|
-
result = SCTService.get_scylla_version_kernels_report(release_name=release_name)
|
|
162
|
-
return {
|
|
163
|
-
"status": "ok",
|
|
164
|
-
"response": result
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
@bp.route("/<string:run_id>/junit/submit", methods=["POST"])
|
|
169
|
-
@api_login_required
|
|
170
|
-
def sct_submit_junit_report(run_id: str):
|
|
171
|
-
payload = get_payload(request)
|
|
172
|
-
result = SCTService.junit_submit(run_id, payload["file_name"], payload["content"])
|
|
173
|
-
return {
|
|
174
|
-
"status": "ok",
|
|
175
|
-
"response": result
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
@bp.route("/<string:run_id>/junit/get_all", methods=["GET"])
|
|
179
|
-
@api_login_required
|
|
180
|
-
def sct_get_junit_reports(run_id: str):
|
|
181
|
-
result = SCTService.junit_get_all(run_id)
|
|
182
|
-
return {
|
|
183
|
-
"status": "ok",
|
|
184
|
-
"response": result
|
|
185
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
from flask import Blueprint
|
|
2
|
-
|
|
3
|
-
from argus.backend.plugins.sct.testrun import SCTJunitReports, SCTTestRun
|
|
4
|
-
from argus.backend.plugins.sct.controller import bp as sct_bp
|
|
5
|
-
from argus.backend.plugins.core import PluginInfoBase, PluginModelBase
|
|
6
|
-
from argus.backend.plugins.sct.udt import (
|
|
7
|
-
CloudInstanceDetails,
|
|
8
|
-
CloudNodesInfo,
|
|
9
|
-
CloudResource,
|
|
10
|
-
CloudSetupDetails,
|
|
11
|
-
EventsBySeverity,
|
|
12
|
-
NemesisRunInfo,
|
|
13
|
-
NodeDescription,
|
|
14
|
-
PackageVersion,
|
|
15
|
-
PerformanceHDRHistogram,
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class PluginInfo(PluginInfoBase):
|
|
20
|
-
# pylint: disable=too-few-public-methods
|
|
21
|
-
name: str = "scylla-cluster-tests"
|
|
22
|
-
model: PluginModelBase = SCTTestRun
|
|
23
|
-
controller: Blueprint = sct_bp
|
|
24
|
-
all_models = [
|
|
25
|
-
SCTTestRun,
|
|
26
|
-
SCTJunitReports,
|
|
27
|
-
]
|
|
28
|
-
all_types = [
|
|
29
|
-
NemesisRunInfo,
|
|
30
|
-
NodeDescription,
|
|
31
|
-
EventsBySeverity,
|
|
32
|
-
CloudResource,
|
|
33
|
-
CloudSetupDetails,
|
|
34
|
-
CloudNodesInfo,
|
|
35
|
-
CloudInstanceDetails,
|
|
36
|
-
PackageVersion,
|
|
37
|
-
PerformanceHDRHistogram,
|
|
38
|
-
]
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from argus.backend.plugins.sct.udt import CloudNodesInfo, CloudSetupDetails
|
|
3
|
-
|
|
4
|
-
LOGGER = logging.getLogger(__name__)
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def _get_node_amounts(config: dict) -> tuple[int, int]:
|
|
8
|
-
num_db_node = config.get("n_db_nodes")
|
|
9
|
-
num_db_node = sum([int(i) for i in num_db_node.split()]) if isinstance(num_db_node, str) else num_db_node
|
|
10
|
-
num_loaders = config.get("n_loaders")
|
|
11
|
-
num_loaders = sum([int(i) for i in num_loaders.split()]) if isinstance(num_loaders, str) else num_loaders
|
|
12
|
-
|
|
13
|
-
return num_db_node, num_loaders
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def _prepare_aws_resource_setup(sct_config: dict) -> CloudSetupDetails:
|
|
17
|
-
num_db_nodes, n_loaders = _get_node_amounts(sct_config)
|
|
18
|
-
db_node_setup = CloudNodesInfo(image_id=sct_config.get("ami_id_db_scylla"),
|
|
19
|
-
instance_type=sct_config.get("instance_type_db"),
|
|
20
|
-
node_amount=num_db_nodes,
|
|
21
|
-
post_behaviour=sct_config.get("post_behavior_db_nodes"))
|
|
22
|
-
loader_node_setup = CloudNodesInfo(image_id=sct_config.get("ami_id_loader"),
|
|
23
|
-
instance_type=sct_config.get("instance_type_loader"),
|
|
24
|
-
node_amount=n_loaders,
|
|
25
|
-
post_behaviour=sct_config.get("post_behavior_loader_nodes"))
|
|
26
|
-
monitor_node_setup = CloudNodesInfo(image_id=sct_config.get("ami_id_monitor"),
|
|
27
|
-
instance_type=sct_config.get("instance_type_monitor"),
|
|
28
|
-
node_amount=sct_config.get("n_monitor_nodes"),
|
|
29
|
-
post_behaviour=sct_config.get("post_behavior_monitor_nodes"))
|
|
30
|
-
cloud_setup = CloudSetupDetails(db_node=db_node_setup, loader_node=loader_node_setup,
|
|
31
|
-
monitor_node=monitor_node_setup, backend=sct_config.get("cluster_backend"))
|
|
32
|
-
|
|
33
|
-
return cloud_setup
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def _prepare_gce_resource_setup(sct_config: dict) -> CloudSetupDetails:
|
|
37
|
-
num_db_nodes, n_loaders = _get_node_amounts(sct_config)
|
|
38
|
-
db_node_setup = CloudNodesInfo(image_id=sct_config.get("gce_image_db"),
|
|
39
|
-
instance_type=sct_config.get("gce_instance_type_db"),
|
|
40
|
-
node_amount=num_db_nodes,
|
|
41
|
-
post_behaviour=sct_config.get("post_behavior_db_nodes"))
|
|
42
|
-
loader_node_setup = CloudNodesInfo(image_id=sct_config.get("gce_image_loader"),
|
|
43
|
-
instance_type=sct_config.get("gce_instance_type_loader"),
|
|
44
|
-
node_amount=n_loaders,
|
|
45
|
-
post_behaviour=sct_config.get("post_behavior_loader_nodes"))
|
|
46
|
-
monitor_node_setup = CloudNodesInfo(image_id=sct_config.get("gce_image_monitor"),
|
|
47
|
-
instance_type=sct_config.get("gce_instance_type_monitor"),
|
|
48
|
-
node_amount=sct_config.get("n_monitor_nodes"),
|
|
49
|
-
post_behaviour=sct_config.get("post_behavior_monitor_nodes"))
|
|
50
|
-
cloud_setup = CloudSetupDetails(db_node=db_node_setup, loader_node=loader_node_setup,
|
|
51
|
-
monitor_node=monitor_node_setup, backend=sct_config.get("cluster_backend"))
|
|
52
|
-
|
|
53
|
-
return cloud_setup
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
def _prepare_azure_resource_setup(sct_config: dict) -> CloudSetupDetails:
|
|
57
|
-
num_db_nodes, n_loaders = _get_node_amounts(sct_config)
|
|
58
|
-
db_node_setup = CloudNodesInfo(image_id=sct_config.get("azure_image_db"),
|
|
59
|
-
instance_type=sct_config.get("azure_instance_type_db"),
|
|
60
|
-
node_amount=num_db_nodes,
|
|
61
|
-
post_behaviour=sct_config.get("post_behavior_db_nodes"))
|
|
62
|
-
loader_node_setup = CloudNodesInfo(image_id=sct_config.get("azure_image_loader"),
|
|
63
|
-
instance_type=sct_config.get("azure_instance_type_loader"),
|
|
64
|
-
node_amount=n_loaders,
|
|
65
|
-
post_behaviour=sct_config.get("post_behavior_loader_nodes"))
|
|
66
|
-
monitor_node_setup = CloudNodesInfo(image_id=sct_config.get("azure_image_monitor"),
|
|
67
|
-
instance_type=sct_config.get("azure_instance_type_monitor"),
|
|
68
|
-
node_amount=sct_config.get("n_monitor_nodes"),
|
|
69
|
-
post_behaviour=sct_config.get("post_behavior_monitor_nodes"))
|
|
70
|
-
cloud_setup = CloudSetupDetails(db_node=db_node_setup, loader_node=loader_node_setup,
|
|
71
|
-
monitor_node=monitor_node_setup, backend=sct_config.get("cluster_backend"))
|
|
72
|
-
|
|
73
|
-
return cloud_setup
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def _prepare_unknown_resource_setup(sct_config: dict) -> CloudSetupDetails:
|
|
77
|
-
LOGGER.error("Unknown backend encountered: %s", sct_config.get("cluster_backend"))
|
|
78
|
-
db_node_setup = CloudNodesInfo(image_id="UNKNOWN",
|
|
79
|
-
instance_type="UNKNOWN",
|
|
80
|
-
node_amount=-1,
|
|
81
|
-
post_behaviour="UNKNOWN")
|
|
82
|
-
loader_node_setup = CloudNodesInfo(image_id="UNKNOWN",
|
|
83
|
-
instance_type="UNKNOWN",
|
|
84
|
-
node_amount=-1,
|
|
85
|
-
post_behaviour="UNKNOWN")
|
|
86
|
-
monitor_node_setup = CloudNodesInfo(image_id="UNKNOWN",
|
|
87
|
-
instance_type="UNKNOWN",
|
|
88
|
-
node_amount=-1,
|
|
89
|
-
post_behaviour="UNKNOWN")
|
|
90
|
-
cloud_setup = CloudSetupDetails(db_node=db_node_setup, loader_node=loader_node_setup,
|
|
91
|
-
monitor_node=monitor_node_setup, backend=sct_config.get("cluster_backend"))
|
|
92
|
-
|
|
93
|
-
return cloud_setup
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
def _prepare_bare_metal_resource_setup(sct_config: dict) -> CloudSetupDetails:
|
|
97
|
-
db_node_setup = CloudNodesInfo(image_id="bare_metal",
|
|
98
|
-
instance_type="bare_metal",
|
|
99
|
-
node_amount=sct_config.get("n_db_nodes"),
|
|
100
|
-
post_behaviour=sct_config.get("post_behavior_db_nodes"))
|
|
101
|
-
loader_node_setup = CloudNodesInfo(image_id="bare_metal",
|
|
102
|
-
instance_type="bare_metal",
|
|
103
|
-
node_amount=sct_config.get("n_loaders"),
|
|
104
|
-
post_behaviour=sct_config.get("post_behavior_loader_nodes"))
|
|
105
|
-
monitor_node_setup = CloudNodesInfo(image_id="bare_metal",
|
|
106
|
-
instance_type="bare_metal",
|
|
107
|
-
node_amount=sct_config.get("n_monitor_nodes"),
|
|
108
|
-
post_behaviour=sct_config.get("post_behavior_monitor_nodes"))
|
|
109
|
-
cloud_setup = CloudSetupDetails(db_node=db_node_setup, loader_node=loader_node_setup,
|
|
110
|
-
monitor_node=monitor_node_setup, backend=sct_config.get("cluster_backend"))
|
|
111
|
-
|
|
112
|
-
return cloud_setup
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
def _prepare_k8s_gce_minikube_resource_setup(sct_config: dict) -> CloudSetupDetails:
|
|
116
|
-
cloud_setup = _prepare_gce_resource_setup(sct_config)
|
|
117
|
-
|
|
118
|
-
image_id = sct_config.get("scylla_version")
|
|
119
|
-
cloud_setup.db_node.image_id = f"scylladb/scylladb:{image_id}"
|
|
120
|
-
cloud_setup.db_node.instance_type = sct_config.get("gce_instance_type_minikube")
|
|
121
|
-
|
|
122
|
-
return cloud_setup
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
def _prepare_k8s_gke_resource_setup(sct_config: dict) -> CloudSetupDetails:
|
|
126
|
-
cloud_setup = _prepare_gce_resource_setup(sct_config)
|
|
127
|
-
image_id = sct_config.get("scylla_version")
|
|
128
|
-
cloud_setup.db_node.image_id = f"scylladb/scylladb:{image_id}"
|
|
129
|
-
cloud_setup.monitor_node.image_id = sct_config.get("mgmt_docker_image")
|
|
130
|
-
cloud_setup.loader_node.image_id = f"scylladb/scylladb:{image_id}"
|
|
131
|
-
|
|
132
|
-
return cloud_setup
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
def _prepare_k8s_eks_resource_setup(sct_config: dict) -> CloudSetupDetails:
|
|
136
|
-
cloud_setup = _prepare_aws_resource_setup(sct_config)
|
|
137
|
-
|
|
138
|
-
return cloud_setup
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
def _prepare_docker_resource_setup(sct_config: dict) -> CloudSetupDetails:
|
|
142
|
-
db_node_setup = CloudNodesInfo(image_id=sct_config.get('docker_image'),
|
|
143
|
-
instance_type="docker",
|
|
144
|
-
node_amount=sct_config.get("n_db_nodes"),
|
|
145
|
-
post_behaviour=sct_config.get("post_behavior_db_nodes"))
|
|
146
|
-
loader_node_setup = CloudNodesInfo(image_id=sct_config.get('docker_image'),
|
|
147
|
-
instance_type="docker",
|
|
148
|
-
node_amount=sct_config.get("n_loaders"),
|
|
149
|
-
post_behaviour=sct_config.get("post_behavior_loader_nodes"))
|
|
150
|
-
monitor_node_setup = CloudNodesInfo(image_id=sct_config.get('docker_image'),
|
|
151
|
-
instance_type="docker",
|
|
152
|
-
node_amount=sct_config.get("n_monitor_nodes"),
|
|
153
|
-
post_behaviour=sct_config.get("post_behavior_monitor_nodes"))
|
|
154
|
-
cloud_setup = CloudSetupDetails(db_node=db_node_setup, loader_node=loader_node_setup,
|
|
155
|
-
monitor_node=monitor_node_setup, backend=sct_config.get("cluster_backend"))
|
|
156
|
-
|
|
157
|
-
return cloud_setup
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
class ResourceSetup:
|
|
161
|
-
# pylint: disable=too-few-public-methods
|
|
162
|
-
BACKEND_MAP = {
|
|
163
|
-
"aws": _prepare_aws_resource_setup,
|
|
164
|
-
"aws-siren": _prepare_aws_resource_setup,
|
|
165
|
-
"azure": _prepare_azure_resource_setup,
|
|
166
|
-
"gce": _prepare_gce_resource_setup,
|
|
167
|
-
"gce-siren": _prepare_gce_resource_setup,
|
|
168
|
-
"k8s-eks": _prepare_k8s_eks_resource_setup,
|
|
169
|
-
"k8s-gke": _prepare_k8s_gke_resource_setup,
|
|
170
|
-
"k8s-gce-minikube": _prepare_k8s_gce_minikube_resource_setup,
|
|
171
|
-
"baremetal": _prepare_bare_metal_resource_setup,
|
|
172
|
-
"docker": _prepare_docker_resource_setup,
|
|
173
|
-
"unknown": _prepare_unknown_resource_setup,
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
@classmethod
|
|
177
|
-
def get_resource_setup(cls, backend: str, sct_config: dict) -> CloudSetupDetails:
|
|
178
|
-
return cls.BACKEND_MAP.get(backend, _prepare_unknown_resource_setup)(sct_config)
|