robusta-cli 1.1__tar.gz → 1.3__tar.gz
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.
- {robusta_cli-1.1 → robusta_cli-1.3}/PKG-INFO +6 -7
- {robusta_cli-1.1 → robusta_cli-1.3}/pyproject.toml +6 -6
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/_version.py +1 -1
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/main.py +85 -10
- {robusta_cli-1.1 → robusta_cli-1.3}/LICENSE +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/README.md +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/__init__.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/auth.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/backend_profile.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/demo_alert.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/eula.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/integrations_cmd.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/playbooks_cmd.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/self_host.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/simple_sink_config.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/slack_feedback_message.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/slack_verification.py +0 -0
- {robusta_cli-1.1 → robusta_cli-1.3}/robusta_cli/utils.py +0 -0
|
@@ -1,31 +1,30 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: robusta-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Natan Yellin
|
|
6
6
|
Author-email: aantn@users.noreply.github.com
|
|
7
|
-
Requires-Python: >=3.
|
|
7
|
+
Requires-Python: >=3.10,<3.13
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.10
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
13
12
|
Requires-Dist: certifi (==2024.7.4)
|
|
14
13
|
Requires-Dist: click (==8.1.8)
|
|
15
14
|
Requires-Dist: click-spinner (>=0.1.10,<0.2.0)
|
|
16
|
-
Requires-Dist: cryptography (==
|
|
15
|
+
Requires-Dist: cryptography (==46.0.7) ; python_full_version >= "3.9.2" and python_version < "3.13"
|
|
17
16
|
Requires-Dist: dpath (>=2.0.5,<3.0.0)
|
|
18
17
|
Requires-Dist: hikaru-model-28 (>=1.1.0,<2.0.0)
|
|
19
18
|
Requires-Dist: kubernetes (>=29,<30)
|
|
20
19
|
Requires-Dist: pydantic (>=1.0,<2.0)
|
|
21
|
-
Requires-Dist: pyjwt (>=2.
|
|
20
|
+
Requires-Dist: pyjwt (>=2.12.0,<3.0.0)
|
|
22
21
|
Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
|
|
23
|
-
Requires-Dist: requests (>=2.
|
|
22
|
+
Requires-Dist: requests (>=2.33.0,<3.0.0)
|
|
24
23
|
Requires-Dist: slack-sdk (>=3,<4)
|
|
25
24
|
Requires-Dist: toml (>=0.10.2,<0.11.0)
|
|
26
25
|
Requires-Dist: typer (>=0.12.3,<0.13.0)
|
|
27
26
|
Requires-Dist: types-toml (>=0.10.2,<0.11.0)
|
|
28
|
-
Requires-Dist: urllib3 (
|
|
27
|
+
Requires-Dist: urllib3 (>=2.7.0)
|
|
29
28
|
Description-Content-Type: text/markdown
|
|
30
29
|
|
|
31
30
|
# robusta-cli
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "robusta-cli"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.3"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["Natan Yellin <aantn@users.noreply.github.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -9,22 +9,22 @@ readme = "README.md"
|
|
|
9
9
|
robusta = "robusta_cli.main:app"
|
|
10
10
|
|
|
11
11
|
[tool.poetry.dependencies]
|
|
12
|
-
python = "^3.
|
|
12
|
+
python = "^3.10, <3.13"
|
|
13
13
|
typer = "^0.12.3"
|
|
14
14
|
pyyaml = "^6.0.1"
|
|
15
15
|
click-spinner = "^0.1.10"
|
|
16
|
-
cryptography = "
|
|
16
|
+
cryptography = {version = "46.0.7", python = ">=3.9.2,<3.13"}
|
|
17
17
|
dpath = "^2.0.5"
|
|
18
18
|
pydantic = "^1.0"
|
|
19
19
|
slack-sdk = "^3"
|
|
20
|
-
pyjwt = "^2.
|
|
21
|
-
requests = "^2.
|
|
20
|
+
pyjwt = "^2.12.0"
|
|
21
|
+
requests = "^2.33.0"
|
|
22
22
|
certifi = "2024.7.4"
|
|
23
23
|
types-toml = "^0.10.2"
|
|
24
24
|
toml = "^0.10.2"
|
|
25
25
|
hikaru-model-28 = "^1.1.0"
|
|
26
26
|
kubernetes = "^29"
|
|
27
|
-
urllib3 = "
|
|
27
|
+
urllib3 = ">=2.7.0"
|
|
28
28
|
click = "8.1.8"
|
|
29
29
|
|
|
30
30
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# this is updated by .github/workflows/release.yaml
|
|
2
|
-
__version__ = "1.
|
|
2
|
+
__version__ = "1.3"
|
|
@@ -5,6 +5,7 @@ import subprocess
|
|
|
5
5
|
import time
|
|
6
6
|
import traceback
|
|
7
7
|
import uuid
|
|
8
|
+
from enum import Enum
|
|
8
9
|
from typing import Dict, List, Optional, Union
|
|
9
10
|
|
|
10
11
|
import certifi
|
|
@@ -61,6 +62,61 @@ app.add_typer(auth_commands, name="auth", help="Authentication commands menu")
|
|
|
61
62
|
app.add_typer(self_host_commands, name="self-host", help="Self-host commands menu")
|
|
62
63
|
|
|
63
64
|
|
|
65
|
+
class ClusterSize(str, Enum):
|
|
66
|
+
small = "small"
|
|
67
|
+
medium = "medium"
|
|
68
|
+
large = "large"
|
|
69
|
+
|
|
70
|
+
# Resource configurations per cluster size (by CPU count):
|
|
71
|
+
# small: < 16 CPUs
|
|
72
|
+
# medium: 16-128 CPUs
|
|
73
|
+
# large: > 128 CPUs
|
|
74
|
+
CLUSTER_SIZE_RESOURCES = {
|
|
75
|
+
"small": {
|
|
76
|
+
"kubewatch": {
|
|
77
|
+
"requests": {"memory": "128Mi", "cpu": "50m"},
|
|
78
|
+
"limits": {"memory": "128Mi"},
|
|
79
|
+
},
|
|
80
|
+
"runner": {
|
|
81
|
+
"requests": {"memory": "1Gi", "cpu": "100m"},
|
|
82
|
+
"limits": {"memory": "1536Mi"},
|
|
83
|
+
},
|
|
84
|
+
"holmes": {
|
|
85
|
+
"requests": {"memory": "1Gi", "cpu": "100m"},
|
|
86
|
+
"limits": {"memory": "1Gi"},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
"medium": {
|
|
90
|
+
"kubewatch": {
|
|
91
|
+
"requests": {"memory": "256Mi", "cpu": "100m"},
|
|
92
|
+
"limits": {"memory": "256Mi"},
|
|
93
|
+
},
|
|
94
|
+
"runner": {
|
|
95
|
+
"requests": {"memory": "2Gi", "cpu": "500m"},
|
|
96
|
+
"limits": {"memory": "4Gi"},
|
|
97
|
+
},
|
|
98
|
+
"holmes": {
|
|
99
|
+
"requests": {"memory": "2Gi", "cpu": "250m"},
|
|
100
|
+
"limits": {"memory": "4Gi"},
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
"large": {
|
|
104
|
+
"kubewatch": {
|
|
105
|
+
"requests": {"memory": "1Gi", "cpu": "200m"},
|
|
106
|
+
"limits": {"memory": "1Gi"},
|
|
107
|
+
},
|
|
108
|
+
"runner": {
|
|
109
|
+
"requests": {"memory": "4Gi", "cpu": "1000m"},
|
|
110
|
+
"limits": {"memory": "6Gi"},
|
|
111
|
+
},
|
|
112
|
+
"holmes": {
|
|
113
|
+
"requests": {"memory": "2Gi", "cpu": "500m"},
|
|
114
|
+
"limits": {"memory": "4Gi"},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
|
|
64
120
|
class GlobalConfig(BaseModel):
|
|
65
121
|
signing_key: str = ""
|
|
66
122
|
account_id: str = ""
|
|
@@ -68,6 +124,7 @@ class GlobalConfig(BaseModel):
|
|
|
68
124
|
|
|
69
125
|
class HolmesConfig(BaseModel):
|
|
70
126
|
additional_env_vars: List[Dict[str, str]]
|
|
127
|
+
resources: Optional[Dict] = None
|
|
71
128
|
|
|
72
129
|
|
|
73
130
|
class HelmValues(BaseModel, extra=Extra.allow):
|
|
@@ -82,7 +139,7 @@ class HelmValues(BaseModel, extra=Extra.allow):
|
|
|
82
139
|
kubewatch: Dict = None
|
|
83
140
|
grafanaRenderer: Dict = None
|
|
84
141
|
runner: Dict = None
|
|
85
|
-
enableHolmesGPT: Optional[bool] = None
|
|
142
|
+
enableHolmesGPT: Optional[bool] = None
|
|
86
143
|
holmes: Optional[HolmesConfig] = None
|
|
87
144
|
|
|
88
145
|
|
|
@@ -114,7 +171,11 @@ def gen_config(
|
|
|
114
171
|
),
|
|
115
172
|
is_small_cluster: bool = typer.Option(
|
|
116
173
|
None,
|
|
117
|
-
help="Local/Small cluster",
|
|
174
|
+
help="[Deprecated: use --cluster-size] Local/Small cluster",
|
|
175
|
+
),
|
|
176
|
+
cluster_size: Optional[ClusterSize] = typer.Option(
|
|
177
|
+
None,
|
|
178
|
+
help="Cluster size: small (< 16 CPUs), medium (16-128 CPUs), large (> 128 CPUs)",
|
|
118
179
|
),
|
|
119
180
|
slack_api_key: str = typer.Option(
|
|
120
181
|
"",
|
|
@@ -248,7 +309,6 @@ def gen_config(
|
|
|
248
309
|
|
|
249
310
|
values = HelmValues(
|
|
250
311
|
clusterName=cluster_name,
|
|
251
|
-
isSmallCluster=is_small_cluster,
|
|
252
312
|
globalConfig=GlobalConfig(signing_key=signing_key, account_id=account_id),
|
|
253
313
|
sinksConfig=sinks_config,
|
|
254
314
|
enablePrometheusStack=enable_prometheus_stack,
|
|
@@ -274,15 +334,12 @@ def gen_config(
|
|
|
274
334
|
"name": "ROBUSTA_TELEMETRY_ENDPOINT",
|
|
275
335
|
"value": backend_profile.robusta_telemetry_endpoint,
|
|
276
336
|
},
|
|
337
|
+
{
|
|
338
|
+
"name": "ROBUSTA_API_ENDPOINT",
|
|
339
|
+
"value": backend_profile.robusta_cloud_api_host,
|
|
340
|
+
},
|
|
277
341
|
]
|
|
278
342
|
|
|
279
|
-
if is_small_cluster:
|
|
280
|
-
setattr(values, "kube-prometheus-stack", {})
|
|
281
|
-
kube_stack = getattr(values, "kube-prometheus-stack")
|
|
282
|
-
kube_stack["prometheus"] = {
|
|
283
|
-
"prometheusSpec": {"resources": {"requests": {"memory": "300Mi"}, "limits": {"memory": "300Mi"}}},
|
|
284
|
-
}
|
|
285
|
-
|
|
286
343
|
if robusta_api_key:
|
|
287
344
|
values.enableHolmesGPT = True
|
|
288
345
|
values.holmes = HolmesConfig(additional_env_vars=[
|
|
@@ -292,6 +349,24 @@ def gen_config(
|
|
|
292
349
|
}
|
|
293
350
|
])
|
|
294
351
|
|
|
352
|
+
# cluster_size (new) and is_small_cluster (legacy) are mutually exclusive
|
|
353
|
+
if cluster_size:
|
|
354
|
+
size_resources = CLUSTER_SIZE_RESOURCES.get(cluster_size.value)
|
|
355
|
+
if size_resources:
|
|
356
|
+
if "kubewatch" in size_resources:
|
|
357
|
+
values.kubewatch = {"resources": size_resources["kubewatch"]}
|
|
358
|
+
if "runner" in size_resources:
|
|
359
|
+
values.runner["resources"] = size_resources["runner"]
|
|
360
|
+
if "holmes" in size_resources and values.holmes:
|
|
361
|
+
values.holmes.resources = size_resources["holmes"]
|
|
362
|
+
elif is_small_cluster:
|
|
363
|
+
values.isSmallCluster = is_small_cluster
|
|
364
|
+
setattr(values, "kube-prometheus-stack", {})
|
|
365
|
+
kube_stack = getattr(values, "kube-prometheus-stack")
|
|
366
|
+
kube_stack["prometheus"] = {
|
|
367
|
+
"prometheusSpec": {"resources": {"requests": {"memory": "300Mi"}, "limits": {"memory": "300Mi"}}},
|
|
368
|
+
}
|
|
369
|
+
|
|
295
370
|
write_values_file(output_path, values)
|
|
296
371
|
|
|
297
372
|
if robusta_api_key:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|