Skip to content

Commit 2e747b4

Browse files
Generate observability
1 parent 23b3304 commit 2e747b4

11 files changed

+282
-40
lines changed

services/observability/src/stackit/observability/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
"CreateInstancePayload",
5757
"CreateInstanceResponse",
5858
"CreateLogsAlertgroupsPayload",
59+
"CreateLogsAlertgroupsPayloadRulesInner",
5960
"CreateScrapeConfigPayload",
6061
"CreateScrapeConfigPayloadBasicAuth",
6162
"CreateScrapeConfigPayloadHttpSdConfigsInner",
@@ -95,6 +96,7 @@
9596
"ModelGlobal",
9697
"OAuth2",
9798
"OpsgenieConfig",
99+
"PartialUpdateAlertrulesRequestInner",
98100
"PermissionDenied",
99101
"Plan",
100102
"PlanModel",
@@ -224,6 +226,9 @@
224226
from stackit.observability.models.create_logs_alertgroups_payload import (
225227
CreateLogsAlertgroupsPayload as CreateLogsAlertgroupsPayload,
226228
)
229+
from stackit.observability.models.create_logs_alertgroups_payload_rules_inner import (
230+
CreateLogsAlertgroupsPayloadRulesInner as CreateLogsAlertgroupsPayloadRulesInner,
231+
)
227232
from stackit.observability.models.create_scrape_config_payload import (
228233
CreateScrapeConfigPayload as CreateScrapeConfigPayload,
229234
)
@@ -317,6 +322,9 @@
317322
from stackit.observability.models.opsgenie_config import (
318323
OpsgenieConfig as OpsgenieConfig,
319324
)
325+
from stackit.observability.models.partial_update_alertrules_request_inner import (
326+
PartialUpdateAlertrulesRequestInner as PartialUpdateAlertrulesRequestInner,
327+
)
320328
from stackit.observability.models.permission_denied import (
321329
PermissionDenied as PermissionDenied,
322330
)

