Skip to content

Commit 5ca8f95

Browse files
authored
feat(cockpit): add EnablePreconfiguredAlertRules endpoint (#953)
1 parent e0383dc commit 5ca8f95

File tree

8 files changed

+454
-6
lines changed

8 files changed

+454
-6
lines changed

scaleway-async/scaleway_async/cockpit/v1/__init__.py

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from .types import PlanName
1212
from .types import TokenScope
1313
from .types import UsageUnit
14+
from .types import PreconfiguredAlertData
1415
from .types import ContactPointEmail
1516
from .types import GetConfigResponseRetention
1617
from .types import Alert
@@ -49,8 +50,10 @@
4950
from .types import RegionalApiDeleteDataSourceRequest
5051
from .types import RegionalApiDeleteTokenRequest
5152
from .types import RegionalApiDisableAlertManagerRequest
53+
from .types import RegionalApiDisableAlertRulesRequest
5254
from .types import RegionalApiDisableManagedAlertsRequest
5355
from .types import RegionalApiEnableAlertManagerRequest
56+
from .types import RegionalApiEnableAlertRulesRequest
5457
from .types import RegionalApiEnableManagedAlertsRequest
5558
from .types import RegionalApiGetAlertManagerRequest
5659
from .types import RegionalApiGetConfigRequest
@@ -80,6 +83,7 @@
8083
"PlanName",
8184
"TokenScope",
8285
"UsageUnit",
86+
"PreconfiguredAlertData",
8387
"ContactPointEmail",
8488
"GetConfigResponseRetention",
8589
"Alert",
@@ -118,8 +122,10 @@
118122
"RegionalApiDeleteDataSourceRequest",
119123
"RegionalApiDeleteTokenRequest",
120124
"RegionalApiDisableAlertManagerRequest",
125+
"RegionalApiDisableAlertRulesRequest",
121126
"RegionalApiDisableManagedAlertsRequest",
122127
"RegionalApiEnableAlertManagerRequest",
128+
"RegionalApiEnableAlertRulesRequest",
123129
"RegionalApiEnableManagedAlertsRequest",
124130
"RegionalApiGetAlertManagerRequest",
125131
"RegionalApiGetConfigRequest",

scaleway-async/scaleway_async/cockpit/v1/api.py

+81-1
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,10 @@
4747
RegionalApiCreateTokenRequest,
4848
RegionalApiDeleteContactPointRequest,
4949
RegionalApiDisableAlertManagerRequest,
50+
RegionalApiDisableAlertRulesRequest,
5051
RegionalApiDisableManagedAlertsRequest,
5152
RegionalApiEnableAlertManagerRequest,
53+
RegionalApiEnableAlertRulesRequest,
5254
RegionalApiEnableManagedAlertsRequest,
5355
RegionalApiTriggerTestAlertRequest,
5456
RegionalApiUpdateContactPointRequest,
@@ -83,8 +85,10 @@
8385
marshal_RegionalApiCreateTokenRequest,
8486
marshal_RegionalApiDeleteContactPointRequest,
8587
marshal_RegionalApiDisableAlertManagerRequest,
88+
marshal_RegionalApiDisableAlertRulesRequest,
8689
marshal_RegionalApiDisableManagedAlertsRequest,
8790
marshal_RegionalApiEnableAlertManagerRequest,
91+
marshal_RegionalApiEnableAlertRulesRequest,
8892
marshal_RegionalApiEnableManagedAlertsRequest,
8993
marshal_RegionalApiTriggerTestAlertRequest,
9094
marshal_RegionalApiUpdateContactPointRequest,
@@ -1446,7 +1450,7 @@ async def list_alerts(
14461450
:param project_id: Project ID to filter for, only alerts from this Project will be returned.
14471451
:param is_enabled: True returns only enabled alerts. False returns only disabled alerts. If omitted, no alert filtering is applied. Other filters may still apply.
14481452
:param is_preconfigured: True returns only preconfigured alerts. False returns only custom alerts. If omitted, no filtering is applied on alert types. Other filters may still apply.
1449-
:param state: Valid values to filter on are `disabled`, `enabled`, `pending` and `firing`. If omitted, no filtering is applied on alert states. Other filters may still apply.
1453+
:param state: Valid values to filter on are `inactive`, `pending` and `firing`. If omitted, no filtering is applied on alert states. Other filters may still apply.
14501454
:return: :class:`ListAlertsResponse <ListAlertsResponse>`
14511455
14521456
Usage:
@@ -1549,6 +1553,82 @@ async def disable_managed_alerts(
15491553
self._throw_on_error(res)
15501554
return unmarshal_AlertManager(res.json())
15511555

1556+
async def enable_alert_rules(
1557+
self,
1558+
*,
1559+
region: Optional[ScwRegion] = None,
1560+
project_id: Optional[str] = None,
1561+
rule_ids: Optional[List[str]] = None,
1562+
) -> None:
1563+
"""
1564+
Enable preconfigured alert rules. Enable alert rules from the list of available preconfigured rules.
1565+
:param region: Region to target. If none is passed will use default region from the config.
1566+
:param project_id:
1567+
:param rule_ids:
1568+
1569+
Usage:
1570+
::
1571+
1572+
result = await api.enable_alert_rules()
1573+
"""
1574+
1575+
param_region = validate_path_param(
1576+
"region", region or self.client.default_region
1577+
)
1578+
1579+
res = self._request(
1580+
"POST",
1581+
f"/cockpit/v1/regions/{param_region}/alert-manager/enable-alert-rules",
1582+
body=marshal_RegionalApiEnableAlertRulesRequest(
1583+
RegionalApiEnableAlertRulesRequest(
1584+
region=region,
1585+
project_id=project_id,
1586+
rule_ids=rule_ids,
1587+
),
1588+
self.client,
1589+
),
1590+
)
1591+
1592+
self._throw_on_error(res)
1593+
1594+
async def disable_alert_rules(
1595+
self,
1596+
*,
1597+
region: Optional[ScwRegion] = None,
1598+
project_id: Optional[str] = None,
1599+
rule_ids: Optional[List[str]] = None,
1600+
) -> None:
1601+
"""
1602+
Disable preconfigured alert rules. Disable alert rules from the list of available preconfigured rules.
1603+
:param region: Region to target. If none is passed will use default region from the config.
1604+
:param project_id:
1605+
:param rule_ids:
1606+
1607+
Usage:
1608+
::
1609+
1610+
result = await api.disable_alert_rules()
1611+
"""
1612+
1613+
param_region = validate_path_param(
1614+
"region", region or self.client.default_region
1615+
)
1616+
1617+
res = self._request(
1618+
"POST",
1619+
f"/cockpit/v1/regions/{param_region}/alert-manager/disable-alert-rules",
1620+
body=marshal_RegionalApiDisableAlertRulesRequest(
1621+
RegionalApiDisableAlertRulesRequest(
1622+
region=region,
1623+
project_id=project_id,
1624+
rule_ids=rule_ids,
1625+
),
1626+
self.client,
1627+
),
1628+
)
1629+
1630+
self._throw_on_error(res)
1631+
15521632
async def trigger_test_alert(
15531633
self,
15541634
*,

scaleway-async/scaleway_async/cockpit/v1/marshalling.py

+62
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
GetConfigResponseRetention,
2323
GetConfigResponse,
2424
Grafana,
25+
PreconfiguredAlertData,
2526
Alert,
2627
ListAlertsResponse,
2728
ListContactPointsResponse,
@@ -41,8 +42,10 @@
4142
RegionalApiCreateTokenRequest,
4243
RegionalApiDeleteContactPointRequest,
4344
RegionalApiDisableAlertManagerRequest,
45+
RegionalApiDisableAlertRulesRequest,
4446
RegionalApiDisableManagedAlertsRequest,
4547
RegionalApiEnableAlertManagerRequest,
48+
RegionalApiEnableAlertRulesRequest,
4649
RegionalApiEnableManagedAlertsRequest,
4750
RegionalApiTriggerTestAlertRequest,
4851
RegionalApiUpdateContactPointRequest,
@@ -415,6 +418,29 @@ def unmarshal_Grafana(data: Any) -> Grafana:
415418
return Grafana(**args)
416419

417420

421+
def unmarshal_PreconfiguredAlertData(data: Any) -> PreconfiguredAlertData:
422+
if not isinstance(data, dict):
423+
raise TypeError(
424+
"Unmarshalling the type 'PreconfiguredAlertData' failed as data isn't a dictionary."
425+
)
426+
427+
args: Dict[str, Any] = {}
428+
429+
field = data.get("preconfigured_rule_id", None)
430+
if field is not None:
431+
args["preconfigured_rule_id"] = field
432+
433+
field = data.get("display_name", None)
434+
if field is not None:
435+
args["display_name"] = field
436+
437+
field = data.get("display_description", None)
438+
if field is not None:
439+
args["display_description"] = field
440+
441+
return PreconfiguredAlertData(**args)
442+
443+
418444
def unmarshal_Alert(data: Any) -> Alert:
419445
if not isinstance(data, dict):
420446
raise TypeError(
@@ -457,6 +483,12 @@ def unmarshal_Alert(data: Any) -> Alert:
457483
else:
458484
args["state"] = None
459485

486+
field = data.get("preconfigured_data", None)
487+
if field is not None:
488+
args["preconfigured_data"] = unmarshal_PreconfiguredAlertData(field)
489+
else:
490+
args["preconfigured_data"] = None
491+
460492
return Alert(**args)
461493

462494

@@ -868,6 +900,21 @@ def marshal_RegionalApiDisableAlertManagerRequest(
868900
return output
869901

870902

903+
def marshal_RegionalApiDisableAlertRulesRequest(
904+
request: RegionalApiDisableAlertRulesRequest,
905+
defaults: ProfileDefaults,
906+
) -> Dict[str, Any]:
907+
output: Dict[str, Any] = {}
908+
909+
if request.project_id is not None:
910+
output["project_id"] = request.project_id or defaults.default_project_id
911+
912+
if request.rule_ids is not None:
913+
output["rule_ids"] = request.rule_ids
914+
915+
return output
916+
917+
871918
def marshal_RegionalApiDisableManagedAlertsRequest(
872919
request: RegionalApiDisableManagedAlertsRequest,
873920
defaults: ProfileDefaults,
@@ -892,6 +939,21 @@ def marshal_RegionalApiEnableAlertManagerRequest(
892939
return output
893940

894941

942+
def marshal_RegionalApiEnableAlertRulesRequest(
943+
request: RegionalApiEnableAlertRulesRequest,
944+
defaults: ProfileDefaults,
945+
) -> Dict[str, Any]:
946+
output: Dict[str, Any] = {}
947+
948+
if request.project_id is not None:
949+
output["project_id"] = request.project_id or defaults.default_project_id
950+
951+
if request.rule_ids is not None:
952+
output["rule_ids"] = request.rule_ids
953+
954+
return output
955+
956+
895957
def marshal_RegionalApiEnableManagedAlertsRequest(
896958
request: RegionalApiEnableManagedAlertsRequest,
897959
defaults: ProfileDefaults,

scaleway-async/scaleway_async/cockpit/v1/types.py

+78-2
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,28 @@ def __str__(self) -> str:
127127
return str(self.value)
128128

129129

130+
@dataclass
131+
class PreconfiguredAlertData:
132+
"""
133+
Structure for additional data relative to preconfigured alerts.
134+
"""
135+
136+
preconfigured_rule_id: str
137+
"""
138+
ID of the preconfigured rule if the alert is preconfigured.
139+
"""
140+
141+
display_name: str
142+
"""
143+
Human readable name of the alert.
144+
"""
145+
146+
display_description: str
147+
"""
148+
Human readable description of the alert.
149+
"""
150+
151+
130152
@dataclass
131153
class ContactPointEmail:
132154
to: str
@@ -143,24 +165,54 @@ class GetConfigResponseRetention:
143165

144166
@dataclass
145167
class Alert:
168+
"""
169+
Structure representing an alert.
170+
"""
171+
146172
region: ScwRegion
147173
"""
148-
Region to target. If none is passed will use default region from the config.
174+
The region in which the alert is defined.
149175
"""
150176

151177
preconfigured: bool
178+
"""
179+
Indicates if the alert is preconfigured or custom.
180+
"""
152181

153182
name: str
183+
"""
184+
Name of the alert.
185+
"""
154186

155187
rule: str
188+
"""
189+
Rule defining the alert condition.
190+
"""
156191

157192
duration: str
193+
"""
194+
Duration for which the alert must be active before firing. The format of this duration follows the prometheus duration format.
195+
"""
158196

159197
enabled: bool
198+
"""
199+
Indicates if the alert is enabled or disabled. Only preconfigured alerts can be disabled.
200+
"""
160201

161202
annotations: Dict[str, str]
203+
"""
204+
Annotations for the alert, used to provide additional information about the alert.
205+
"""
162206

163207
state: Optional[AlertState]
208+
"""
209+
Current state of the alert. Possible states are `inactive`, `pending`, and `firing`.
210+
"""
211+
212+
preconfigured_data: Optional[PreconfiguredAlertData]
213+
"""
214+
Contains additional data for preconfigured alerts, such as the rule ID, display name, and description. Only present if the alert is preconfigured.
215+
"""
164216

165217

166218
@dataclass
@@ -996,6 +1048,18 @@ class RegionalApiDisableAlertManagerRequest:
9961048
"""
9971049

9981050

1051+
@dataclass
1052+
class RegionalApiDisableAlertRulesRequest:
1053+
region: Optional[ScwRegion]
1054+
"""
1055+
Region to target. If none is passed will use default region from the config.
1056+
"""
1057+
1058+
project_id: Optional[str]
1059+
1060+
rule_ids: Optional[List[str]]
1061+
1062+
9991063
@dataclass
10001064
class RegionalApiDisableManagedAlertsRequest:
10011065
"""
@@ -1030,6 +1094,18 @@ class RegionalApiEnableAlertManagerRequest:
10301094
"""
10311095

10321096

1097+
@dataclass
1098+
class RegionalApiEnableAlertRulesRequest:
1099+
region: Optional[ScwRegion]
1100+
"""
1101+
Region to target. If none is passed will use default region from the config.
1102+
"""
1103+
1104+
project_id: Optional[str]
1105+
1106+
rule_ids: Optional[List[str]]
1107+
1108+
10331109
@dataclass
10341110
class RegionalApiEnableManagedAlertsRequest:
10351111
"""
@@ -1150,7 +1226,7 @@ class RegionalApiListAlertsRequest:
11501226

11511227
state: Optional[AlertState]
11521228
"""
1153-
Valid values to filter on are `disabled`, `enabled`, `pending` and `firing`. If omitted, no filtering is applied on alert states. Other filters may still apply.
1229+
Valid values to filter on are `inactive`, `pending` and `firing`. If omitted, no filtering is applied on alert states. Other filters may still apply.
11541230
"""
11551231

11561232

0 commit comments

Comments
 (0)