Skip to content

Commit

Permalink
Generate iaas
Browse files Browse the repository at this point in the history
  • Loading branch information
stackit-pipeline committed Oct 24, 2024
1 parent e65894b commit f984705
Show file tree
Hide file tree
Showing 8 changed files with 231 additions and 26 deletions.
4 changes: 2 additions & 2 deletions services/iaas/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
Expand Down
1 change: 1 addition & 0 deletions services/iaas/stackit/iaas/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@

# import models into sdk package
from stackit.iaas.models.add_volume_to_server_payload import AddVolumeToServerPayload
from stackit.iaas.models.allowed_addresses_inner import AllowedAddressesInner
from stackit.iaas.models.area import Area
from stackit.iaas.models.area_config import AreaConfig
from stackit.iaas.models.area_prefix_config_ipv4 import AreaPrefixConfigIPv4
Expand Down
1 change: 1 addition & 0 deletions services/iaas/stackit/iaas/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

# import models into model package
from stackit.iaas.models.add_volume_to_server_payload import AddVolumeToServerPayload
from stackit.iaas.models.allowed_addresses_inner import AllowedAddressesInner
from stackit.iaas.models.area import Area
from stackit.iaas.models.area_config import AreaConfig
from stackit.iaas.models.area_prefix_config_ipv4 import AreaPrefixConfigIPv4
Expand Down
165 changes: 165 additions & 0 deletions services/iaas/stackit/iaas/models/allowed_addresses_inner.py
Original file line number Diff line number Diff line change
@@ -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: 1beta1
Contact: [email protected]
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())
17 changes: 15 additions & 2 deletions services/iaas/stackit/iaas/models/create_nic_payload.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,15 @@
)
from typing_extensions import Annotated, Self

from stackit.iaas.models.allowed_addresses_inner import AllowedAddressesInner


class CreateNICPayload(BaseModel):
"""
Object that represents a network interface.
"""

