# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from . import _utilities

__all__ = [
    'VirtualMachineCloudinitArgs',
    'VirtualMachineDiskArgs',
    'VirtualMachineNetworkInterfaceArgs',
]

@pulumi.input_type
class VirtualMachineCloudinitArgs:
    def __init__(__self__, *,
                 network_data: Optional[pulumi.Input[str]] = None,
                 network_data_base64: Optional[pulumi.Input[str]] = None,
                 network_data_secret_name: Optional[pulumi.Input[str]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 user_data: Optional[pulumi.Input[str]] = None,
                 user_data_base64: Optional[pulumi.Input[str]] = None,
                 user_data_secret_name: Optional[pulumi.Input[str]] = None):
        if network_data is not None:
            pulumi.set(__self__, "network_data", network_data)
        if network_data_base64 is not None:
            pulumi.set(__self__, "network_data_base64", network_data_base64)
        if network_data_secret_name is not None:
            pulumi.set(__self__, "network_data_secret_name", network_data_secret_name)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if user_data is not None:
            pulumi.set(__self__, "user_data", user_data)
        if user_data_base64 is not None:
            pulumi.set(__self__, "user_data_base64", user_data_base64)
        if user_data_secret_name is not None:
            pulumi.set(__self__, "user_data_secret_name", user_data_secret_name)

    @property
    @pulumi.getter(name="networkData")
    def network_data(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "network_data")

    @network_data.setter
    def network_data(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "network_data", value)

    @property
    @pulumi.getter(name="networkDataBase64")
    def network_data_base64(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "network_data_base64")

    @network_data_base64.setter
    def network_data_base64(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "network_data_base64", value)

    @property
    @pulumi.getter(name="networkDataSecretName")
    def network_data_secret_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "network_data_secret_name")

    @network_data_secret_name.setter
    def network_data_secret_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "network_data_secret_name", value)

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter(name="userData")
    def user_data(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_data")

    @user_data.setter
    def user_data(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_data", value)

    @property
    @pulumi.getter(name="userDataBase64")
    def user_data_base64(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_data_base64")

    @user_data_base64.setter
    def user_data_base64(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_data_base64", value)

    @property
    @pulumi.getter(name="userDataSecretName")
    def user_data_secret_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_data_secret_name")

    @user_data_secret_name.setter
    def user_data_secret_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_data_secret_name", value)


@pulumi.input_type
class VirtualMachineDiskArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 access_mode: Optional[pulumi.Input[str]] = None,
                 auto_delete: Optional[pulumi.Input[bool]] = None,
                 boot_order: Optional[pulumi.Input[int]] = None,
                 bus: Optional[pulumi.Input[str]] = None,
                 container_image_name: Optional[pulumi.Input[str]] = None,
                 existing_volume_name: Optional[pulumi.Input[str]] = None,
                 hot_plug: Optional[pulumi.Input[bool]] = None,
                 image: Optional[pulumi.Input[str]] = None,
                 size: Optional[pulumi.Input[str]] = None,
                 storage_class_name: Optional[pulumi.Input[str]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 volume_mode: Optional[pulumi.Input[str]] = None,
                 volume_name: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A unique name
        """
        pulumi.set(__self__, "name", name)
        if access_mode is not None:
            pulumi.set(__self__, "access_mode", access_mode)
        if auto_delete is not None:
            pulumi.set(__self__, "auto_delete", auto_delete)
        if boot_order is not None:
            pulumi.set(__self__, "boot_order", boot_order)
        if bus is not None:
            pulumi.set(__self__, "bus", bus)
        if container_image_name is not None:
            pulumi.set(__self__, "container_image_name", container_image_name)
        if existing_volume_name is not None:
            pulumi.set(__self__, "existing_volume_name", existing_volume_name)
        if hot_plug is not None:
            pulumi.set(__self__, "hot_plug", hot_plug)
        if image is not None:
            pulumi.set(__self__, "image", image)
        if size is not None:
            pulumi.set(__self__, "size", size)
        if storage_class_name is not None:
            pulumi.set(__self__, "storage_class_name", storage_class_name)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if volume_mode is not None:
            pulumi.set(__self__, "volume_mode", volume_mode)
        if volume_name is not None:
            pulumi.set(__self__, "volume_name", volume_name)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A unique name
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="accessMode")
    def access_mode(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "access_mode")

    @access_mode.setter
    def access_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "access_mode", value)

    @property
    @pulumi.getter(name="autoDelete")
    def auto_delete(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "auto_delete")

    @auto_delete.setter
    def auto_delete(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "auto_delete", value)

    @property
    @pulumi.getter(name="bootOrder")
    def boot_order(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "boot_order")

    @boot_order.setter
    def boot_order(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "boot_order", value)

    @property
    @pulumi.getter
    def bus(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "bus")

    @bus.setter
    def bus(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "bus", value)

    @property
    @pulumi.getter(name="containerImageName")
    def container_image_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "container_image_name")

    @container_image_name.setter
    def container_image_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "container_image_name", value)

    @property
    @pulumi.getter(name="existingVolumeName")
    def existing_volume_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "existing_volume_name")

    @existing_volume_name.setter
    def existing_volume_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "existing_volume_name", value)

    @property
    @pulumi.getter(name="hotPlug")
    def hot_plug(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "hot_plug")

    @hot_plug.setter
    def hot_plug(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "hot_plug", value)

    @property
    @pulumi.getter
    def image(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "image")

    @image.setter
    def image(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "image", value)

    @property
    @pulumi.getter
    def size(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "size")

    @size.setter
    def size(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "size", value)

    @property
    @pulumi.getter(name="storageClassName")
    def storage_class_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "storage_class_name")

    @storage_class_name.setter
    def storage_class_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "storage_class_name", value)

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter(name="volumeMode")
    def volume_mode(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "volume_mode")

    @volume_mode.setter
    def volume_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "volume_mode", value)

    @property
    @pulumi.getter(name="volumeName")
    def volume_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "volume_name")

    @volume_name.setter
    def volume_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "volume_name", value)


@pulumi.input_type
class VirtualMachineNetworkInterfaceArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 interface_name: Optional[pulumi.Input[str]] = None,
                 ip_address: Optional[pulumi.Input[str]] = None,
                 mac_address: Optional[pulumi.Input[str]] = None,
                 model: Optional[pulumi.Input[str]] = None,
                 network_name: Optional[pulumi.Input[str]] = None,
                 type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] name: A unique name
        """
        pulumi.set(__self__, "name", name)
        if interface_name is not None:
            pulumi.set(__self__, "interface_name", interface_name)
        if ip_address is not None:
            pulumi.set(__self__, "ip_address", ip_address)
        if mac_address is not None:
            pulumi.set(__self__, "mac_address", mac_address)
        if model is not None:
            pulumi.set(__self__, "model", model)
        if network_name is not None:
            pulumi.set(__self__, "network_name", network_name)
        if type is not None:
            pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def name(self) -> pulumi.Input[str]:
        """
        A unique name
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: pulumi.Input[str]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="interfaceName")
    def interface_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "interface_name")

    @interface_name.setter
    def interface_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "interface_name", value)

    @property
    @pulumi.getter(name="ipAddress")
    def ip_address(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "ip_address")

    @ip_address.setter
    def ip_address(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ip_address", value)

    @property
    @pulumi.getter(name="macAddress")
    def mac_address(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "mac_address")

    @mac_address.setter
    def mac_address(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "mac_address", value)

    @property
    @pulumi.getter
    def model(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "model")

    @model.setter
    def model(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "model", value)

    @property
    @pulumi.getter(name="networkName")
    def network_name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "network_name")

    @network_name.setter
    def network_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "network_name", value)

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "type", value)


