import dynamix_sdk.base as _base
from . import enums as _enums


class DiskAPIParamsNM(_base.BaseAPIParamsNestedModel):
    name: str
    size_gb: int
    storage_policy_id: int

    description: None | str = None
    image_id: None | int = None
    sep_id: None | int = None
    sep_pool_name: None | str = None


class InterfaceAPIParamsNM(_base.BaseAPIParamsNestedModel):
    enabled: bool = True
    net_id: int
    net_prefix: None | int = None
    net_type: _enums.NetType
    sdn_logical_port_id: None | str = None
    security_group_ids: None | list[int] = None
    security_group_mode: bool = False
    sdn_segment_id: None | str = None
    sdn_object_group_id: None | str = None
    sdn_logical_port_display_name: None | str = None
    sdn_logical_port_description: None | str = None

    ip_addr: None | str = None
    mac: None | str = None
    mtu: None | int = None


class RouteAPIParamsNM(_base.BaseAPIParamsNestedModel):
    dst_net_ip: str
    dst_net_mask: str
    gateway: str


class StoragePolicyQuotasAPIParamsNM(_base.BaseAPIParamsNestedModel):
    id: int
    storage_size_gb: int


class SEPPoolsAPIParamsNM(_base.BaseAPIParamsNestedModel):
    pool_names: list[str]
    sep_id: int


class OSUserAPIParamsNM(_base.BaseAPIParamsNestedModel):
    guid: str
    login: str
    password: str
    ssh_public_key: str


class NetMapConfigAPIParamsNM(_base.BaseAPIParamsNestedModel):
    target_dev: str
    source_type: _enums.NetMapSourceType
    source_value: str
