diff --git a/services/iaasalpha/pyproject.toml b/services/iaasalpha/pyproject.toml index 10add6e2..78b63f2b 100644 --- a/services/iaasalpha/pyproject.toml +++ b/services/iaasalpha/pyproject.toml @@ -37,8 +37,8 @@ dev = [ ] [project.urls] -Homepage = "https://github.com/stackitcloud/stackit-sdk-python-beta" -Issues = "https://github.com/stackitcloud/stackit-sdk-python-beta/issues" +Homepage = "https://github.com/stackitcloud/stackit-sdk-python" +Issues = "https://github.com/stackitcloud/stackit-sdk-python/issues" [build-system] requires = ["setuptools"] diff --git a/services/iaasalpha/stackit/iaasalpha/models/allowed_addresses_inner.py b/services/iaasalpha/stackit/iaasalpha/models/allowed_addresses_inner.py new file mode 100644 index 00000000..96d7cfad --- /dev/null +++ b/services/iaasalpha/stackit/iaasalpha/models/allowed_addresses_inner.py @@ -0,0 +1,165 @@ +# coding: utf-8 + +""" + IaaS-API + + This API allows you to create and modify IaaS resources. + + The version of the OpenAPI document: 1alpha1 + Contact: stackit-iaas@mail.schwarz + Generated by OpenAPI Generator (https://openapi-generator.tech) + + Do not edit the class manually. +""" # noqa: E501 docstring might be too long + +from __future__ import annotations + +import json +import pprint +from typing import Any, Dict, Optional, Set, Union + +from pydantic import ( + BaseModel, + ConfigDict, + Field, + ValidationError, + field_validator, +) +from typing_extensions import Annotated, Self + + +ALLOWEDADDRESSESINNER_ONE_OF_SCHEMAS = ["str"] + + +class AllowedAddressesInner(BaseModel): + """ + AllowedAddressesInner + """ + + # data type: str + oneof_schema_1_validator: Optional[Annotated[str, Field(strict=True)]] = Field( + default=None, description="Object that represents an IP address." + ) + # data type: str + oneof_schema_2_validator: Optional[Annotated[str, Field(strict=True)]] = Field( + default=None, description="Classless Inter-Domain Routing (CIDR)." + ) + actual_instance: Optional[Union[str]] = None + one_of_schemas: Set[str] = {"str"} + + model_config = ConfigDict( + validate_assignment=True, + protected_namespaces=(), + ) + + def __init__(self, *args, **kwargs) -> None: + if args: + if len(args) > 1: + raise ValueError("If a position argument is used, only 1 is allowed to set `actual_instance`") + if kwargs: + raise ValueError("If a position argument is used, keyword arguments cannot be used.") + super().__init__(actual_instance=args[0]) + else: + super().__init__(**kwargs) + + @field_validator("actual_instance") + def actual_instance_must_validate_oneof(cls, v): + instance = AllowedAddressesInner.model_construct() + error_messages = [] + match = 0 + # validate data type: str + try: + instance.oneof_schema_1_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # validate data type: str + try: + instance.oneof_schema_2_validator = v + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when setting `actual_instance` in AllowedAddressesInner with oneOf schemas: str. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when setting `actual_instance` in AllowedAddressesInner with oneOf schemas: str. Details: " + + ", ".join(error_messages) + ) + else: + return v + + @classmethod + def from_dict(cls, obj: Union[str, Dict[str, Any]]) -> Self: + return cls.from_json(json.dumps(obj)) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Returns the object represented by the json string""" + instance = cls.model_construct() + error_messages = [] + match = 0 + + # deserialize data into str + try: + # validation + instance.oneof_schema_1_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_1_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + # deserialize data into str + try: + # validation + instance.oneof_schema_2_validator = json.loads(json_str) + # assign value to actual_instance + instance.actual_instance = instance.oneof_schema_2_validator + match += 1 + except (ValidationError, ValueError) as e: + error_messages.append(str(e)) + + if match > 1: + # more than 1 match + raise ValueError( + "Multiple matches found when deserializing the JSON string into AllowedAddressesInner with oneOf schemas: str. Details: " + + ", ".join(error_messages) + ) + elif match == 0: + # no match + raise ValueError( + "No match found when deserializing the JSON string into AllowedAddressesInner with oneOf schemas: str. Details: " + + ", ".join(error_messages) + ) + else: + return instance + + def to_json(self) -> str: + """Returns the JSON representation of the actual instance""" + if self.actual_instance is None: + return "null" + + if hasattr(self.actual_instance, "to_json") and callable(self.actual_instance.to_json): + return self.actual_instance.to_json() + else: + return json.dumps(self.actual_instance) + + def to_dict(self) -> Optional[Union[Dict[str, Any], str]]: + """Returns the dict representation of the actual instance""" + if self.actual_instance is None: + return None + + if hasattr(self.actual_instance, "to_dict") and callable(self.actual_instance.to_dict): + return self.actual_instance.to_dict() + else: + # primitive type + return self.actual_instance + + def to_str(self) -> str: + """Returns the string representation of the actual instance""" + return pprint.pformat(self.model_dump())