# 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 copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from . import _utilities
from . import outputs
from ._inputs import *

__all__ = [
    'GetVm2Result',
    'AwaitableGetVm2Result',
    'get_vm2',
    'get_vm2_output',
]

@pulumi.output_type
class GetVm2Result:
    """
    A collection of values returned by getVm2.
    """
    def __init__(__self__, clone=None, cpu=None, description=None, id=None, name=None, node_name=None, tags=None, template=None, timeouts=None, vga=None):
        if clone and not isinstance(clone, dict):
            raise TypeError("Expected argument 'clone' to be a dict")
        pulumi.set(__self__, "clone", clone)
        if cpu and not isinstance(cpu, dict):
            raise TypeError("Expected argument 'cpu' to be a dict")
        pulumi.set(__self__, "cpu", cpu)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if id and not isinstance(id, int):
            raise TypeError("Expected argument 'id' to be a int")
        pulumi.set(__self__, "id", id)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if node_name and not isinstance(node_name, str):
            raise TypeError("Expected argument 'node_name' to be a str")
        pulumi.set(__self__, "node_name", node_name)
        if tags and not isinstance(tags, list):
            raise TypeError("Expected argument 'tags' to be a list")
        pulumi.set(__self__, "tags", tags)
        if template and not isinstance(template, bool):
            raise TypeError("Expected argument 'template' to be a bool")
        pulumi.set(__self__, "template", template)
        if timeouts and not isinstance(timeouts, dict):
            raise TypeError("Expected argument 'timeouts' to be a dict")
        pulumi.set(__self__, "timeouts", timeouts)
        if vga and not isinstance(vga, dict):
            raise TypeError("Expected argument 'vga' to be a dict")
        pulumi.set(__self__, "vga", vga)

    @property
    @pulumi.getter
    def clone(self) -> Optional['outputs.GetVm2CloneResult']:
        """
        The cloning configuration.
        """
        return pulumi.get(self, "clone")

    @property
    @pulumi.getter
    def cpu(self) -> 'outputs.GetVm2CpuResult':
        """
        The CPU configuration.
        """
        return pulumi.get(self, "cpu")

    @property
    @pulumi.getter
    def description(self) -> Optional[str]:
        """
        The description of the VM.
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The unique identifier of the VM in the Proxmox cluster.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def name(self) -> Optional[str]:
        """
        The name of the VM.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="nodeName")
    def node_name(self) -> str:
        """
        The name of the node where the VM is provisioned.
        """
        return pulumi.get(self, "node_name")

    @property
    @pulumi.getter
    def tags(self) -> Sequence[str]:
        """
        The tags assigned to the VM.
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter
    def template(self) -> Optional[bool]:
        """
        Whether the VM is a template.
        """
        return pulumi.get(self, "template")

    @property
    @pulumi.getter
    def timeouts(self) -> Optional['outputs.GetVm2TimeoutsResult']:
        return pulumi.get(self, "timeouts")

    @property
    @pulumi.getter
    def vga(self) -> 'outputs.GetVm2VgaResult':
        """
        The VGA configuration.
        """
        return pulumi.get(self, "vga")


class AwaitableGetVm2Result(GetVm2Result):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetVm2Result(
            clone=self.clone,
            cpu=self.cpu,
            description=self.description,
            id=self.id,
            name=self.name,
            node_name=self.node_name,
            tags=self.tags,
            template=self.template,
            timeouts=self.timeouts,
            vga=self.vga)


def get_vm2(clone: Optional[pulumi.InputType['GetVm2CloneArgs']] = None,
            cpu: Optional[pulumi.InputType['GetVm2CpuArgs']] = None,
            description: Optional[str] = None,
            id: Optional[int] = None,
            name: Optional[str] = None,
            node_name: Optional[str] = None,
            tags: Optional[Sequence[str]] = None,
            template: Optional[bool] = None,
            timeouts: Optional[pulumi.InputType['GetVm2TimeoutsArgs']] = None,
            vga: Optional[pulumi.InputType['GetVm2VgaArgs']] = None,
            opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetVm2Result:
    """
    !> **DO NOT USE**
    This is an experimental implementation of a Proxmox VM datasource using Plugin Framework.


    :param pulumi.InputType['GetVm2CloneArgs'] clone: The cloning configuration.
    :param pulumi.InputType['GetVm2CpuArgs'] cpu: The CPU configuration.
    :param str description: The description of the VM.
    :param int id: The unique identifier of the VM in the Proxmox cluster.
    :param str name: The name of the VM.
    :param str node_name: The name of the node where the VM is provisioned.
    :param Sequence[str] tags: The tags assigned to the VM.
    :param bool template: Whether the VM is a template.
    :param pulumi.InputType['GetVm2VgaArgs'] vga: The VGA configuration.
    """
    __args__ = dict()
    __args__['clone'] = clone
    __args__['cpu'] = cpu
    __args__['description'] = description
    __args__['id'] = id
    __args__['name'] = name
    __args__['nodeName'] = node_name
    __args__['tags'] = tags
    __args__['template'] = template
    __args__['timeouts'] = timeouts
    __args__['vga'] = vga
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('proxmoxve:index/getVm2:getVm2', __args__, opts=opts, typ=GetVm2Result).value

    return AwaitableGetVm2Result(
        clone=pulumi.get(__ret__, 'clone'),
        cpu=pulumi.get(__ret__, 'cpu'),
        description=pulumi.get(__ret__, 'description'),
        id=pulumi.get(__ret__, 'id'),
        name=pulumi.get(__ret__, 'name'),
        node_name=pulumi.get(__ret__, 'node_name'),
        tags=pulumi.get(__ret__, 'tags'),
        template=pulumi.get(__ret__, 'template'),
        timeouts=pulumi.get(__ret__, 'timeouts'),
        vga=pulumi.get(__ret__, 'vga'))


@_utilities.lift_output_func(get_vm2)
def get_vm2_output(clone: Optional[pulumi.Input[Optional[pulumi.InputType['GetVm2CloneArgs']]]] = None,
                   cpu: Optional[pulumi.Input[Optional[pulumi.InputType['GetVm2CpuArgs']]]] = None,
                   description: Optional[pulumi.Input[Optional[str]]] = None,
                   id: Optional[pulumi.Input[int]] = None,
                   name: Optional[pulumi.Input[Optional[str]]] = None,
                   node_name: Optional[pulumi.Input[str]] = None,
                   tags: Optional[pulumi.Input[Optional[Sequence[str]]]] = None,
                   template: Optional[pulumi.Input[Optional[bool]]] = None,
                   timeouts: Optional[pulumi.Input[Optional[pulumi.InputType['GetVm2TimeoutsArgs']]]] = None,
                   vga: Optional[pulumi.Input[Optional[pulumi.InputType['GetVm2VgaArgs']]]] = None,
                   opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetVm2Result]:
    """
    !> **DO NOT USE**
    This is an experimental implementation of a Proxmox VM datasource using Plugin Framework.


    :param pulumi.InputType['GetVm2CloneArgs'] clone: The cloning configuration.
    :param pulumi.InputType['GetVm2CpuArgs'] cpu: The CPU configuration.
    :param str description: The description of the VM.
    :param int id: The unique identifier of the VM in the Proxmox cluster.
    :param str name: The name of the VM.
    :param str node_name: The name of the node where the VM is provisioned.
    :param Sequence[str] tags: The tags assigned to the VM.
    :param bool template: Whether the VM is a template.
    :param pulumi.InputType['GetVm2VgaArgs'] vga: The VGA configuration.
    """
    ...