allowed_addresses: Optional[List[StrictStr]] = Field(
allowed_addresses: Optional[List[AllowedAddressesInner]] = Field(
default=None, description="A list of IPs or CIDR notations.", alias="allowedAddresses"
)
device: Optional[Annotated[str, Field(min_length=36, strict=True, max_length=36)]] = Field(
Expand Down Expand Up @@ -226,6 +228,13 @@ def to_dict(self) -> Dict[str, Any]:
exclude=excluded_fields,
exclude_none=True,
)
# override the default output from pydantic by calling `to_dict()` of each item in allowed_addresses (list)
_items = []
if self.allowed_addresses:
for _item in self.allowed_addresses:
if _item:
_items.append(_item.to_dict())
_dict["allowedAddresses"] = _items
return _dict

@classmethod
Expand All @@ -239,7 +248,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:

_obj = cls.model_validate(
{
"allowedAddresses": obj.get("allowedAddresses"),
"allowedAddresses": (
[AllowedAddressesInner.from_dict(_item) for _item in obj["allowedAddresses"]]
if obj.get("allowedAddresses") is not None
else None
),
"device": obj.get("device"),
"id": obj.get("id"),
"ipv4": obj.get("ipv4"),
Expand Down
17 changes: 15 additions & 2 deletions services/iaas/stackit/iaas/models/nic.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,15 @@
)
from typing_extensions import Annotated, Self

from stackit.iaas.models.allowed_addresses_inner import AllowedAddressesInner


class NIC(BaseModel):
"""
Object that represents a network interface.
"""

allowed_addresses: Optional[List[StrictStr]] = Field(
allowed_addresses: Optional[List[AllowedAddressesInner]] = Field(
default=None, description="A list of IPs or CIDR notations.", alias="allowedAddresses"
)
device: Optional[Annotated[str, Field(min_length=36, strict=True, max_length=36)]] = Field(
Expand Down Expand Up @@ -226,6 +228,13 @@ def to_dict(self) -> Dict[str, Any]:
exclude=excluded_fields,
exclude_none=True,
)
# override the default output from pydantic by calling `to_dict()` of each item in allowed_addresses (list)
_items = []
if self.allowed_addresses:
for _item in self.allowed_addresses:
if _item:
_items.append(_item.to_dict())
_dict["allowedAddresses"] = _items
return _dict

@classmethod
Expand All @@ -239,7 +248,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:

_obj = cls.model_validate(
{
"allowedAddresses": obj.get("allowedAddresses"),
"allowedAddresses": (
[AllowedAddressesInner.from_dict(_item) for _item in obj["allowedAddresses"]]
if obj.get("allowedAddresses") is not None
else None
),
"device": obj.get("device"),
"id": obj.get("id"),
"ipv4": obj.get("ipv4"),
Expand Down
26 changes: 16 additions & 10 deletions services/iaas/stackit/iaas/models/server_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,18 @@
import re
from typing import Any, ClassVar, Dict, List, Optional, Set

from pydantic import (
BaseModel,
ConfigDict,
Field,
StrictBool,
StrictStr,
field_validator,
)
from pydantic import BaseModel, ConfigDict, Field, StrictBool, field_validator
from typing_extensions import Annotated, Self

from stackit.iaas.models.allowed_addresses_inner import AllowedAddressesInner


class ServerNetwork(BaseModel):
"""
Describes the object that matches servers to its networks.
"""

allowed_addresses: Optional[List[StrictStr]] = Field(
allowed_addresses: Optional[List[AllowedAddressesInner]] = Field(
default=None, description="A list of IPs or CIDR notations.", alias="allowedAddresses"
)
ipv4: Optional[Annotated[str, Field(strict=True)]] = Field(
Expand Down Expand Up @@ -191,6 +186,13 @@ def to_dict(self) -> Dict[str, Any]:
exclude=excluded_fields,
exclude_none=True,
)
# override the default output from pydantic by calling `to_dict()` of each item in allowed_addresses (list)
_items = []
if self.allowed_addresses:
for _item in self.allowed_addresses:
if _item:
_items.append(_item.to_dict())
_dict["allowedAddresses"] = _items
return _dict

@classmethod
Expand All @@ -204,7 +206,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:

_obj = cls.model_validate(
{
"allowedAddresses": obj.get("allowedAddresses"),
"allowedAddresses": (
[AllowedAddressesInner.from_dict(_item) for _item in obj["allowedAddresses"]]
if obj.get("allowedAddresses") is not None
else None
),
"ipv4": obj.get("ipv4"),
"ipv6": obj.get("ipv6"),
"mac": obj.get("mac"),
Expand Down
26 changes: 16 additions & 10 deletions services/iaas/stackit/iaas/models/update_nic_payload.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,18 @@
import re
from typing import Any, ClassVar, Dict, List, Optional, Set

from pydantic import (
BaseModel,
ConfigDict,
Field,
StrictBool,
StrictStr,
field_validator,
)
from pydantic import BaseModel, ConfigDict, Field, StrictBool, field_validator
from typing_extensions import Annotated, Self

from stackit.iaas.models.allowed_addresses_inner import AllowedAddressesInner


class UpdateNICPayload(BaseModel):
"""
Object that represents a network interface update.
"""

allowed_addresses: Optional[List[StrictStr]] = Field(
allowed_addresses: Optional[List[AllowedAddressesInner]] = Field(
default=None, description="A list of IPs or CIDR notations.", alias="allowedAddresses"
)
labels: Optional[Dict[str, Any]] = Field(
Expand Down Expand Up @@ -101,6 +96,13 @@ def to_dict(self) -> Dict[str, Any]:
exclude=excluded_fields,
exclude_none=True,
)
# override the default output from pydantic by calling `to_dict()` of each item in allowed_addresses (list)
_items = []
if self.allowed_addresses:
for _item in self.allowed_addresses:
if _item:
_items.append(_item.to_dict())
_dict["allowedAddresses"] = _items
return _dict

@classmethod
Expand All @@ -114,7 +116,11 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:

_obj = cls.model_validate(
{
"allowedAddresses": obj.get("allowedAddresses"),
"allowedAddresses": (
[AllowedAddressesInner.from_dict(_item) for _item in obj["allowedAddresses"]]
if obj.get("allowedAddresses") is not None
else None
),
"labels": obj.get("labels"),
"name": obj.get("name"),
"nicSecurity": obj.get("nicSecurity"),
Expand Down

0 comments on commit f984705

Please sign in to comment.