Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions scaleway-async/scaleway_async/cockpit/v1/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -80,6 +83,7 @@
"PlanName",
"TokenScope",
"UsageUnit",
"PreconfiguredAlertData",
"ContactPointEmail",
"GetConfigResponseRetention",
"Alert",
Expand Down Expand Up @@ -118,8 +122,10 @@
"RegionalApiDeleteDataSourceRequest",
"RegionalApiDeleteTokenRequest",
"RegionalApiDisableAlertManagerRequest",
"RegionalApiDisableAlertRulesRequest",
"RegionalApiDisableManagedAlertsRequest",
"RegionalApiEnableAlertManagerRequest",
"RegionalApiEnableAlertRulesRequest",
"RegionalApiEnableManagedAlertsRequest",
"RegionalApiGetAlertManagerRequest",
"RegionalApiGetConfigRequest",
Expand Down
82 changes: 81 additions & 1 deletion scaleway-async/scaleway_async/cockpit/v1/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@
RegionalApiCreateTokenRequest,
RegionalApiDeleteContactPointRequest,
RegionalApiDisableAlertManagerRequest,
RegionalApiDisableAlertRulesRequest,
RegionalApiDisableManagedAlertsRequest,
RegionalApiEnableAlertManagerRequest,
RegionalApiEnableAlertRulesRequest,
RegionalApiEnableManagedAlertsRequest,
RegionalApiTriggerTestAlertRequest,
RegionalApiUpdateContactPointRequest,
Expand Down Expand Up @@ -83,8 +85,10 @@
marshal_RegionalApiCreateTokenRequest,
marshal_RegionalApiDeleteContactPointRequest,
marshal_RegionalApiDisableAlertManagerRequest,
marshal_RegionalApiDisableAlertRulesRequest,
marshal_RegionalApiDisableManagedAlertsRequest,
marshal_RegionalApiEnableAlertManagerRequest,
marshal_RegionalApiEnableAlertRulesRequest,
marshal_RegionalApiEnableManagedAlertsRequest,
marshal_RegionalApiTriggerTestAlertRequest,
marshal_RegionalApiUpdateContactPointRequest,
Expand Down Expand Up @@ -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 <ListAlertsResponse>`

Usage:
Expand Down Expand Up @@ -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,
*,
Expand Down
62 changes: 62 additions & 0 deletions scaleway-async/scaleway_async/cockpit/v1/marshalling.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
GetConfigResponseRetention,
GetConfigResponse,
Grafana,
PreconfiguredAlertData,
Alert,
ListAlertsResponse,
ListContactPointsResponse,
Expand All @@ -41,8 +42,10 @@
RegionalApiCreateTokenRequest,
RegionalApiDeleteContactPointRequest,
RegionalApiDisableAlertManagerRequest,
RegionalApiDisableAlertRulesRequest,
RegionalApiDisableManagedAlertsRequest,
RegionalApiEnableAlertManagerRequest,
RegionalApiEnableAlertRulesRequest,
RegionalApiEnableManagedAlertsRequest,
RegionalApiTriggerTestAlertRequest,
RegionalApiUpdateContactPointRequest,
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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)


Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down
80 changes: 78 additions & 2 deletions scaleway-async/scaleway_async/cockpit/v1/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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:
"""
Expand Down Expand Up @@ -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:
"""
Expand Down Expand Up @@ -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.
"""


Expand Down
Loading