diff --git a/CHANGELOG.md b/CHANGELOG.md index ef9636366..cd88d7366 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,10 @@ - **Improvement:** `list_record_sets`/`list_zones` docs clarify that records/zones in the `DELETE_SUCCEEDED` state are excluded by default; pass `state[eq]=DELETE_SUCCEEDED` to retrieve them - **Improvement:** `Label.key`/`CreateLabelPayload.key` now accepts up to 314 characters (previously 63), supporting prefixed label keys (e.g. `example.com/environment`) - **Breaking Change:** `PartialUpdateZonePayload.extensions` type changed from `ZoneExtensions` to `DomainExtensions`, now also exposing `observability_extension.state` +- `dremio`: + - [v0.2.0](services/dremio/CHANGELOG.md#v020) + - **Feature:** Add `acl` field to models `CreateDremioInstancePayload`, `DremioResponse`, and `UpdateDremioInstancePayload` + - **Breaking Change:** `DremioResponse` now requires an `acl` field; constructing an instance without it will raise a validation error - `iaas`: - [v1.7.0](services/iaas/CHANGELOG.md#v170) - **Docs:** Update documentation for `labels` field constraints across models. diff --git a/services/dremio/CHANGELOG.md b/services/dremio/CHANGELOG.md index 25b098bc5..6083d303a 100644 --- a/services/dremio/CHANGELOG.md +++ b/services/dremio/CHANGELOG.md @@ -1,3 +1,8 @@ +## v0.2.0 + +- **Feature:** Add `acl` field to models `CreateDremioInstancePayload`, `DremioResponse`, and `UpdateDremioInstancePayload` +- **Breaking Change:** `DremioResponse` now requires an `acl` field; constructing an instance without it will raise a validation error + ## v0.1.0 - **New**: STACKIT Dremio module can be used to manage STACKIT Dremio instances and users. diff --git a/services/dremio/oas_commit b/services/dremio/oas_commit index e05d493f3..9c7455dfa 100644 --- a/services/dremio/oas_commit +++ b/services/dremio/oas_commit @@ -1 +1 @@ -da4701b7dbe20e984aef89711bb9ba716e19fcba +7f06203ae1280163695cd27b7f353dca0d2d04b8 diff --git a/services/dremio/pyproject.toml b/services/dremio/pyproject.toml index fc2200ee7..668167d95 100644 --- a/services/dremio/pyproject.toml +++ b/services/dremio/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "stackit-dremio" -version = "v0.1.0" +version = "v0.2.0" description = "STACKIT Dremio API" authors = [{name = "STACKIT Developer Tools", email = "developer-tools@stackit.cloud"}] requires-python = ">=3.10,<4.0" diff --git a/services/dremio/src/stackit/dremio/api/default_api.py b/services/dremio/src/stackit/dremio/api/default_api.py index 4380fc76b..06cd2c651 100644 --- a/services/dremio/src/stackit/dremio/api/default_api.py +++ b/services/dremio/src/stackit/dremio/api/default_api.py @@ -116,6 +116,7 @@ def create_dremio_instance( "400": "Error", "401": "Error", "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -188,6 +189,7 @@ def create_dremio_instance_with_http_info( "400": "Error", "401": "Error", "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -260,6 +262,7 @@ def create_dremio_instance_without_preload_content( "400": "Error", "401": "Error", "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -396,6 +399,7 @@ def create_dremio_user( "400": "Error", "401": "Error", "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -472,6 +476,7 @@ def create_dremio_user_with_http_info( "400": "Error", "401": "Error", "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -548,6 +553,7 @@ def create_dremio_user_without_preload_content( "400": "Error", "401": "Error", "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -684,6 +690,7 @@ def delete_dremio_instance( "401": "Error", "404": None, "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -757,6 +764,7 @@ def delete_dremio_instance_with_http_info( "401": "Error", "404": None, "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -830,6 +838,7 @@ def delete_dremio_instance_without_preload_content( "401": "Error", "404": None, "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -959,6 +968,7 @@ def delete_dremio_user( "401": "Error", "404": None, "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -1036,6 +1046,7 @@ def delete_dremio_user_with_http_info( "401": "Error", "404": None, "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -1113,6 +1124,7 @@ def delete_dremio_user_without_preload_content( "401": "Error", "404": None, "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -2415,6 +2427,7 @@ def update_dremio_instance( "401": "Error", "404": None, "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -2492,6 +2505,7 @@ def update_dremio_instance_with_http_info( "401": "Error", "404": None, "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) @@ -2569,6 +2583,7 @@ def update_dremio_instance_without_preload_content( "401": "Error", "404": None, "409": None, + "422": None, "500": None, } response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) diff --git a/services/dremio/src/stackit/dremio/models/create_dremio_instance_payload.py b/services/dremio/src/stackit/dremio/models/create_dremio_instance_payload.py index b7b3d1609..809998803 100644 --- a/services/dremio/src/stackit/dremio/models/create_dremio_instance_payload.py +++ b/services/dremio/src/stackit/dremio/models/create_dremio_instance_payload.py @@ -18,7 +18,7 @@ import re # noqa: F401 from typing import Any, ClassVar, Dict, List, Optional, Set -from pydantic import BaseModel, ConfigDict, Field, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator from pydantic_core import to_jsonable_python from typing_extensions import Annotated, Self @@ -30,6 +30,10 @@ class CreateDremioInstancePayload(BaseModel): CreateDremioInstancePayload """ # noqa: E501 + acl: Optional[List[StrictStr]] = Field( + default=None, + description="The Access Control List (ACL) defining the IPv4 or IPv6 CIDR ranges allowed to connect to the Dremio instance. An empty list allows access from any address. Omitting this field on creation allows access from any address. Omitting it on update preserves the current list. Updates replace the entire list and take effect asynchronously.", + ) authentication: Optional[Authentication] = None description: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( default=None, @@ -38,7 +42,7 @@ class CreateDremioInstancePayload(BaseModel): display_name: Annotated[str, Field(min_length=1, strict=True, max_length=32)] = Field( description="The display name is a short name chosen by the user to identify the resource.", alias="displayName" ) - __properties: ClassVar[List[str]] = ["authentication", "description", "displayName"] + __properties: ClassVar[List[str]] = ["acl", "authentication", "description", "displayName"] @field_validator("display_name") def display_name_validate_regular_expression(cls, value): @@ -103,6 +107,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate( { + "acl": obj.get("acl"), "authentication": ( Authentication.from_dict(obj["authentication"]) if obj.get("authentication") is not None else None ), diff --git a/services/dremio/src/stackit/dremio/models/dremio_response.py b/services/dremio/src/stackit/dremio/models/dremio_response.py index f9ad94d68..d0c3a0c25 100644 --- a/services/dremio/src/stackit/dremio/models/dremio_response.py +++ b/services/dremio/src/stackit/dremio/models/dremio_response.py @@ -33,6 +33,9 @@ class DremioResponse(BaseModel): DremioResponse """ # noqa: E501 + acl: List[StrictStr] = Field( + description="The Access Control List (ACL) defining the IPv4 or IPv6 CIDR ranges allowed to connect to the Dremio instance. An empty list allows access from any address. Omitting this field on creation allows access from any address. Omitting it on update preserves the current list. Updates replace the entire list and take effect asynchronously." + ) authentication: Authentication create_time: datetime = Field(description="The point in time the resource was created.") description: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( @@ -51,6 +54,7 @@ class DremioResponse(BaseModel): id: UUID = Field(description="A auto generated unique id which identifies the resource.") state: StrictStr = Field(description="The current state of the resource.") __properties: ClassVar[List[str]] = [ + "acl", "authentication", "create_time", "description", @@ -152,6 +156,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate( { + "acl": obj.get("acl"), "authentication": ( Authentication.from_dict(obj["authentication"]) if obj.get("authentication") is not None else None ), diff --git a/services/dremio/src/stackit/dremio/models/update_dremio_instance_payload.py b/services/dremio/src/stackit/dremio/models/update_dremio_instance_payload.py index 67d4b84aa..bc1d7088f 100644 --- a/services/dremio/src/stackit/dremio/models/update_dremio_instance_payload.py +++ b/services/dremio/src/stackit/dremio/models/update_dremio_instance_payload.py @@ -18,7 +18,7 @@ import re # noqa: F401 from typing import Any, ClassVar, Dict, List, Optional, Set -from pydantic import BaseModel, ConfigDict, Field, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator from pydantic_core import to_jsonable_python from typing_extensions import Annotated, Self @@ -30,6 +30,10 @@ class UpdateDremioInstancePayload(BaseModel): UpdateDremioInstancePayload """ # noqa: E501 + acl: Optional[List[StrictStr]] = Field( + default=None, + description="The Access Control List (ACL) defining the IPv4 or IPv6 CIDR ranges allowed to connect to the Dremio instance. An empty list allows access from any address. Omitting this field on creation allows access from any address. Omitting it on update preserves the current list. Updates replace the entire list and take effect asynchronously.", + ) authentication: Optional[Authentication] = None description: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( default=None, @@ -40,7 +44,7 @@ class UpdateDremioInstancePayload(BaseModel): description="The display name is a short name chosen by the user to identify the resource.", alias="displayName", ) - __properties: ClassVar[List[str]] = ["authentication", "description", "displayName"] + __properties: ClassVar[List[str]] = ["acl", "authentication", "description", "displayName"] @field_validator("display_name") def display_name_validate_regular_expression(cls, value): @@ -108,6 +112,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: _obj = cls.model_validate( { + "acl": obj.get("acl"), "authentication": ( Authentication.from_dict(obj["authentication"]) if obj.get("authentication") is not None else None ), diff --git a/services/dremio/uv.lock b/services/dremio/uv.lock index d2fac65f5..77fb83dbc 100644 --- a/services/dremio/uv.lock +++ b/services/dremio/uv.lock @@ -1133,7 +1133,7 @@ dev = [ [[package]] name = "stackit-dremio" -version = "0.1.0" +version = "0.2.0" source = { editable = "." } dependencies = [ { name = "pydantic" },