Skip to content

Commit f0b99b8

Browse files
Merge branch 'main' into generator-bot-23059610336/cdn
2 parents 97a4062 + 7a937b0 commit f0b99b8

File tree

165 files changed

+2400
-5164
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

165 files changed

+2400
-5164
lines changed

CHANGELOG.md

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
## Release (2026-xx-xx)
22

3-
- `alb`: [v0.9.1](services/alb/CHANGELOG.md#v091)
4-
- **Feature:** client now supports UUID and decimal types
5-
- **Bugfix:** timeouts now passed to requests library
63
- `auditlog`: [v0.1.2](services/auditlog/CHANGELOG.md#v012)
74
- **Feature:** client now supports UUID and decimal types
85
- **Bugfix:** timeouts now passed to requests library
96
- `authorization`: [v0.7.1](services/authorization/CHANGELOG.md#v071)
107
- **Feature:** client now supports UUID and decimal types
118
- **Bugfix:** timeouts now passed to requests library
9+
- `certificates`: [v1.2.1](services/certificates/CHANGELOG.md#v121)
10+
- **Feature:** client now supports UUID and decimal types
11+
- **Bugfix:** timeouts now passed to requests library
12+
- `dns`: [v0.5.1](services/dns/CHANGELOG.md#v051)
13+
- **Feature:** client now supports UUID and decimal types
14+
- **Bugfix:** timeouts now passed to requests library
15+
- `edge`: [v0.1.1](services/edge/CHANGELOG.md#v011)
16+
- **Feature:** client now supports UUID and decimal types
17+
- **Bugfix:** timeouts now passed to requests library
1218
- `serviceaccount`:
1319
- [v0.6.1](services/serviceaccount/CHANGELOG.md#v061)
1420
- **Feature:** client now supports UUID and decimal types
@@ -17,11 +23,15 @@
1723
- **Breaking Change:** rename `CreateFederatedIdentityProviderResponse` to `FederatedIdentityProvider` and update file path accordingly
1824
- **Breaking Change:** rename `CreateFederatedIdentityProviderResponseAssertionsInner` to `FederatedIdentityProviderAssertionsInner` and update file path accordingly
1925
- **Feature:** add `id` for `FederatedIdentityProvider`
20-
- `ske`: [v1.7.0](services/ske/CHANGELOG.md#v170)
21-
- **Feature:** New model `Access`
22-
- **Feature:** New model `IDPKubeconfig`
23-
- **Feature:** Add attribute `access` of type `Access` to model `Cluster`
24-
- **Feature:** New API client methods: `get_idp_kubeconfig`, `get_idp_kubeconfig_with_http_info`, `get_idp_kubeconfig_without_preload_content`, `_get_idp_kubeconfig_serialize`
26+
- `ske`:
27+
- [v1.7.1](services/ske/CHANGELOG.md#v171)
28+
- **Feature:** client now supports UUID and decimal types
29+
- **Bugfix:** timeouts now passed to requests library
30+
- [v1.7.0](services/ske/CHANGELOG.md#v170)
31+
- **Feature:** New model `Access`
32+
- **Feature:** New model `IDPKubeconfig`
33+
- **Feature:** Add attribute `access` of type `Access` to model `Cluster`
34+
- **Feature:** New API client methods: `get_idp_kubeconfig`, `get_idp_kubeconfig_with_http_info`, `get_idp_kubeconfig_without_preload_content`, `_get_idp_kubeconfig_serialize`
2535
- `kms`:
2636
- [v0.8.1](services/kms/CHANGELOG.md#v081)
2737
- **Feature:** client now supports UUID and decimal types
@@ -34,16 +44,24 @@
3444
- **Bugfix:** timeouts now passed to requests library
3545
- [v0.5.0](services/intake/CHANGELOG.md#v050)
3646
- **Breaking Change**: Switch from regional to global API server URL (region can't be set via `Configuration` / env-variable anymore).
37-
- `iaas`: [v1.2.0](services/iaas/CHANGELOG.md#v120)
38-
- **Feature:** Add `description` attribute to ModelClasses:
39-
- `Backup`, `CreateBackupPayload`, `UpdateBackupPayload`
40-
- `Snapshot`, `CreateSnapshotPayload`, `UpdateSnapshotPayload`
41-
- **Bugfix:** Flagged `disk_format` as necessary for `ImageFromVolumePayload`
42-
- **Improvement:** Updated description for labels
43-
- `alb`: [v0.9.0](services/alb/CHANGELOG.md#v090)
44-
- **Feature:** Add new field `AltPort` to `ActiveHealthCheck`
45-
- **Feature:** Add new field `Tls` to `HttpHealthCheck`
46-
- **Breaking change:** Renamed `TargetPoolTlsConfig` to `TlsConfig`
47+
- `iaas`:
48+
- [v1.2.1](services/iaas/CHANGELOG.md#v121)
49+
- **Feature:** client now supports UUID and decimal types
50+
- **Bugfix:** timeouts now passed to requests library
51+
- [v1.2.0](services/iaas/CHANGELOG.md#v120)
52+
- **Feature:** Add `description` attribute to ModelClasses:
53+
- `Backup`, `CreateBackupPayload`, `UpdateBackupPayload`
54+
- `Snapshot`, `CreateSnapshotPayload`, `UpdateSnapshotPayload`
55+
- **Bugfix:** Flagged `disk_format` as necessary for `ImageFromVolumePayload`
56+
- **Improvement:** Updated description for labels
57+
- `alb`:
58+
- [v0.9.1](services/alb/CHANGELOG.md#v091)
59+
- **Feature:** client now supports UUID and decimal types
60+
- **Bugfix:** timeouts now passed to requests library
61+
- [v0.9.0](services/alb/CHANGELOG.md#v090)
62+
- **Feature:** Add new field `AltPort` to `ActiveHealthCheck`
63+
- **Feature:** Add new field `Tls` to `HttpHealthCheck`
64+
- **Breaking change:** Renamed `TargetPoolTlsConfig` to `TlsConfig`
4765
- `loadbalancer`:
4866
- [v0.9.1](services/loadbalancer/CHANGELOG.md#v091)
4967
- **Feature:** client now supports UUID and decimal types
@@ -77,8 +95,12 @@
7795
- `scf`: [v0.4.1](services/scf/CHANGELOG.md#v041)
7896
- **Feature:** client now supports UUID and decimal types
7997
- **Bugfix:** timeouts now passed to requests library
80-
- `sfs`: [v0.3.0](services/sfs/CHANGELOG.md#v030)
81-
- **Breaking change:** The `name` and `spaceHardLimitGigabytes` fields are now marked as required for `ShareExportPayload`, `SharePayload`.
98+
- `sfs`:
99+
- [v0.3.1](services/sfs/CHANGELOG.md#v031)
100+
- **Feature:** client now supports UUID and decimal types
101+
- **Bugfix:** timeouts now passed to requests library
102+
- [v0.3.0](services/sfs/CHANGELOG.md#v030)
103+
- **Breaking change:** The `name` and `spaceHardLimitGigabytes` fields are now marked as required for `ShareExportPayload`, `SharePayload`.
82104
- `secretsmanager`: [v0.4.1](services/secretsmanager/CHANGELOG.md#v041)
83105
- **Feature:** client now supports UUID and decimal types
84106
- **Bugfix:** timeouts now passed to requests library

services/certificates/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## v1.2.1
2+
- **Feature:** client now supports UUID and decimal types
3+
- **Bugfix:** timeouts now passed to requests library
4+
15
## v1.2.0
26
- **Feature:** Switch from `v2beta` API version to `v2` version.
37
- **Breaking change:** Rename `CreateCertificateResponse` to `GetCertificateResponse`

services/certificates/oas_commit

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0e64886dd0847341800d7191ed193b75413be998

services/certificates/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "stackit-certificates"
3-
version = "v1.2.0"
3+
version = "v1.2.1"
44
description = "Load Balancer Certificates API"
55
authors = [{ name = "STACKIT Developer Tools", email = "developer-tools@stackit.cloud" }]
66
requires-python = ">=3.9,<4.0"

services/certificates/src/stackit/certificates/api_client.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@
1212
""" # noqa: E501
1313

1414
import datetime
15+
import decimal
1516
import json
1617
import mimetypes
1718
import os
1819
import re
1920
import tempfile
21+
import uuid
2022
from enum import Enum
2123
from typing import Dict, List, Optional, Tuple, Union
2224
from urllib.parse import quote
@@ -63,8 +65,10 @@ class ApiClient:
6365
"bool": bool,
6466
"date": datetime.date,
6567
"datetime": datetime.datetime,
68+
"decimal": decimal.Decimal,
6669
"object": object,
6770
}
71+
_pool = None
6872

6973
def __init__(self, configuration, header_name=None, header_value=None, cookie=None) -> None:
7074
self.config: Configuration = configuration
@@ -267,7 +271,7 @@ def response_deserialize(
267271
return_data = self.__deserialize_file(response_data)
268272
elif response_type is not None:
269273
match = None
270-
content_type = response_data.getheader("content-type")
274+
content_type = response_data.headers.get("content-type")
271275
if content_type is not None:
272276
match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
273277
encoding = match.group(1) if match else "utf-8"
@@ -284,7 +288,7 @@ def response_deserialize(
284288
return ApiResponse(
285289
status_code=response_data.status,
286290
data=return_data,
287-
headers=response_data.getheaders(),
291+
headers=response_data.headers,
288292
raw_data=response_data.data,
289293
)
290294

@@ -296,6 +300,7 @@ def sanitize_for_serialization(self, obj):
296300
If obj is str, int, long, float, bool, return directly.
297301
If obj is datetime.datetime, datetime.date
298302
convert to string in iso8601 format.
303+
If obj is decimal.Decimal return string representation.
299304
If obj is list, sanitize each element in the list.
300305
If obj is dict, return the dict.
301306
If obj is OpenAPI model, return the properties dict.
@@ -311,12 +316,16 @@ def sanitize_for_serialization(self, obj):
311316
return obj.get_secret_value()
312317
elif isinstance(obj, self.PRIMITIVE_TYPES):
313318
return obj
319+
elif isinstance(obj, uuid.UUID):
320+
return str(obj)
314321
elif isinstance(obj, list):
315322
return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj]
316323
elif isinstance(obj, tuple):
317324
return tuple(self.sanitize_for_serialization(sub_obj) for sub_obj in obj)
318325
elif isinstance(obj, (datetime.datetime, datetime.date)):
319326
return obj.isoformat()
327+
elif isinstance(obj, decimal.Decimal):
328+
return str(obj)
320329

321330
elif isinstance(obj, dict):
322331
obj_dict = obj
@@ -326,7 +335,7 @@ def sanitize_for_serialization(self, obj):
326335
# and attributes which value is not None.
327336
# Convert attribute name to json key in
328337
# model definition for request.
329-
if hasattr(obj, "to_dict") and callable(obj.to_dict):
338+
if hasattr(obj, "to_dict") and callable(getattr(obj, "to_dict")): # noqa: B009
330339
obj_dict = obj.to_dict()
331340
else:
332341
obj_dict = obj.__dict__
@@ -354,7 +363,7 @@ def deserialize(self, response_text: str, response_type: str, content_type: Opti
354363
data = json.loads(response_text)
355364
except ValueError:
356365
data = response_text
357-
elif re.match(r"^application/(json|[\w!#$&.+-^_]+\+json)\s*(;|$)", content_type, re.IGNORECASE):
366+
elif re.match(r"^application/(json|[\w!#$&.+\-^_]+\+json)\s*(;|$)", content_type, re.IGNORECASE):
358367
if response_text == "":
359368
data = ""
360369
else:
@@ -400,12 +409,14 @@ def __deserialize(self, data, klass):
400409

401410
if klass in self.PRIMITIVE_TYPES:
402411
return self.__deserialize_primitive(data, klass)
403-
elif klass == object:
412+
elif klass is object:
404413
return self.__deserialize_object(data)
405-
elif klass == datetime.date:
414+
elif klass is datetime.date:
406415
return self.__deserialize_date(data)
407-
elif klass == datetime.datetime:
416+
elif klass is datetime.datetime:
408417
return self.__deserialize_datetime(data)
418+
elif klass is decimal.Decimal:
419+
return decimal.Decimal(data)
409420
elif issubclass(klass, Enum):
410421
return self.__deserialize_enum(data, klass)
411422
else:
@@ -553,12 +564,14 @@ def __deserialize_file(self, response):
553564
os.close(fd)
554565
os.remove(path)
555566

556-
content_disposition = response.getheader("Content-Disposition")
567+
content_disposition = response.headers.get("Content-Disposition")
557568
if content_disposition:
558569
m = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?', content_disposition)
559570
if m is None:
560571
raise ValueError("Unexpected 'content-disposition' header value")
561-
filename = m.group(1)
572+
filename = os.path.basename(m.group(1)) # Strip any directory traversal
573+
if filename in ("", ".", ".."): # fall back to tmp filename
574+
filename = os.path.basename(path)
562575
path = os.path.join(os.path.dirname(path), filename)
563576

564577
with open(path, "wb") as f:

services/certificates/src/stackit/certificates/exceptions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ def __init__(
129129
self.body = http_resp.data.decode("utf-8")
130130
except Exception: # noqa: S110
131131
pass
132-
self.headers = http_resp.getheaders()
132+
self.headers = http_resp.headers
133133

134134
@classmethod
135135
def from_response(

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
Do not edit the class manually.
1313
""" # noqa: E501
1414

15-
1615
# import models into model package
1716
from stackit.certificates.models.create_certificate_payload import (
1817
CreateCertificatePayload,

services/certificates/src/stackit/certificates/models/create_certificate_payload.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import pprint
1818
import re # noqa: F401
1919
from typing import Any, ClassVar, Dict, List, Optional, Set
20+
from uuid import UUID
2021

2122
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
2223
from typing_extensions import Annotated, Self
@@ -31,9 +32,7 @@ class CreateCertificatePayload(BaseModel):
3132
private_key: Optional[StrictStr] = Field(
3233
default=None, description="The PEM encoded private key part", alias="privateKey"
3334
)
34-
project_id: Optional[Annotated[str, Field(strict=True)]] = Field(
35-
default=None, description="Project identifier", alias="projectId"
36-
)
35+
project_id: Optional[UUID] = Field(default=None, description="Project identifier", alias="projectId")
3736
public_key: Optional[StrictStr] = Field(
3837
default=None, description="The PEM encoded public key part", alias="publicKey"
3938
)

services/certificates/src/stackit/certificates/models/list_certificates_response.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ def to_dict(self) -> Dict[str, Any]:
8787
# override the default output from pydantic by calling `to_dict()` of each item in items (list)
8888
_items = []
8989
if self.items:
90-
for _item in self.items:
91-
if _item:
92-
_items.append(_item.to_dict())
90+
for _item_items in self.items:
91+
if _item_items:
92+
_items.append(_item_items.to_dict())
9393
_dict["items"] = _items
9494
return _dict
9595

services/certificates/src/stackit/certificates/models/status.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ def to_dict(self) -> Dict[str, Any]:
8282
# override the default output from pydantic by calling `to_dict()` of each item in details (list)
8383
_items = []
8484
if self.details:
85-
for _item in self.details:
86-
if _item:
87-
_items.append(_item.to_dict())
85+
for _item_details in self.details:
86+
if _item_details:
87+
_items.append(_item_details.to_dict())
8888
_dict["details"] = _items
8989
return _dict
9090

0 commit comments

Comments
 (0)