From bc6b913b9e4aa96d961834af901dc58a6ac741ae Mon Sep 17 00:00:00 2001 From: SDK Generator Bot Date: Fri, 24 Oct 2025 16:14:19 +0000 Subject: [PATCH] Generate resourcemanager --- .../src/stackit/resourcemanager/__init__.py | 4 + .../resourcemanager/models/__init__.py | 1 + .../models/container_search_result.py | 113 ++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 services/resourcemanager/src/stackit/resourcemanager/models/container_search_result.py diff --git a/services/resourcemanager/src/stackit/resourcemanager/__init__.py b/services/resourcemanager/src/stackit/resourcemanager/__init__.py index 93907345e..4db93aab6 100644 --- a/services/resourcemanager/src/stackit/resourcemanager/__init__.py +++ b/services/resourcemanager/src/stackit/resourcemanager/__init__.py @@ -28,6 +28,7 @@ "ApiKeyError", "ApiAttributeError", "ApiException", + "ContainerSearchResult", "CreateFolderPayload", "CreateProjectPayload", "ErrorResponse", @@ -65,6 +66,9 @@ from stackit.resourcemanager.exceptions import OpenApiException as OpenApiException # import models into sdk package +from stackit.resourcemanager.models.container_search_result import ( + ContainerSearchResult as ContainerSearchResult, +) from stackit.resourcemanager.models.create_folder_payload import ( CreateFolderPayload as CreateFolderPayload, ) diff --git a/services/resourcemanager/src/stackit/resourcemanager/models/__init__.py b/services/resourcemanager/src/stackit/resourcemanager/models/__init__.py index 2fcfe0a06..5bf4eb3ec 100644 --- a/services/resourcemanager/src/stackit/resourcemanager/models/__init__.py +++ b/services/resourcemanager/src/stackit/resourcemanager/models/__init__.py @@ -14,6 +14,7 @@ # import models into model package +from stackit.resourcemanager.models.container_search_result import ContainerSearchResult from stackit.resourcemanager.models.create_folder_payload import CreateFolderPayload from stackit.resourcemanager.models.create_project_payload import CreateProjectPayload from stackit.resourcemanager.models.error_response import ErrorResponse diff --git a/services/resourcemanager/src/stackit/resourcemanager/models/container_search_result.py b/services/resourcemanager/src/stackit/resourcemanager/models/container_search_result.py new file mode 100644 index 000000000..e3adbf5bc --- /dev/null +++ b/services/resourcemanager/src/stackit/resourcemanager/models/container_search_result.py @@ -0,0 +1,113 @@ +# coding: utf-8 + +""" + Resource Manager API + + API v2 to manage resource containers - organizations, folders, projects incl. labels ### Resource Management STACKIT resource management handles the terms _Organization_, _Folder_, _Project_, _Label_, and the hierarchical structure between them. Technically, organizations, folders, and projects are _Resource Containers_ to which a _Label_ can be attached to. The STACKIT _Resource Manager_ provides CRUD endpoints to query and to modify the state. ### Organizations STACKIT organizations are the base element to create and to use cloud-resources. An organization is bound to one customer account. Organizations have a lifecycle. - Organizations are always the root node in resource hierarchy and do not have a parent ### Projects STACKIT projects are needed to use cloud-resources. Projects serve as wrapper for underlying technical structures and processes. Projects have a lifecycle. Projects compared to folders may have different policies. - Projects are optional, but mandatory for cloud-resource usage - A project can be created having either an organization, or a folder as parent - A project must not have a project as parent - Project names under the same parent must not be unique - Root organization cannot be changed ### Label STACKIT labels are key-value pairs including a resource container reference. Labels can be defined and attached freely to resource containers by which resources can be organized and queried. - Policy-based, immutable labels may exists + + The version of the OpenAPI document: 2.0 + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 + +from __future__ import annotations + +import json +import pprint +from typing import Any, ClassVar, Dict, List, Optional, Set + +from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator +from typing_extensions import Self + +from stackit.resourcemanager.models.lifecycle_state import LifecycleState + + +class ContainerSearchResult(BaseModel): + """ + ContainerSearchResult + """ # noqa: E501 + + container_id: StrictStr = Field(description="Globally unique user-friendly identifier.", alias="containerId") + container_type: StrictStr = Field(description="Resource container type.", alias="containerType") + id: StrictStr = Field(description="Globally unique identifier.") + lifecycle_state: Optional[LifecycleState] = Field(default=None, alias="lifecycleState") + name: StrictStr = Field(description="Resource container name.") + organization_id: Optional[StrictStr] = Field( + default=None, description="Id of the organization the container is in.", alias="organizationId" + ) + __properties: ClassVar[List[str]] = [ + "containerId", + "containerType", + "id", + "lifecycleState", + "name", + "organizationId", + ] + + @field_validator("container_type") + def container_type_validate_enum(cls, value): + """Validates the enum""" + if value not in set(["PROJECT", "FOLDER"]): + raise ValueError("must be one of enum values ('PROJECT', 'FOLDER')") + return value + + model_config = ConfigDict( + populate_by_name=True, + validate_assignment=True, + protected_namespaces=(), + ) + + def to_str(self) -> str: + """Returns the string representation of the model using alias""" + return pprint.pformat(self.model_dump(by_alias=True)) + + def to_json(self) -> str: + """Returns the JSON representation of the model using alias""" + # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead + return json.dumps(self.to_dict()) + + @classmethod + def from_json(cls, json_str: str) -> Optional[Self]: + """Create an instance of ContainerSearchResult from a JSON string""" + return cls.from_dict(json.loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + excluded_fields: Set[str] = set([]) + + _dict = self.model_dump( + by_alias=True, + exclude=excluded_fields, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: + """Create an instance of ContainerSearchResult from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "containerId": obj.get("containerId"), + "containerType": obj.get("containerType"), + "id": obj.get("id"), + "lifecycleState": obj.get("lifecycleState"), + "name": obj.get("name"), + "organizationId": obj.get("organizationId"), + } + ) + return _obj