services/observability/src/stackit/observability/api/default_api.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@
9595
)
9696
from stackit.observability.models.logs_config_response import LogsConfigResponse
9797
from stackit.observability.models.message import Message
98+
from stackit.observability.models.partial_update_alertrules_request_inner import (
99+
PartialUpdateAlertrulesRequestInner,
100+
)
98101
from stackit.observability.models.plans_response import PlansResponse
99102
from stackit.observability.models.receiver import Receiver
100103
from stackit.observability.models.scrape_configs_response import ScrapeConfigsResponse
@@ -118,9 +121,6 @@
118121
from stackit.observability.models.update_alertgroups_request_inner import (
119122
UpdateAlertgroupsRequestInner,
120123
)
121-
from stackit.observability.models.update_alertgroups_request_inner_rules_inner import (
122-
UpdateAlertgroupsRequestInnerRulesInner,
123-
)
124124
from stackit.observability.models.update_credentials_remote_write_config_payload import (
125125
UpdateCredentialsRemoteWriteConfigPayload,
126126
)
@@ -12509,7 +12509,7 @@ def partial_update_alertrules(
1250912509
group_name: StrictStr,
1251012510
instance_id: StrictStr,
1251112511
project_id: StrictStr,
12512-
update_alertgroups_request_inner_rules_inner: List[UpdateAlertgroupsRequestInnerRulesInner],
12512+
partial_update_alertrules_request_inner: List[PartialUpdateAlertrulesRequestInner],
1251312513
_request_timeout: Union[
1251412514
None,
1251512515
Annotated[StrictFloat, Field(gt=0)],
@@ -12530,8 +12530,8 @@ def partial_update_alertrules(
1253012530
:type instance_id: str
1253112531
:param project_id: (required)
1253212532
:type project_id: str
12533-
:param update_alertgroups_request_inner_rules_inner: (required)
12534-
:type update_alertgroups_request_inner_rules_inner: List[UpdateAlertgroupsRequestInnerRulesInner]
12533+
:param partial_update_alertrules_request_inner: (required)
12534+
:type partial_update_alertrules_request_inner: List[PartialUpdateAlertrulesRequestInner]
1253512535
:param _request_timeout: timeout setting for this request. If one
1253612536
number provided, it will be total request
1253712537
timeout. It can also be a pair (tuple) of
@@ -12558,7 +12558,7 @@ def partial_update_alertrules(
1255812558
group_name=group_name,
1255912559
instance_id=instance_id,
1256012560
project_id=project_id,
12561-
update_alertgroups_request_inner_rules_inner=update_alertgroups_request_inner_rules_inner,
12561+
partial_update_alertrules_request_inner=partial_update_alertrules_request_inner,
1256212562
_request_auth=_request_auth,
1256312563
_content_type=_content_type,
1256412564
_headers=_headers,
@@ -12583,7 +12583,7 @@ def partial_update_alertrules_with_http_info(
1258312583
group_name: StrictStr,
1258412584
instance_id: StrictStr,
1258512585
project_id: StrictStr,
12586-
update_alertgroups_request_inner_rules_inner: List[UpdateAlertgroupsRequestInnerRulesInner],
12586+
partial_update_alertrules_request_inner: List[PartialUpdateAlertrulesRequestInner],
1258712587
_request_timeout: Union[
1258812588
None,
1258912589
Annotated[StrictFloat, Field(gt=0)],
@@ -12604,8 +12604,8 @@ def partial_update_alertrules_with_http_info(
1260412604
:type instance_id: str
1260512605
:param project_id: (required)
1260612606
:type project_id: str
12607-
:param update_alertgroups_request_inner_rules_inner: (required)
12608-
:type update_alertgroups_request_inner_rules_inner: List[UpdateAlertgroupsRequestInnerRulesInner]
12607+
:param partial_update_alertrules_request_inner: (required)
12608+
:type partial_update_alertrules_request_inner: List[PartialUpdateAlertrulesRequestInner]
1260912609
:param _request_timeout: timeout setting for this request. If one
1261012610
number provided, it will be total request
1261112611
timeout. It can also be a pair (tuple) of
@@ -12632,7 +12632,7 @@ def partial_update_alertrules_with_http_info(
1263212632
group_name=group_name,
1263312633
instance_id=instance_id,
1263412634
project_id=project_id,
12635-
update_alertgroups_request_inner_rules_inner=update_alertgroups_request_inner_rules_inner,
12635+
partial_update_alertrules_request_inner=partial_update_alertrules_request_inner,
1263612636
_request_auth=_request_auth,
1263712637
_content_type=_content_type,
1263812638
_headers=_headers,
@@ -12657,7 +12657,7 @@ def partial_update_alertrules_without_preload_content(
1265712657
group_name: StrictStr,
1265812658
instance_id: StrictStr,
1265912659
project_id: StrictStr,
12660-
update_alertgroups_request_inner_rules_inner: List[UpdateAlertgroupsRequestInnerRulesInner],
12660+
partial_update_alertrules_request_inner: List[PartialUpdateAlertrulesRequestInner],
1266112661
_request_timeout: Union[
1266212662
None,
1266312663
Annotated[StrictFloat, Field(gt=0)],
@@ -12678,8 +12678,8 @@ def partial_update_alertrules_without_preload_content(
1267812678
:type instance_id: str
1267912679
:param project_id: (required)
1268012680
:type project_id: str
12681-
:param update_alertgroups_request_inner_rules_inner: (required)
12682-
:type update_alertgroups_request_inner_rules_inner: List[UpdateAlertgroupsRequestInnerRulesInner]
12681+
:param partial_update_alertrules_request_inner: (required)
12682+
:type partial_update_alertrules_request_inner: List[PartialUpdateAlertrulesRequestInner]
1268312683
:param _request_timeout: timeout setting for this request. If one
1268412684
number provided, it will be total request
1268512685
timeout. It can also be a pair (tuple) of
@@ -12706,7 +12706,7 @@ def partial_update_alertrules_without_preload_content(
1270612706
group_name=group_name,
1270712707
instance_id=instance_id,
1270812708
project_id=project_id,
12709-
update_alertgroups_request_inner_rules_inner=update_alertgroups_request_inner_rules_inner,
12709+
partial_update_alertrules_request_inner=partial_update_alertrules_request_inner,
1271012710
_request_auth=_request_auth,
1271112711
_content_type=_content_type,
1271212712
_headers=_headers,
@@ -12726,7 +12726,7 @@ def _partial_update_alertrules_serialize(
1272612726
group_name,
1272712727
instance_id,
1272812728
project_id,
12729-
update_alertgroups_request_inner_rules_inner,
12729+
partial_update_alertrules_request_inner,
1273012730
_request_auth,
1273112731
_content_type,
1273212732
_headers,
@@ -12736,7 +12736,7 @@ def _partial_update_alertrules_serialize(
1273612736
_host = None
1273712737

1273812738
_collection_formats: Dict[str, str] = {
12739-
"UpdateAlertgroupsRequestInnerRulesInner": "",
12739+
"PartialUpdateAlertrulesRequestInner": "",
1274012740
}
1274112741

1274212742
_path_params: Dict[str, str] = {}
@@ -12757,8 +12757,8 @@ def _partial_update_alertrules_serialize(
1275712757
# process the header parameters
1275812758
# process the form parameters
1275912759
# process the body parameter
12760-
if update_alertgroups_request_inner_rules_inner is not None:
12761-
_body_params = update_alertgroups_request_inner_rules_inner
12760+
if partial_update_alertrules_request_inner is not None:
12761+
_body_params = partial_update_alertrules_request_inner
1276212762

1276312763
# set the HTTP header `Accept`
1276412764
if "Accept" not in _header_params:

services/observability/src/stackit/observability/models/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@
7474
from stackit.observability.models.create_logs_alertgroups_payload import (
7575
CreateLogsAlertgroupsPayload,
7676
)
77+
from stackit.observability.models.create_logs_alertgroups_payload_rules_inner import (
78+
CreateLogsAlertgroupsPayloadRulesInner,
79+
)
7780
from stackit.observability.models.create_scrape_config_payload import (
7881
CreateScrapeConfigPayload,
7982
)
@@ -145,6 +148,9 @@
145148
from stackit.observability.models.model_global import ModelGlobal
146149
from stackit.observability.models.o_auth2 import OAuth2
147150
from stackit.observability.models.opsgenie_config import OpsgenieConfig
151+
from stackit.observability.models.partial_update_alertrules_request_inner import (
152+
PartialUpdateAlertrulesRequestInner,
153+
)
148154
from stackit.observability.models.permission_denied import PermissionDenied
149155
from stackit.observability.models.plan import Plan
150156
from stackit.observability.models.plan_model import PlanModel

services/observability/src/stackit/observability/models/create_alertgroups_payload.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
class CreateAlertgroupsPayload(BaseModel):
3030
"""
31-
Alert group that should be created or updated `Additional Validators:` * total config should not be bigger than 500000 characters as string since this the limitation of prometheus.
31+
Alert group that should be created or updated. `Additional Validators:` * total config should not be bigger than 500000 characters as string since this the limitation of prometheus.
3232
""" # noqa: E501
3333

3434
interval: Optional[Annotated[str, Field(min_length=2, strict=True, max_length=8)]] = Field(

services/observability/src/stackit/observability/models/create_logs_alertgroups_payload.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@
2121
from pydantic import BaseModel, ConfigDict, Field
2222
from typing_extensions import Annotated, Self
2323

24-
from stackit.observability.models.update_alertgroups_request_inner_rules_inner import (
25-
UpdateAlertgroupsRequestInnerRulesInner,
24+
from stackit.observability.models.create_logs_alertgroups_payload_rules_inner import (
25+
CreateLogsAlertgroupsPayloadRulesInner,
2626
)
2727

2828

2929
class CreateLogsAlertgroupsPayload(BaseModel):
3030
"""
31-
Alert group that should be created or updated `Additional Validators:` * total config should not be bigger than 500000 characters as string since this the limitation of prometheus.
31+
Alert group that should be created or updated. `Additional Validators:` * total config should not be bigger than 500000 characters as string since this the limitation of prometheus.
3232
""" # noqa: E501
3333

3434
interval: Optional[Annotated[str, Field(min_length=2, strict=True, max_length=8)]] = Field(
@@ -38,7 +38,7 @@ class CreateLogsAlertgroupsPayload(BaseModel):
3838
name: Annotated[str, Field(min_length=1, strict=True, max_length=200)] = Field(
3939
description="The name of the group. Must be unique. `Additional Validators:` * is the identifier and so unique * should only include the characters: a-zA-Z0-9-"
4040
)
41-
rules: List[UpdateAlertgroupsRequestInnerRulesInner] = Field(description="rules for the alert group")
41+
rules: List[CreateLogsAlertgroupsPayloadRulesInner] = Field(description="rules for the alert group")
4242
__properties: ClassVar[List[str]] = ["interval", "name", "rules"]
4343

4444
model_config = ConfigDict(
@@ -101,7 +101,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
101101
"interval": obj.get("interval") if obj.get("interval") is not None else "60s",
102102
"name": obj.get("name"),
103103
"rules": (
104-
[UpdateAlertgroupsRequestInnerRulesInner.from_dict(_item) for _item in obj["rules"]]
104+
[CreateLogsAlertgroupsPayloadRulesInner.from_dict(_item) for _item in obj["rules"]]
105105
if obj.get("rules") is not None
106106
else None
107107
),
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# coding: utf-8
2+
3+
"""
4+
STACKIT Observability API
5+
6+
API endpoints for Observability on STACKIT
7+
8+
The version of the OpenAPI document: 1.1.1
9+
10+
Generated by OpenAPI Generator (https://openapi-generator.tech)
11+
12+
Do not edit the class manually.
13+
""" # noqa: E501
14+
15+
from __future__ import annotations
16+
17+
import json
18+
import pprint
19+
from typing import Any, ClassVar, Dict, List, Optional, Set
20+
21+
from pydantic import BaseModel, ConfigDict, Field
22+
from typing_extensions import Annotated, Self
23+
24+
25+
class CreateLogsAlertgroupsPayloadRulesInner(BaseModel):
26+
"""
27+
Rule definition. Must be either an Alerting Rule (using 'alert') or a Recording Rule (using 'record'). `Additional Validators:` * total config (all alert groups/rules) should not be bigger than 500000 characters as string since this the limitation of prometheus.
28+
""" # noqa: E501
29+
30+
alert: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=200)]] = Field(
31+
default=None,
32+
description="The name of the alert. When this attribute is used, an Alerting Rule will be created. `Additional Validators:` * is the identifier and so unique in the group * should only include the characters: a-zA-Z0-9- * required when 'record' is not used in this rule, otherwise not allowed",
33+
)
34+
annotations: Optional[Dict[str, Any]] = Field(
35+
default=None,
36+
description="Map of key:value. Annotations to add to each alert. `Additional Validators:` * should not contain more than 5 keys * each key and value should not be longer than 200 characters * is not allowed to use when 'record' is used in this rule",
37+
)
38+
expr: Annotated[str, Field(min_length=1, strict=True, max_length=600)] = Field(
39+
description="The LogQL expression to evaluate to create alerts when using the 'alert' attribute in this rule, or to create a metric when using the 'record' attribute."
40+
)
41+
var_for: Optional[Annotated[str, Field(min_length=2, strict=True, max_length=8)]] = Field(
42+
default="0s",
43+
description="Alerts are considered firing once they have been returned for this long. Alerts which have not yet fired for long enough are considered pending. `Additional Validators:` * must be a valid time string * is not allowed to use when 'record' is used in this rule",
44+
alias="for",
45+
)
46+
labels: Optional[Dict[str, Any]] = Field(
47+
default=None,
48+
description="Map of key:value. Labels to add or overwrite for each alert or metric. `Additional Validators:` * should not contain more than 10 keys * each key and value should not be longer than 200 characters",
49+
)
50+
record: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=300)]] = Field(
51+
default=None,
52+
description="The name of the metric. When this attribute is used, an Recording Rule will be created. `Additional Validators:` * is the identifier and so unique in the group * should only include the characters: a-zA-Z0-9:_ * required when 'alert' is not used in this rule, otherwise not allowed",
53+
)
54+
__properties: ClassVar[List[str]] = ["alert", "annotations", "expr", "for", "labels", "record"]
55+
56+
model_config = ConfigDict(
57+
populate_by_name=True,
58+
validate_assignment=True,
59+
protected_namespaces=(),
60+
)
61+
62+
def to_str(self) -> str:
63+
"""Returns the string representation of the model using alias"""
64+
return pprint.pformat(self.model_dump(by_alias=True))
65+
66+
def to_json(self) -> str:
67+
"""Returns the JSON representation of the model using alias"""
68+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
69+
return json.dumps(self.to_dict())
70+
71+
@classmethod
72+
def from_json(cls, json_str: str) -> Optional[Self]:
73+
"""Create an instance of CreateLogsAlertgroupsPayloadRulesInner from a JSON string"""
74+
return cls.from_dict(json.loads(json_str))
75+
76+
def to_dict(self) -> Dict[str, Any]:
77+
"""Return the dictionary representation of the model using alias.
78+
79+
This has the following differences from calling pydantic's
80+
`self.model_dump(by_alias=True)`:
81+
82+
* `None` is only added to the output dict for nullable fields that
83+
were set at model initialization. Other fields with value `None`
84+
are ignored.
85+
"""
86+
excluded_fields: Set[str] = set([])
87+
88+
_dict = self.model_dump(
89+
by_alias=True,
90+
exclude=excluded_fields,
91+
exclude_none=True,
92+
)
93+
return _dict
94+
95+
@classmethod
96+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
97+
"""Create an instance of CreateLogsAlertgroupsPayloadRulesInner from a dict"""
98+
if obj is None:
99+
return None
100+
101+
if not isinstance(obj, dict):
102+
return cls.model_validate(obj)
103+
104+
_obj = cls.model_validate(
105+
{
106+
"alert": obj.get("alert"),
107+
"annotations": obj.get("annotations"),
108+
"expr": obj.get("expr"),
109+
"for": obj.get("for") if obj.get("for") is not None else "0s",
110+
"labels": obj.get("labels"),
111+
"record": obj.get("record"),
112+
}
113+
)
114+
return _obj

0 commit comments

Comments
 (0)