Skip to content

Commit 3ffe18c

Browse files
Generator: Update SDK /services/scf (#2621)
* Generate scf * Add changelogs Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> --------- Signed-off-by: Alexander Dahmen <alexander.dahmen@inovex.de> Co-authored-by: Alexander Dahmen <alexander.dahmen@inovex.de>
1 parent 4941e1f commit 3ffe18c

File tree

7 files changed

+257
-2
lines changed

7 files changed

+257
-2
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
## Release (2025-XX-XX)
1+
## Release (2025-12-08)
2+
- `scf`: [v0.3.0](services/scf/CHANGELOG.md#v030)
3+
- **Feature:** Add new model `IsolationSegment` and `IsolationSegmentsList`
24
- `cdn`: [v2.2.0](services/cdn/CHANGELOG.md#v220)
35
- **Feature:** Switch from `v1beta2` CDN API version to `v1` version.
46
- **Feature:** Add new function `GetLogsSearchFilters`

services/scf/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## v0.3.0
2+
- **Feature:** Add new model `IsolationSegment` and `IsolationSegmentsList`
3+
14
## v0.2.1
25
- **Bugfix:** Prevent year 0 timestamp issue
36

services/scf/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name = "stackit-scf"
33

44
[tool.poetry]
55
name = "stackit-scf"
6-
version = "v0.2.1"
6+
version = "v0.3.0"
77
authors = [
88
"STACKIT Developer Tools <developer-tools@stackit.cloud>",
99
]

services/scf/src/stackit/scf/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
"CreateSpacePayload",
3636
"CreateSpaceRolePayload",
3737
"ErrorResponse",
38+
"IsolationSegment",
39+
"IsolationSegmentsList",
3840
"OrgManager",
3941
"OrgManagerDeleteResponse",
4042
"OrgManagerResponse",
@@ -101,6 +103,10 @@
101103
CreateSpaceRolePayload as CreateSpaceRolePayload,
102104
)
103105
from stackit.scf.models.error_response import ErrorResponse as ErrorResponse
106+
from stackit.scf.models.isolation_segment import IsolationSegment as IsolationSegment
107+
from stackit.scf.models.isolation_segments_list import (
108+
IsolationSegmentsList as IsolationSegmentsList,
109+
)
104110
from stackit.scf.models.org_manager import OrgManager as OrgManager
105111
from stackit.scf.models.org_manager_delete_response import (
106112
OrgManagerDeleteResponse as OrgManagerDeleteResponse,

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
from stackit.scf.models.create_space_payload import CreateSpacePayload
2424
from stackit.scf.models.create_space_role_payload import CreateSpaceRolePayload
2525
from stackit.scf.models.error_response import ErrorResponse
26+
from stackit.scf.models.isolation_segment import IsolationSegment
27+
from stackit.scf.models.isolation_segments_list import IsolationSegmentsList
2628
from stackit.scf.models.org_manager import OrgManager
2729
from stackit.scf.models.org_manager_delete_response import OrgManagerDeleteResponse
2830
from stackit.scf.models.org_manager_response import OrgManagerResponse
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# coding: utf-8
2+
3+
"""
4+
STACKIT Cloud Foundry API
5+
6+
API endpoints for managing STACKIT Cloud Foundry
7+
8+
The version of the OpenAPI document: 1.0.0
9+
Contact: support@stackit.cloud
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+
import re # noqa: F401
20+
from datetime import datetime
21+
from typing import Any, ClassVar, Dict, List, Optional, Set
22+
23+
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
24+
from typing_extensions import Self
25+
26+
27+
class IsolationSegment(BaseModel):
28+
"""
29+
IsolationSegment
30+
""" # noqa: E501
31+
32+
created_at: datetime = Field(alias="createdAt")
33+
guid: StrictStr
34+
name: StrictStr
35+
org_id: StrictStr = Field(alias="orgId")
36+
platform_id: StrictStr = Field(alias="platformId")
37+
project_id: StrictStr = Field(alias="projectId")
38+
region: StrictStr
39+
updated_at: datetime = Field(alias="updatedAt")
40+
__properties: ClassVar[List[str]] = [
41+
"createdAt",
42+
"guid",
43+
"name",
44+
"orgId",
45+
"platformId",
46+
"projectId",
47+
"region",
48+
"updatedAt",
49+
]
50+
51+
@field_validator("created_at", mode="before")
52+
def created_at_change_year_zero_to_one(cls, value):
53+
"""Workaround which prevents year 0 issue"""
54+
if isinstance(value, str):
55+
# Check for year "0000" at the beginning of the string
56+
# This assumes common date formats like YYYY-MM-DDTHH:MM:SS+00:00 or YYYY-MM-DDTHH:MM:SSZ
57+
if value.startswith("0000-01-01T") and re.match(
58+
r"^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\+\d{2}:\d{2}|Z)$", value
59+
):
60+
# Workaround: Replace "0000" with "0001"
61+
return "0001" + value[4:] # Take "0001" and append the rest of the string
62+
return value
63+
64+
@field_validator("updated_at", mode="before")
65+
def updated_at_change_year_zero_to_one(cls, value):
66+
"""Workaround which prevents year 0 issue"""
67+
if isinstance(value, str):
68+
# Check for year "0000" at the beginning of the string
69+
# This assumes common date formats like YYYY-MM-DDTHH:MM:SS+00:00 or YYYY-MM-DDTHH:MM:SSZ
70+
if value.startswith("0000-01-01T") and re.match(
71+
r"^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\+\d{2}:\d{2}|Z)$", value
72+
):
73+
# Workaround: Replace "0000" with "0001"
74+
return "0001" + value[4:] # Take "0001" and append the rest of the string
75+
return value
76+
77+
model_config = ConfigDict(
78+
populate_by_name=True,
79+
validate_assignment=True,
80+
protected_namespaces=(),
81+
)
82+
83+
def to_str(self) -> str:
84+
"""Returns the string representation of the model using alias"""
85+
return pprint.pformat(self.model_dump(by_alias=True))
86+
87+
def to_json(self) -> str:
88+
"""Returns the JSON representation of the model using alias"""
89+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
90+
return json.dumps(self.to_dict())
91+
92+
@classmethod
93+
def from_json(cls, json_str: str) -> Optional[Self]:
94+
"""Create an instance of IsolationSegment from a JSON string"""
95+
return cls.from_dict(json.loads(json_str))
96+
97+
def to_dict(self) -> Dict[str, Any]:
98+
"""Return the dictionary representation of the model using alias.
99+
100+
This has the following differences from calling pydantic's
101+
`self.model_dump(by_alias=True)`:
102+
103+
* `None` is only added to the output dict for nullable fields that
104+
were set at model initialization. Other fields with value `None`
105+
are ignored.
106+
"""
107+
excluded_fields: Set[str] = set([])
108+
109+
_dict = self.model_dump(
110+
by_alias=True,
111+
exclude=excluded_fields,
112+
exclude_none=True,
113+
)
114+
return _dict
115+
116+
@classmethod
117+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
118+
"""Create an instance of IsolationSegment from a dict"""
119+
if obj is None:
120+
return None
121+
122+
if not isinstance(obj, dict):
123+
return cls.model_validate(obj)
124+
125+
_obj = cls.model_validate(
126+
{
127+
"createdAt": obj.get("createdAt"),
128+
"guid": obj.get("guid"),
129+
"name": obj.get("name"),
130+
"orgId": obj.get("orgId"),
131+
"platformId": obj.get("platformId"),
132+
"projectId": obj.get("projectId"),
133+
"region": obj.get("region"),
134+
"updatedAt": obj.get("updatedAt"),
135+
}
136+
)
137+
return _obj
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# coding: utf-8
2+
3+
"""
4+
STACKIT Cloud Foundry API
5+
6+
API endpoints for managing STACKIT Cloud Foundry
7+
8+
The version of the OpenAPI document: 1.0.0
9+
Contact: support@stackit.cloud
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
22+
from typing_extensions import Self
23+
24+
from stackit.scf.models.isolation_segment import IsolationSegment
25+
from stackit.scf.models.pagination import Pagination
26+
27+
28+
class IsolationSegmentsList(BaseModel):
29+
"""
30+
IsolationSegmentsList
31+
""" # noqa: E501
32+
33+
pagination: Pagination
34+
resources: List[IsolationSegment]
35+
__properties: ClassVar[List[str]] = ["pagination", "resources"]
36+
37+
model_config = ConfigDict(
38+
populate_by_name=True,
39+
validate_assignment=True,
40+
protected_namespaces=(),
41+
)
42+
43+
def to_str(self) -> str:
44+
"""Returns the string representation of the model using alias"""
45+
return pprint.pformat(self.model_dump(by_alias=True))
46+
47+
def to_json(self) -> str:
48+
"""Returns the JSON representation of the model using alias"""
49+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
50+
return json.dumps(self.to_dict())
51+
52+
@classmethod
53+
def from_json(cls, json_str: str) -> Optional[Self]:
54+
"""Create an instance of IsolationSegmentsList from a JSON string"""
55+
return cls.from_dict(json.loads(json_str))
56+
57+
def to_dict(self) -> Dict[str, Any]:
58+
"""Return the dictionary representation of the model using alias.
59+
60+
This has the following differences from calling pydantic's
61+
`self.model_dump(by_alias=True)`:
62+
63+
* `None` is only added to the output dict for nullable fields that
64+
were set at model initialization. Other fields with value `None`
65+
are ignored.
66+
"""
67+
excluded_fields: Set[str] = set([])
68+
69+
_dict = self.model_dump(
70+
by_alias=True,
71+
exclude=excluded_fields,
72+
exclude_none=True,
73+
)
74+
# override the default output from pydantic by calling `to_dict()` of pagination
75+
if self.pagination:
76+
_dict["pagination"] = self.pagination.to_dict()
77+
# override the default output from pydantic by calling `to_dict()` of each item in resources (list)
78+
_items = []
79+
if self.resources:
80+
for _item in self.resources:
81+
if _item:
82+
_items.append(_item.to_dict())
83+
_dict["resources"] = _items
84+
return _dict
85+
86+
@classmethod
87+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
88+
"""Create an instance of IsolationSegmentsList from a dict"""
89+
if obj is None:
90+
return None
91+
92+
if not isinstance(obj, dict):
93+
return cls.model_validate(obj)
94+
95+
_obj = cls.model_validate(
96+
{
97+
"pagination": Pagination.from_dict(obj["pagination"]) if obj.get("pagination") is not None else None,
98+
"resources": (
99+
[IsolationSegment.from_dict(_item) for _item in obj["resources"]]
100+
if obj.get("resources") is not None
101+
else None
102+
),
103+
}
104+
)
105+
return _obj

0 commit comments

Comments
 (0)