diff --git a/scaleway-async/scaleway_async/cockpit/v1/__init__.py b/scaleway-async/scaleway_async/cockpit/v1/__init__.py index abac82780..6d028da8d 100644 --- a/scaleway-async/scaleway_async/cockpit/v1/__init__.py +++ b/scaleway-async/scaleway_async/cockpit/v1/__init__.py @@ -11,6 +11,7 @@ from .types import PlanName from .types import TokenScope from .types import UsageUnit +from .types import PreconfiguredAlertData from .types import ContactPointEmail from .types import GetConfigResponseRetention from .types import Alert @@ -49,8 +50,10 @@ from .types import RegionalApiDeleteDataSourceRequest from .types import RegionalApiDeleteTokenRequest from .types import RegionalApiDisableAlertManagerRequest +from .types import RegionalApiDisableAlertRulesRequest from .types import RegionalApiDisableManagedAlertsRequest from .types import RegionalApiEnableAlertManagerRequest +from .types import RegionalApiEnableAlertRulesRequest from .types import RegionalApiEnableManagedAlertsRequest from .types import RegionalApiGetAlertManagerRequest from .types import RegionalApiGetConfigRequest @@ -80,6 +83,7 @@ "PlanName", "TokenScope", "UsageUnit", + "PreconfiguredAlertData", "ContactPointEmail", "GetConfigResponseRetention", "Alert", @@ -118,8 +122,10 @@ "RegionalApiDeleteDataSourceRequest", "RegionalApiDeleteTokenRequest", "RegionalApiDisableAlertManagerRequest", + "RegionalApiDisableAlertRulesRequest", "RegionalApiDisableManagedAlertsRequest", "RegionalApiEnableAlertManagerRequest", + "RegionalApiEnableAlertRulesRequest", "RegionalApiEnableManagedAlertsRequest", "RegionalApiGetAlertManagerRequest", "RegionalApiGetConfigRequest", diff --git a/scaleway-async/scaleway_async/cockpit/v1/api.py b/scaleway-async/scaleway_async/cockpit/v1/api.py index 4d98ca28d..56b69bf22 100644 --- a/scaleway-async/scaleway_async/cockpit/v1/api.py +++ b/scaleway-async/scaleway_async/cockpit/v1/api.py @@ -47,8 +47,10 @@ RegionalApiCreateTokenRequest, RegionalApiDeleteContactPointRequest, RegionalApiDisableAlertManagerRequest, + RegionalApiDisableAlertRulesRequest, RegionalApiDisableManagedAlertsRequest, RegionalApiEnableAlertManagerRequest, + RegionalApiEnableAlertRulesRequest, RegionalApiEnableManagedAlertsRequest, RegionalApiTriggerTestAlertRequest, RegionalApiUpdateContactPointRequest, @@ -83,8 +85,10 @@ marshal_RegionalApiCreateTokenRequest, marshal_RegionalApiDeleteContactPointRequest, marshal_RegionalApiDisableAlertManagerRequest, + marshal_RegionalApiDisableAlertRulesRequest, marshal_RegionalApiDisableManagedAlertsRequest, marshal_RegionalApiEnableAlertManagerRequest, + marshal_RegionalApiEnableAlertRulesRequest, marshal_RegionalApiEnableManagedAlertsRequest, marshal_RegionalApiTriggerTestAlertRequest, marshal_RegionalApiUpdateContactPointRequest, @@ -1446,7 +1450,7 @@ async def list_alerts( :param project_id: Project ID to filter for, only alerts from this Project will be returned. :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. :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. - :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. + :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. :return: :class:`ListAlertsResponse ` Usage: @@ -1549,6 +1553,82 @@ async def disable_managed_alerts( self._throw_on_error(res) return unmarshal_AlertManager(res.json()) + async def enable_alert_rules( + self, + *, + region: Optional[ScwRegion] = None, + project_id: Optional[str] = None, + rule_ids: Optional[List[str]] = None, + ) -> None: + """ + Enable preconfigured alert rules. Enable alert rules from the list of available preconfigured rules. + :param region: Region to target. If none is passed will use default region from the config. + :param project_id: + :param rule_ids: + + Usage: + :: + + result = await api.enable_alert_rules() + """ + + param_region = validate_path_param( + "region", region or self.client.default_region + ) + + res = self._request( + "POST", + f"/cockpit/v1/regions/{param_region}/alert-manager/enable-alert-rules", + body=marshal_RegionalApiEnableAlertRulesRequest( + RegionalApiEnableAlertRulesRequest( + region=region, + project_id=project_id, + rule_ids=rule_ids, + ), + self.client, + ), + ) + + self._throw_on_error(res) + + async def disable_alert_rules( + self, + *, + region: Optional[ScwRegion] = None, + project_id: Optional[str] = None, + rule_ids: Optional[List[str]] = None, + ) -> None: + """ + Disable preconfigured alert rules. Disable alert rules from the list of available preconfigured rules. + :param region: Region to target. If none is passed will use default region from the config. + :param project_id: + :param rule_ids: + + Usage: + :: + + result = await api.disable_alert_rules() + """ + + param_region = validate_path_param( + "region", region or self.client.default_region + ) + + res = self._request( + "POST", + f"/cockpit/v1/regions/{param_region}/alert-manager/disable-alert-rules", + body=marshal_RegionalApiDisableAlertRulesRequest( + RegionalApiDisableAlertRulesRequest( + region=region, + project_id=project_id, + rule_ids=rule_ids, + ), + self.client, + ), + ) + + self._throw_on_error(res) + async def trigger_test_alert( self, *, diff --git a/scaleway-async/scaleway_async/cockpit/v1/marshalling.py b/scaleway-async/scaleway_async/cockpit/v1/marshalling.py index 65c895435..0f4e111fb 100644 --- a/scaleway-async/scaleway_async/cockpit/v1/marshalling.py +++ b/scaleway-async/scaleway_async/cockpit/v1/marshalling.py @@ -22,6 +22,7 @@ GetConfigResponseRetention, GetConfigResponse, Grafana, + PreconfiguredAlertData, Alert, ListAlertsResponse, ListContactPointsResponse, @@ -41,8 +42,10 @@ RegionalApiCreateTokenRequest, RegionalApiDeleteContactPointRequest, RegionalApiDisableAlertManagerRequest, + RegionalApiDisableAlertRulesRequest, RegionalApiDisableManagedAlertsRequest, RegionalApiEnableAlertManagerRequest, + RegionalApiEnableAlertRulesRequest, RegionalApiEnableManagedAlertsRequest, RegionalApiTriggerTestAlertRequest, RegionalApiUpdateContactPointRequest, @@ -415,6 +418,29 @@ def unmarshal_Grafana(data: Any) -> Grafana: return Grafana(**args) +def unmarshal_PreconfiguredAlertData(data: Any) -> PreconfiguredAlertData: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'PreconfiguredAlertData' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("preconfigured_rule_id", None) + if field is not None: + args["preconfigured_rule_id"] = field + + field = data.get("display_name", None) + if field is not None: + args["display_name"] = field + + field = data.get("display_description", None) + if field is not None: + args["display_description"] = field + + return PreconfiguredAlertData(**args) + + def unmarshal_Alert(data: Any) -> Alert: if not isinstance(data, dict): raise TypeError( @@ -457,6 +483,12 @@ def unmarshal_Alert(data: Any) -> Alert: else: args["state"] = None + field = data.get("preconfigured_data", None) + if field is not None: + args["preconfigured_data"] = unmarshal_PreconfiguredAlertData(field) + else: + args["preconfigured_data"] = None + return Alert(**args) @@ -868,6 +900,21 @@ def marshal_RegionalApiDisableAlertManagerRequest( return output +def marshal_RegionalApiDisableAlertRulesRequest( + request: RegionalApiDisableAlertRulesRequest, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.project_id is not None: + output["project_id"] = request.project_id or defaults.default_project_id + + if request.rule_ids is not None: + output["rule_ids"] = request.rule_ids + + return output + + def marshal_RegionalApiDisableManagedAlertsRequest( request: RegionalApiDisableManagedAlertsRequest, defaults: ProfileDefaults, @@ -892,6 +939,21 @@ def marshal_RegionalApiEnableAlertManagerRequest( return output +def marshal_RegionalApiEnableAlertRulesRequest( + request: RegionalApiEnableAlertRulesRequest, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.project_id is not None: + output["project_id"] = request.project_id or defaults.default_project_id + + if request.rule_ids is not None: + output["rule_ids"] = request.rule_ids + + return output + + def marshal_RegionalApiEnableManagedAlertsRequest( request: RegionalApiEnableManagedAlertsRequest, defaults: ProfileDefaults, diff --git a/scaleway-async/scaleway_async/cockpit/v1/types.py b/scaleway-async/scaleway_async/cockpit/v1/types.py index 21885a85d..ce0efd821 100644 --- a/scaleway-async/scaleway_async/cockpit/v1/types.py +++ b/scaleway-async/scaleway_async/cockpit/v1/types.py @@ -127,6 +127,28 @@ def __str__(self) -> str: return str(self.value) +@dataclass +class PreconfiguredAlertData: + """ + Structure for additional data relative to preconfigured alerts. + """ + + preconfigured_rule_id: str + """ + ID of the preconfigured rule if the alert is preconfigured. + """ + + display_name: str + """ + Human readable name of the alert. + """ + + display_description: str + """ + Human readable description of the alert. + """ + + @dataclass class ContactPointEmail: to: str @@ -143,24 +165,54 @@ class GetConfigResponseRetention: @dataclass class Alert: + """ + Structure representing an alert. + """ + region: ScwRegion """ - Region to target. If none is passed will use default region from the config. + The region in which the alert is defined. """ preconfigured: bool + """ + Indicates if the alert is preconfigured or custom. + """ name: str + """ + Name of the alert. + """ rule: str + """ + Rule defining the alert condition. + """ duration: str + """ + Duration for which the alert must be active before firing. The format of this duration follows the prometheus duration format. + """ enabled: bool + """ + Indicates if the alert is enabled or disabled. Only preconfigured alerts can be disabled. + """ annotations: Dict[str, str] + """ + Annotations for the alert, used to provide additional information about the alert. + """ state: Optional[AlertState] + """ + Current state of the alert. Possible states are `inactive`, `pending`, and `firing`. + """ + + preconfigured_data: Optional[PreconfiguredAlertData] + """ + Contains additional data for preconfigured alerts, such as the rule ID, display name, and description. Only present if the alert is preconfigured. + """ @dataclass @@ -996,6 +1048,18 @@ class RegionalApiDisableAlertManagerRequest: """ +@dataclass +class RegionalApiDisableAlertRulesRequest: + region: Optional[ScwRegion] + """ + Region to target. If none is passed will use default region from the config. + """ + + project_id: Optional[str] + + rule_ids: Optional[List[str]] + + @dataclass class RegionalApiDisableManagedAlertsRequest: """ @@ -1030,6 +1094,18 @@ class RegionalApiEnableAlertManagerRequest: """ +@dataclass +class RegionalApiEnableAlertRulesRequest: + region: Optional[ScwRegion] + """ + Region to target. If none is passed will use default region from the config. + """ + + project_id: Optional[str] + + rule_ids: Optional[List[str]] + + @dataclass class RegionalApiEnableManagedAlertsRequest: """ @@ -1150,7 +1226,7 @@ class RegionalApiListAlertsRequest: state: Optional[AlertState] """ - 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. + Valid values to filter on are `inactive`, `pending` and `firing`. If omitted, no filtering is applied on alert states. Other filters may still apply. """ diff --git a/scaleway/scaleway/cockpit/v1/__init__.py b/scaleway/scaleway/cockpit/v1/__init__.py index abac82780..6d028da8d 100644 --- a/scaleway/scaleway/cockpit/v1/__init__.py +++ b/scaleway/scaleway/cockpit/v1/__init__.py @@ -11,6 +11,7 @@ from .types import PlanName from .types import TokenScope from .types import UsageUnit +from .types import PreconfiguredAlertData from .types import ContactPointEmail from .types import GetConfigResponseRetention from .types import Alert @@ -49,8 +50,10 @@ from .types import RegionalApiDeleteDataSourceRequest from .types import RegionalApiDeleteTokenRequest from .types import RegionalApiDisableAlertManagerRequest +from .types import RegionalApiDisableAlertRulesRequest from .types import RegionalApiDisableManagedAlertsRequest from .types import RegionalApiEnableAlertManagerRequest +from .types import RegionalApiEnableAlertRulesRequest from .types import RegionalApiEnableManagedAlertsRequest from .types import RegionalApiGetAlertManagerRequest from .types import RegionalApiGetConfigRequest @@ -80,6 +83,7 @@ "PlanName", "TokenScope", "UsageUnit", + "PreconfiguredAlertData", "ContactPointEmail", "GetConfigResponseRetention", "Alert", @@ -118,8 +122,10 @@ "RegionalApiDeleteDataSourceRequest", "RegionalApiDeleteTokenRequest", "RegionalApiDisableAlertManagerRequest", + "RegionalApiDisableAlertRulesRequest", "RegionalApiDisableManagedAlertsRequest", "RegionalApiEnableAlertManagerRequest", + "RegionalApiEnableAlertRulesRequest", "RegionalApiEnableManagedAlertsRequest", "RegionalApiGetAlertManagerRequest", "RegionalApiGetConfigRequest", diff --git a/scaleway/scaleway/cockpit/v1/api.py b/scaleway/scaleway/cockpit/v1/api.py index 091284f5b..d77c642af 100644 --- a/scaleway/scaleway/cockpit/v1/api.py +++ b/scaleway/scaleway/cockpit/v1/api.py @@ -47,8 +47,10 @@ RegionalApiCreateTokenRequest, RegionalApiDeleteContactPointRequest, RegionalApiDisableAlertManagerRequest, + RegionalApiDisableAlertRulesRequest, RegionalApiDisableManagedAlertsRequest, RegionalApiEnableAlertManagerRequest, + RegionalApiEnableAlertRulesRequest, RegionalApiEnableManagedAlertsRequest, RegionalApiTriggerTestAlertRequest, RegionalApiUpdateContactPointRequest, @@ -83,8 +85,10 @@ marshal_RegionalApiCreateTokenRequest, marshal_RegionalApiDeleteContactPointRequest, marshal_RegionalApiDisableAlertManagerRequest, + marshal_RegionalApiDisableAlertRulesRequest, marshal_RegionalApiDisableManagedAlertsRequest, marshal_RegionalApiEnableAlertManagerRequest, + marshal_RegionalApiEnableAlertRulesRequest, marshal_RegionalApiEnableManagedAlertsRequest, marshal_RegionalApiTriggerTestAlertRequest, marshal_RegionalApiUpdateContactPointRequest, @@ -1446,7 +1450,7 @@ def list_alerts( :param project_id: Project ID to filter for, only alerts from this Project will be returned. :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. :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. - :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. + :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. :return: :class:`ListAlertsResponse ` Usage: @@ -1549,6 +1553,82 @@ def disable_managed_alerts( self._throw_on_error(res) return unmarshal_AlertManager(res.json()) + def enable_alert_rules( + self, + *, + region: Optional[ScwRegion] = None, + project_id: Optional[str] = None, + rule_ids: Optional[List[str]] = None, + ) -> None: + """ + Enable preconfigured alert rules. Enable alert rules from the list of available preconfigured rules. + :param region: Region to target. If none is passed will use default region from the config. + :param project_id: + :param rule_ids: + + Usage: + :: + + result = api.enable_alert_rules() + """ + + param_region = validate_path_param( + "region", region or self.client.default_region + ) + + res = self._request( + "POST", + f"/cockpit/v1/regions/{param_region}/alert-manager/enable-alert-rules", + body=marshal_RegionalApiEnableAlertRulesRequest( + RegionalApiEnableAlertRulesRequest( + region=region, + project_id=project_id, + rule_ids=rule_ids, + ), + self.client, + ), + ) + + self._throw_on_error(res) + + def disable_alert_rules( + self, + *, + region: Optional[ScwRegion] = None, + project_id: Optional[str] = None, + rule_ids: Optional[List[str]] = None, + ) -> None: + """ + Disable preconfigured alert rules. Disable alert rules from the list of available preconfigured rules. + :param region: Region to target. If none is passed will use default region from the config. + :param project_id: + :param rule_ids: + + Usage: + :: + + result = api.disable_alert_rules() + """ + + param_region = validate_path_param( + "region", region or self.client.default_region + ) + + res = self._request( + "POST", + f"/cockpit/v1/regions/{param_region}/alert-manager/disable-alert-rules", + body=marshal_RegionalApiDisableAlertRulesRequest( + RegionalApiDisableAlertRulesRequest( + region=region, + project_id=project_id, + rule_ids=rule_ids, + ), + self.client, + ), + ) + + self._throw_on_error(res) + def trigger_test_alert( self, *, diff --git a/scaleway/scaleway/cockpit/v1/marshalling.py b/scaleway/scaleway/cockpit/v1/marshalling.py index 65c895435..0f4e111fb 100644 --- a/scaleway/scaleway/cockpit/v1/marshalling.py +++ b/scaleway/scaleway/cockpit/v1/marshalling.py @@ -22,6 +22,7 @@ GetConfigResponseRetention, GetConfigResponse, Grafana, + PreconfiguredAlertData, Alert, ListAlertsResponse, ListContactPointsResponse, @@ -41,8 +42,10 @@ RegionalApiCreateTokenRequest, RegionalApiDeleteContactPointRequest, RegionalApiDisableAlertManagerRequest, + RegionalApiDisableAlertRulesRequest, RegionalApiDisableManagedAlertsRequest, RegionalApiEnableAlertManagerRequest, + RegionalApiEnableAlertRulesRequest, RegionalApiEnableManagedAlertsRequest, RegionalApiTriggerTestAlertRequest, RegionalApiUpdateContactPointRequest, @@ -415,6 +418,29 @@ def unmarshal_Grafana(data: Any) -> Grafana: return Grafana(**args) +def unmarshal_PreconfiguredAlertData(data: Any) -> PreconfiguredAlertData: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'PreconfiguredAlertData' failed as data isn't a dictionary." + ) + + args: Dict[str, Any] = {} + + field = data.get("preconfigured_rule_id", None) + if field is not None: + args["preconfigured_rule_id"] = field + + field = data.get("display_name", None) + if field is not None: + args["display_name"] = field + + field = data.get("display_description", None) + if field is not None: + args["display_description"] = field + + return PreconfiguredAlertData(**args) + + def unmarshal_Alert(data: Any) -> Alert: if not isinstance(data, dict): raise TypeError( @@ -457,6 +483,12 @@ def unmarshal_Alert(data: Any) -> Alert: else: args["state"] = None + field = data.get("preconfigured_data", None) + if field is not None: + args["preconfigured_data"] = unmarshal_PreconfiguredAlertData(field) + else: + args["preconfigured_data"] = None + return Alert(**args) @@ -868,6 +900,21 @@ def marshal_RegionalApiDisableAlertManagerRequest( return output +def marshal_RegionalApiDisableAlertRulesRequest( + request: RegionalApiDisableAlertRulesRequest, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.project_id is not None: + output["project_id"] = request.project_id or defaults.default_project_id + + if request.rule_ids is not None: + output["rule_ids"] = request.rule_ids + + return output + + def marshal_RegionalApiDisableManagedAlertsRequest( request: RegionalApiDisableManagedAlertsRequest, defaults: ProfileDefaults, @@ -892,6 +939,21 @@ def marshal_RegionalApiEnableAlertManagerRequest( return output +def marshal_RegionalApiEnableAlertRulesRequest( + request: RegionalApiEnableAlertRulesRequest, + defaults: ProfileDefaults, +) -> Dict[str, Any]: + output: Dict[str, Any] = {} + + if request.project_id is not None: + output["project_id"] = request.project_id or defaults.default_project_id + + if request.rule_ids is not None: + output["rule_ids"] = request.rule_ids + + return output + + def marshal_RegionalApiEnableManagedAlertsRequest( request: RegionalApiEnableManagedAlertsRequest, defaults: ProfileDefaults, diff --git a/scaleway/scaleway/cockpit/v1/types.py b/scaleway/scaleway/cockpit/v1/types.py index 21885a85d..ce0efd821 100644 --- a/scaleway/scaleway/cockpit/v1/types.py +++ b/scaleway/scaleway/cockpit/v1/types.py @@ -127,6 +127,28 @@ def __str__(self) -> str: return str(self.value) +@dataclass +class PreconfiguredAlertData: + """ + Structure for additional data relative to preconfigured alerts. + """ + + preconfigured_rule_id: str + """ + ID of the preconfigured rule if the alert is preconfigured. + """ + + display_name: str + """ + Human readable name of the alert. + """ + + display_description: str + """ + Human readable description of the alert. + """ + + @dataclass class ContactPointEmail: to: str @@ -143,24 +165,54 @@ class GetConfigResponseRetention: @dataclass class Alert: + """ + Structure representing an alert. + """ + region: ScwRegion """ - Region to target. If none is passed will use default region from the config. + The region in which the alert is defined. """ preconfigured: bool + """ + Indicates if the alert is preconfigured or custom. + """ name: str + """ + Name of the alert. + """ rule: str + """ + Rule defining the alert condition. + """ duration: str + """ + Duration for which the alert must be active before firing. The format of this duration follows the prometheus duration format. + """ enabled: bool + """ + Indicates if the alert is enabled or disabled. Only preconfigured alerts can be disabled. + """ annotations: Dict[str, str] + """ + Annotations for the alert, used to provide additional information about the alert. + """ state: Optional[AlertState] + """ + Current state of the alert. Possible states are `inactive`, `pending`, and `firing`. + """ + + preconfigured_data: Optional[PreconfiguredAlertData] + """ + Contains additional data for preconfigured alerts, such as the rule ID, display name, and description. Only present if the alert is preconfigured. + """ @dataclass @@ -996,6 +1048,18 @@ class RegionalApiDisableAlertManagerRequest: """ +@dataclass +class RegionalApiDisableAlertRulesRequest: + region: Optional[ScwRegion] + """ + Region to target. If none is passed will use default region from the config. + """ + + project_id: Optional[str] + + rule_ids: Optional[List[str]] + + @dataclass class RegionalApiDisableManagedAlertsRequest: """ @@ -1030,6 +1094,18 @@ class RegionalApiEnableAlertManagerRequest: """ +@dataclass +class RegionalApiEnableAlertRulesRequest: + region: Optional[ScwRegion] + """ + Region to target. If none is passed will use default region from the config. + """ + + project_id: Optional[str] + + rule_ids: Optional[List[str]] + + @dataclass class RegionalApiEnableManagedAlertsRequest: """ @@ -1150,7 +1226,7 @@ class RegionalApiListAlertsRequest: state: Optional[AlertState] """ - 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. + Valid values to filter on are `inactive`, `pending` and `firing`. If omitted, no filtering is applied on alert states. Other filters may still apply. """