Models

from typing import Any, Dict, List, Literal, Optional, Union

GlobalOptionTypeDef = Literal["global"]

DeploymentDatastoreDef = Literal[
    "datastore1", "datastore2", "datastore3"
]

VariableOptionTypeDef = Literal["variable"]

ModeDef = Literal["access", "trunk"]

VnfDeploymentDatastoreDef = Literal[
    "datastore1", "datastore2", "datastore3"
]

VnfModeDef = Literal["access", "trunk"]

VnfAttributesVnfDeploymentDatastoreDef = Literal[
    "datastore1", "datastore2", "datastore3"
]

VnfAttributesVnfModeDef = Literal["access", "trunk"]


class CreateNfvirtualVnfParcelPostResponse:
    """
    Profile Parcel POST Response schema
    """

    parcel_id: str
    metadata: Optional[Any]


class OneOfNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfImageOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfBootupTimeOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfDeploymentDatastoreOptionsDef:
    option_type: GlobalOptionTypeDef
    value: DeploymentDatastoreDef  # pytype: disable=annotation-type-mismatch


class OneOfVcpusOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfVcpusOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfMemoryMbOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfMemoryMbOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfRootDiskMbOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfRootDiskMbOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfDayZeroMountPointOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfDayZeroDayZeroFileContentOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfDayZeroCustomPropertyNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfDayZeroCustomPropertyValOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfDayZeroCustomPropertyValOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str


class OneOfDayZeroCustomPropertyEncryptedValOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfDayZeroCustomPropertyEncryptedValOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str


class CustomProperty:
    encrypted_val: Optional[
        Union[
            OneOfDayZeroCustomPropertyEncryptedValOptionsDef1,
            OneOfDayZeroCustomPropertyEncryptedValOptionsDef2,
        ]
    ]
    name: Optional[OneOfDayZeroCustomPropertyNameOptionsDef]
    val: Optional[
        Union[
            OneOfDayZeroCustomPropertyValOptionsDef1,
            OneOfDayZeroCustomPropertyValOptionsDef2,
        ]
    ]


class DayZero:
    day_zero_file_content: OneOfDayZeroDayZeroFileContentOptionsDef
    mount_point: OneOfDayZeroMountPointOptionsDef
    # custom property
    custom_property: Optional[List[CustomProperty]]


class OneOfInterfacesNameOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfInterfacesNameOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfInterfacesNicidOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfInterfacesNicidOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfInterfacesSriovOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: bool


class OneOfInterfacesSriovOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfModeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: ModeDef  # pytype: disable=annotation-type-mismatch


class OneOfModeOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class OneOfVlanOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfVlanOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class Interfaces:
    mode: Optional[Union[OneOfModeOptionsDef1, OneOfModeOptionsDef2]]
    name: Optional[
        Union[
            OneOfInterfacesNameOptionsDef1,
            OneOfInterfacesNameOptionsDef2,
        ]
    ]
    nicid: Optional[
        Union[
            OneOfInterfacesNicidOptionsDef1,
            OneOfInterfacesNicidOptionsDef2,
        ]
    ]
    sriov: Optional[
        Union[
            OneOfInterfacesSriovOptionsDef1,
            OneOfInterfacesSriovOptionsDef2,
        ]
    ]
    vlan: Optional[Union[OneOfVlanOptionsDef1, OneOfVlanOptionsDef2]]


class OneOfAdditionalDisksDiskSizeOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class OneOfAdditionalDisksMountPathOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class OneOfAdditionalDisksMountPathOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str
    default: Optional[str]
    description: Optional[str]


class AdditionalDisks:
    disk_size: OneOfAdditionalDisksDiskSizeOptionsDef
    mount_path: Optional[
        Union[
            OneOfAdditionalDisksMountPathOptionsDef1,
            OneOfAdditionalDisksMountPathOptionsDef2,
        ]
    ]


class Data:
    image: OneOfImageOptionsDef
    memory_mb: Union[
        OneOfMemoryMbOptionsDef1, OneOfMemoryMbOptionsDef2
    ]
    name: OneOfNameOptionsDef
    vcpus: Union[OneOfVcpusOptionsDef1, OneOfVcpusOptionsDef2]
    # Additional disks
    additional_disks: Optional[List[AdditionalDisks]]
    bootup_time: Optional[OneOfBootupTimeOptionsDef]
    # DayZero file
    day_zero: Optional[List[DayZero]]
    deployment_datastore: Optional[OneOfDeploymentDatastoreOptionsDef]
    # Interface name
    interfaces: Optional[List[Interfaces]]
    root_disk_mb: Optional[
        Union[OneOfRootDiskMbOptionsDef1, OneOfRootDiskMbOptionsDef2]
    ]


class CreateNfvirtualVnfParcelPostRequest:
    """
    VNF profile parcel schema for POST request
    """

    data: Data
    description: Optional[str]
    metadata: Optional[Any]
    name: Optional[str]


class VnfOneOfNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class VnfOneOfImageOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class VnfOneOfBootupTimeOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class VnfOneOfDeploymentDatastoreOptionsDef:
    option_type: GlobalOptionTypeDef
    value: VnfDeploymentDatastoreDef  # pytype: disable=annotation-type-mismatch


class VnfOneOfVcpusOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class VnfOneOfMemoryMbOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class VnfOneOfRootDiskMbOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class VnfOneOfDayZeroMountPointOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class VnfOneOfDayZeroDayZeroFileContentOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class VnfOneOfDayZeroCustomPropertyNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class VnfOneOfDayZeroCustomPropertyValOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class VnfOneOfDayZeroCustomPropertyValOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str


class VnfOneOfDayZeroCustomPropertyEncryptedValOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class VnfOneOfDayZeroCustomPropertyEncryptedValOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str


class VnfCustomProperty:
    encrypted_val: Optional[
        Union[
            VnfOneOfDayZeroCustomPropertyEncryptedValOptionsDef1,
            VnfOneOfDayZeroCustomPropertyEncryptedValOptionsDef2,
        ]
    ]
    name: Optional[VnfOneOfDayZeroCustomPropertyNameOptionsDef]
    val: Optional[
        Union[
            VnfOneOfDayZeroCustomPropertyValOptionsDef1,
            VnfOneOfDayZeroCustomPropertyValOptionsDef2,
        ]
    ]


class VnfDayZero:
    day_zero_file_content: VnfOneOfDayZeroDayZeroFileContentOptionsDef
    mount_point: VnfOneOfDayZeroMountPointOptionsDef
    # custom property
    custom_property: Optional[List[VnfCustomProperty]]


class VnfOneOfInterfacesNameOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class VnfOneOfInterfacesNicidOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class VnfOneOfModeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: VnfModeDef  # pytype: disable=annotation-type-mismatch


class VnfOneOfVlanOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class VnfInterfaces:
    mode: Optional[
        Union[VnfOneOfModeOptionsDef1, OneOfModeOptionsDef2]
    ]
    name: Optional[
        Union[
            VnfOneOfInterfacesNameOptionsDef1,
            OneOfInterfacesNameOptionsDef2,
        ]
    ]
    nicid: Optional[
        Union[
            VnfOneOfInterfacesNicidOptionsDef1,
            OneOfInterfacesNicidOptionsDef2,
        ]
    ]
    sriov: Optional[
        Union[
            OneOfInterfacesSriovOptionsDef1,
            OneOfInterfacesSriovOptionsDef2,
        ]
    ]
    vlan: Optional[
        Union[VnfOneOfVlanOptionsDef1, OneOfVlanOptionsDef2]
    ]


class VnfOneOfAdditionalDisksDiskSizeOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class VnfOneOfAdditionalDisksMountPathOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class VnfAdditionalDisks:
    disk_size: VnfOneOfAdditionalDisksDiskSizeOptionsDef
    mount_path: Optional[
        Union[
            VnfOneOfAdditionalDisksMountPathOptionsDef1,
            OneOfAdditionalDisksMountPathOptionsDef2,
        ]
    ]


class VnfData:
    image: VnfOneOfImageOptionsDef
    memory_mb: Union[
        VnfOneOfMemoryMbOptionsDef1, OneOfMemoryMbOptionsDef2
    ]
    name: VnfOneOfNameOptionsDef
    vcpus: Union[VnfOneOfVcpusOptionsDef1, OneOfVcpusOptionsDef2]
    # Additional disks
    additional_disks: Optional[List[VnfAdditionalDisks]]
    bootup_time: Optional[VnfOneOfBootupTimeOptionsDef]
    # DayZero file
    day_zero: Optional[List[VnfDayZero]]
    deployment_datastore: Optional[
        VnfOneOfDeploymentDatastoreOptionsDef
    ]
    # Interface name
    interfaces: Optional[List[VnfInterfaces]]
    root_disk_mb: Optional[
        Union[
            VnfOneOfRootDiskMbOptionsDef1, OneOfRootDiskMbOptionsDef2
        ]
    ]


class Payload:
    """
    VNF profile parcel schema for PUT request
    """

    data: VnfData
    description: Optional[str]
    metadata: Optional[Any]
    name: Optional[str]


class GetSingleNfvirtualNetworksVnfAttributesVnfPayload:
    # User who last created this.
    created_by: Optional[str]
    # Timestamp of creation
    created_on: Optional[int]
    # User who last updated this.
    last_updated_by: Optional[str]
    # Timestamp of last update
    last_updated_on: Optional[int]
    parcel_id: Optional[str]
    parcel_type: Optional[str]
    # VNF profile parcel schema for PUT request
    payload: Optional[Payload]


class EditNfvirtualVnfParcelPutResponse:
    """
    Profile Parcel PUT Response schema
    """

    id: str
    metadata: Optional[Any]


class VnfAttributesVnfOneOfNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class VnfAttributesVnfOneOfImageOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class VnfAttributesVnfOneOfBootupTimeOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class VnfAttributesVnfOneOfDeploymentDatastoreOptionsDef:
    option_type: GlobalOptionTypeDef
    value: VnfAttributesVnfDeploymentDatastoreDef  # pytype: disable=annotation-type-mismatch


class VnfAttributesVnfOneOfVcpusOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class VnfAttributesVnfOneOfMemoryMbOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class VnfAttributesVnfOneOfRootDiskMbOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class VnfAttributesVnfOneOfDayZeroMountPointOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class VnfAttributesVnfOneOfDayZeroDayZeroFileContentOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class VnfAttributesVnfOneOfDayZeroCustomPropertyNameOptionsDef:
    option_type: GlobalOptionTypeDef
    value: str


class VnfAttributesVnfOneOfDayZeroCustomPropertyValOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class VnfAttributesVnfOneOfDayZeroCustomPropertyValOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str


class VnfAttributesVnfOneOfDayZeroCustomPropertyEncryptedValOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class VnfAttributesVnfOneOfDayZeroCustomPropertyEncryptedValOptionsDef2:
    option_type: VariableOptionTypeDef
    value: str


class VnfAttributesVnfCustomProperty:
    encrypted_val: Optional[
        Union[
            VnfAttributesVnfOneOfDayZeroCustomPropertyEncryptedValOptionsDef1,
            VnfAttributesVnfOneOfDayZeroCustomPropertyEncryptedValOptionsDef2,
        ]
    ]
    name: Optional[
        VnfAttributesVnfOneOfDayZeroCustomPropertyNameOptionsDef
    ]
    val: Optional[
        Union[
            VnfAttributesVnfOneOfDayZeroCustomPropertyValOptionsDef1,
            VnfAttributesVnfOneOfDayZeroCustomPropertyValOptionsDef2,
        ]
    ]


class VnfAttributesVnfDayZero:
    day_zero_file_content: (
        VnfAttributesVnfOneOfDayZeroDayZeroFileContentOptionsDef
    )
    mount_point: VnfAttributesVnfOneOfDayZeroMountPointOptionsDef
    # custom property
    custom_property: Optional[List[VnfAttributesVnfCustomProperty]]


class VnfAttributesVnfOneOfInterfacesNameOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class VnfAttributesVnfOneOfInterfacesNicidOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class VnfAttributesVnfOneOfModeOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: VnfAttributesVnfModeDef  # pytype: disable=annotation-type-mismatch


class VnfAttributesVnfOneOfVlanOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: int


class VnfAttributesVnfInterfaces:
    mode: Optional[
        Union[
            VnfAttributesVnfOneOfModeOptionsDef1, OneOfModeOptionsDef2
        ]
    ]
    name: Optional[
        Union[
            VnfAttributesVnfOneOfInterfacesNameOptionsDef1,
            OneOfInterfacesNameOptionsDef2,
        ]
    ]
    nicid: Optional[
        Union[
            VnfAttributesVnfOneOfInterfacesNicidOptionsDef1,
            OneOfInterfacesNicidOptionsDef2,
        ]
    ]
    sriov: Optional[
        Union[
            OneOfInterfacesSriovOptionsDef1,
            OneOfInterfacesSriovOptionsDef2,
        ]
    ]
    vlan: Optional[
        Union[
            VnfAttributesVnfOneOfVlanOptionsDef1, OneOfVlanOptionsDef2
        ]
    ]


class VnfAttributesVnfOneOfAdditionalDisksDiskSizeOptionsDef:
    option_type: GlobalOptionTypeDef
    value: int


class VnfAttributesVnfOneOfAdditionalDisksMountPathOptionsDef1:
    option_type: GlobalOptionTypeDef
    value: str


class VnfAttributesVnfAdditionalDisks:
    disk_size: VnfAttributesVnfOneOfAdditionalDisksDiskSizeOptionsDef
    mount_path: Optional[
        Union[
            VnfAttributesVnfOneOfAdditionalDisksMountPathOptionsDef1,
            OneOfAdditionalDisksMountPathOptionsDef2,
        ]
    ]


class VnfAttributesVnfData:
    image: VnfAttributesVnfOneOfImageOptionsDef
    memory_mb: Union[
        VnfAttributesVnfOneOfMemoryMbOptionsDef1,
        OneOfMemoryMbOptionsDef2,
    ]
    name: VnfAttributesVnfOneOfNameOptionsDef
    vcpus: Union[
        VnfAttributesVnfOneOfVcpusOptionsDef1, OneOfVcpusOptionsDef2
    ]
    # Additional disks
    additional_disks: Optional[List[VnfAttributesVnfAdditionalDisks]]
    bootup_time: Optional[VnfAttributesVnfOneOfBootupTimeOptionsDef]
    # DayZero file
    day_zero: Optional[List[VnfAttributesVnfDayZero]]
    deployment_datastore: Optional[
        VnfAttributesVnfOneOfDeploymentDatastoreOptionsDef
    ]
    # Interface name
    interfaces: Optional[List[VnfAttributesVnfInterfaces]]
    root_disk_mb: Optional[
        Union[
            VnfAttributesVnfOneOfRootDiskMbOptionsDef1,
            OneOfRootDiskMbOptionsDef2,
        ]
    ]


class EditNfvirtualVnfParcelPutRequest:
    """
    VNF profile parcel schema for PUT request
    """

    data: VnfAttributesVnfData
    description: Optional[str]
    metadata: Optional[Any]
    name: Optional[str]