Skip to content

Commit f7c4866

Browse files
Generator: Update SDK /services/dns (#670)
* Generate dns * chore(doc): add changelog entries --------- Co-authored-by: Ruben Hoenle <Ruben.Hoenle@stackit.cloud>
1 parent e5330dd commit f7c4866

12 files changed

+414
-0
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
- **Breaking Change:** The region is no longer specified within the client configuration. Instead, the region must be passed as a parameter to any region-specific request.
77
- `ske`: [v0.4.0](services/ske/CHANGELOG.md#v040-2025-02-27)
88
- `Nodepool`: `maximum` and `minimum` must be <= 1000
9+
- `dns`: [v0.3.0](services/dns/CHANGELOG.md#v030-2025-02-27)
10+
- Add support for extensions
911

1012
## Release (2025-02-11)
1113

services/dns/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## v0.3.0 (2025-02-27)
2+
3+
- Add support for extensions
4+
15
## v0.2.1 (2025-01-14)
26

37
- **Bugfix**: `configuration.py` region adjustment was missing

services/dns/src/stackit/dns/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040
from stackit.dns.models.create_record_set_payload import CreateRecordSetPayload
4141
from stackit.dns.models.create_zone_payload import CreateZonePayload
4242
from stackit.dns.models.delete_label_response import DeleteLabelResponse
43+
from stackit.dns.models.domain_extensions import DomainExtensions
44+
from stackit.dns.models.domain_observability_extension import (
45+
DomainObservabilityExtension,
46+
)
4347
from stackit.dns.models.error_message import ErrorMessage
4448
from stackit.dns.models.export_record_sets_payload import ExportRecordSetsPayload
4549
from stackit.dns.models.import_record_sets_payload import ImportRecordSetsPayload
@@ -65,8 +69,10 @@
6569
from stackit.dns.models.validate_move_code_payload import ValidateMoveCodePayload
6670
from stackit.dns.models.zone import Zone
6771
from stackit.dns.models.zone_data_exchange import ZoneDataExchange
72+
from stackit.dns.models.zone_extensions import ZoneExtensions
6873
from stackit.dns.models.zone_models_import_record_model import (
6974
ZoneModelsImportRecordModel,
7075
)
7176
from stackit.dns.models.zone_models_import_zone_json import ZoneModelsImportZoneJson
77+
from stackit.dns.models.zone_observability_extension import ZoneObservabilityExtension
7278
from stackit.dns.models.zone_response import ZoneResponse

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,7 @@ def create_move_code(
673673
_response_types_map: Dict[str, Optional[str]] = {
674674
"200": "MoveCodeResponse",
675675
"400": "Message",
676+
"409": "Message",
676677
"502": "Message",
677678
}
678679
response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -739,6 +740,7 @@ def create_move_code_with_http_info(
739740
_response_types_map: Dict[str, Optional[str]] = {
740741
"200": "MoveCodeResponse",
741742
"400": "Message",
743+
"409": "Message",
742744
"502": "Message",
743745
}
744746
response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -805,6 +807,7 @@ def create_move_code_without_preload_content(
805807
_response_types_map: Dict[str, Optional[str]] = {
806808
"200": "MoveCodeResponse",
807809
"400": "Message",
810+
"409": "Message",
808811
"502": "Message",
809812
}
810813
response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
from stackit.dns.models.create_record_set_payload import CreateRecordSetPayload
2222
from stackit.dns.models.create_zone_payload import CreateZonePayload
2323
from stackit.dns.models.delete_label_response import DeleteLabelResponse
24+
from stackit.dns.models.domain_extensions import DomainExtensions
25+
from stackit.dns.models.domain_observability_extension import (
26+
DomainObservabilityExtension,
27+
)
2428
from stackit.dns.models.error_message import ErrorMessage
2529
from stackit.dns.models.export_record_sets_payload import ExportRecordSetsPayload
2630
from stackit.dns.models.import_record_sets_payload import ImportRecordSetsPayload
@@ -46,8 +50,10 @@
4650
from stackit.dns.models.validate_move_code_payload import ValidateMoveCodePayload
4751
from stackit.dns.models.zone import Zone
4852
from stackit.dns.models.zone_data_exchange import ZoneDataExchange
53+
from stackit.dns.models.zone_extensions import ZoneExtensions
4954
from stackit.dns.models.zone_models_import_record_model import (
5055
ZoneModelsImportRecordModel,
5156
)
5257
from stackit.dns.models.zone_models_import_zone_json import ZoneModelsImportZoneJson
58+
from stackit.dns.models.zone_observability_extension import ZoneObservabilityExtension
5359
from stackit.dns.models.zone_response import ZoneResponse

services/dns/src/stackit/dns/models/create_zone_payload.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
)
2929
from typing_extensions import Annotated, Self
3030

31+
from stackit.dns.models.zone_extensions import ZoneExtensions
32+
3133

3234
class CreateZonePayload(BaseModel):
3335
"""
@@ -52,6 +54,7 @@ class CreateZonePayload(BaseModel):
5254
expire_time: Optional[Annotated[int, Field(strict=True, ge=60)]] = Field(
5355
default=None, description="expire time", alias="expireTime"
5456
)
57+
extensions: Optional[ZoneExtensions] = Field(default=None, description="optional extensions")
5558
is_reverse_zone: Optional[StrictBool] = Field(
5659
default=False, description="if the zone is a reverse zone or not", alias="isReverseZone"
5760
)
@@ -74,6 +77,7 @@ class CreateZonePayload(BaseModel):
7477
"description",
7578
"dnsName",
7679
"expireTime",
80+
"extensions",
7781
"isReverseZone",
7882
"name",
7983
"negativeCache",
@@ -130,6 +134,9 @@ def to_dict(self) -> Dict[str, Any]:
130134
exclude=excluded_fields,
131135
exclude_none=True,
132136
)
137+
# override the default output from pydantic by calling `to_dict()` of extensions
138+
if self.extensions:
139+
_dict["extensions"] = self.extensions.to_dict()
133140
return _dict
134141

135142
@classmethod
@@ -151,6 +158,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
151158
"description": obj.get("description"),
152159
"dnsName": obj.get("dnsName"),
153160
"expireTime": obj.get("expireTime"),
161+
"extensions": (
162+
ZoneExtensions.from_dict(obj["extensions"]) if obj.get("extensions") is not None else None
163+
),
154164
"isReverseZone": obj.get("isReverseZone") if obj.get("isReverseZone") is not None else False,
155165
"name": obj.get("name"),
156166
"negativeCache": obj.get("negativeCache"),
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# coding: utf-8
2+
3+
"""
4+
STACKIT DNS API
5+
6+
This api provides dns
7+
8+
The version of the OpenAPI document: 1.0
9+
Contact: dns@stackit.cloud
10+
Generated by OpenAPI Generator (https://openapi-generator.tech)
11+
12+
Do not edit the class manually.
13+
""" # noqa: E501 docstring might be too long
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 Self
23+
24+
from stackit.dns.models.domain_observability_extension import (
25+
DomainObservabilityExtension,
26+
)
27+
28+
29+
class DomainExtensions(BaseModel):
30+
"""
31+
DomainExtensions
32+
"""
33+
34+
observability_extension: Optional[DomainObservabilityExtension] = Field(
35+
default=None, alias="observabilityExtension"
36+
)
37+
__properties: ClassVar[List[str]] = ["observabilityExtension"]
38+
39+
model_config = ConfigDict(
40+
populate_by_name=True,
41+
validate_assignment=True,
42+
protected_namespaces=(),
43+
)
44+
45+
def to_str(self) -> str:
46+
"""Returns the string representation of the model using alias"""
47+
return pprint.pformat(self.model_dump(by_alias=True))
48+
49+
def to_json(self) -> str:
50+
"""Returns the JSON representation of the model using alias"""
51+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
52+
return json.dumps(self.to_dict())
53+
54+
@classmethod
55+
def from_json(cls, json_str: str) -> Optional[Self]:
56+
"""Create an instance of DomainExtensions from a JSON string"""
57+
return cls.from_dict(json.loads(json_str))
58+
59+
def to_dict(self) -> Dict[str, Any]:
60+
"""Return the dictionary representation of the model using alias.
61+
62+
This has the following differences from calling pydantic's
63+
`self.model_dump(by_alias=True)`:
64+
65+
* `None` is only added to the output dict for nullable fields that
66+
were set at model initialization. Other fields with value `None`
67+
are ignored.
68+
"""
69+
excluded_fields: Set[str] = set([])
70+
71+
_dict = self.model_dump(
72+
by_alias=True,
73+
exclude=excluded_fields,
74+
exclude_none=True,
75+
)
76+
# override the default output from pydantic by calling `to_dict()` of observability_extension
77+
if self.observability_extension:
78+
_dict["observabilityExtension"] = self.observability_extension.to_dict()
79+
return _dict
80+
81+
@classmethod
82+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
83+
"""Create an instance of DomainExtensions from a dict"""
84+
if obj is None:
85+
return None
86+
87+
if not isinstance(obj, dict):
88+
return cls.model_validate(obj)
89+
90+
_obj = cls.model_validate(
91+
{
92+
"observabilityExtension": (
93+
DomainObservabilityExtension.from_dict(obj["observabilityExtension"])
94+
if obj.get("observabilityExtension") is not None
95+
else None
96+
)
97+
}
98+
)
99+
return _obj
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# coding: utf-8
2+
3+
"""
4+
STACKIT DNS API
5+
6+
This api provides dns
7+
8+
The version of the OpenAPI document: 1.0
9+
Contact: dns@stackit.cloud
10+
Generated by OpenAPI Generator (https://openapi-generator.tech)
11+
12+
Do not edit the class manually.
13+
""" # noqa: E501 docstring might be too long
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, StrictStr
22+
from typing_extensions import Self
23+
24+
25+
class DomainObservabilityExtension(BaseModel):
26+
"""
27+
DomainObservabilityExtension
28+
"""
29+
30+
observability_instance_id: StrictStr = Field(alias="observabilityInstanceId")
31+
state: Optional[StrictStr] = None
32+
__properties: ClassVar[List[str]] = ["observabilityInstanceId", "state"]
33+
34+
model_config = ConfigDict(
35+
populate_by_name=True,
36+
validate_assignment=True,
37+
protected_namespaces=(),
38+
)
39+
40+
def to_str(self) -> str:
41+
"""Returns the string representation of the model using alias"""
42+
return pprint.pformat(self.model_dump(by_alias=True))
43+
44+
def to_json(self) -> str:
45+
"""Returns the JSON representation of the model using alias"""
46+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
47+
return json.dumps(self.to_dict())
48+
49+
@classmethod
50+
def from_json(cls, json_str: str) -> Optional[Self]:
51+
"""Create an instance of DomainObservabilityExtension from a JSON string"""
52+
return cls.from_dict(json.loads(json_str))
53+
54+
def to_dict(self) -> Dict[str, Any]:
55+
"""Return the dictionary representation of the model using alias.
56+
57+
This has the following differences from calling pydantic's
58+
`self.model_dump(by_alias=True)`:
59+
60+
* `None` is only added to the output dict for nullable fields that
61+
were set at model initialization. Other fields with value `None`
62+
are ignored.
63+
"""
64+
excluded_fields: Set[str] = set([])
65+
66+
_dict = self.model_dump(
67+
by_alias=True,
68+
exclude=excluded_fields,
69+
exclude_none=True,
70+
)
71+
return _dict
72+
73+
@classmethod
74+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
75+
"""Create an instance of DomainObservabilityExtension from a dict"""
76+
if obj is None:
77+
return None
78+
79+
if not isinstance(obj, dict):
80+
return cls.model_validate(obj)
81+
82+
_obj = cls.model_validate(
83+
{"observabilityInstanceId": obj.get("observabilityInstanceId"), "state": obj.get("state")}
84+
)
85+
return _obj

services/dns/src/stackit/dns/models/partial_update_zone_payload.py

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

24+
from stackit.dns.models.zone_extensions import ZoneExtensions
25+
2426

2527
class PartialUpdateZonePayload(BaseModel):
2628
"""
@@ -42,6 +44,7 @@ class PartialUpdateZonePayload(BaseModel):
4244
expire_time: Optional[Annotated[int, Field(strict=True, ge=60)]] = Field(
4345
default=None, description="expire time", alias="expireTime"
4446
)
47+
extensions: Optional[ZoneExtensions] = Field(default=None, description="optional extensions")
4548
name: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=63)]] = Field(
4649
default=None, description="user given name"
4750
)
@@ -61,6 +64,7 @@ class PartialUpdateZonePayload(BaseModel):
6164
"defaultTTL",
6265
"description",
6366
"expireTime",
67+
"extensions",
6468
"name",
6569
"negativeCache",
6670
"primaries",
@@ -105,6 +109,9 @@ def to_dict(self) -> Dict[str, Any]:
105109
exclude=excluded_fields,
106110
exclude_none=True,
107111
)
112+
# override the default output from pydantic by calling `to_dict()` of extensions
113+
if self.extensions:
114+
_dict["extensions"] = self.extensions.to_dict()
108115
return _dict
109116

110117
@classmethod
@@ -125,6 +132,9 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
125132
"defaultTTL": obj.get("defaultTTL"),
126133
"description": obj.get("description"),
127134
"expireTime": obj.get("expireTime"),
135+
"extensions": (
136+
ZoneExtensions.from_dict(obj["extensions"]) if obj.get("extensions") is not None else None
137+
),
128138
"name": obj.get("name"),
129139
"negativeCache": obj.get("negativeCache"),
130140
"primaries": obj.get("primaries"),

0 commit comments

Comments
 (0)