# 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

__all__ = [
    'PciMap',
    'UsbMap',
    'GetPciMapResult',
    'GetUsbMapResult',
]

@pulumi.output_type
class PciMap(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "iommuGroup":
            suggest = "iommu_group"
        elif key == "subsystemId":
            suggest = "subsystem_id"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in PciMap. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        PciMap.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        PciMap.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 id: str,
                 node: str,
                 path: str,
                 comment: Optional[str] = None,
                 iommu_group: Optional[int] = None,
                 subsystem_id: Optional[str] = None):
        """
        :param str id: The ID of the map.
        :param str node: The node name of the map.
        :param str path: The path of the map.
        :param str comment: The comment of the mapped PCI device.
        :param int iommu_group: The IOMMU group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set
        :param str subsystem_id: The subsystem ID group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "node", node)
        pulumi.set(__self__, "path", path)
        if comment is not None:
            pulumi.set(__self__, "comment", comment)
        if iommu_group is not None:
            pulumi.set(__self__, "iommu_group", iommu_group)
        if subsystem_id is not None:
            pulumi.set(__self__, "subsystem_id", subsystem_id)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the map.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def node(self) -> str:
        """
        The node name of the map.
        """
        return pulumi.get(self, "node")

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        The path of the map.
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter
    def comment(self) -> Optional[str]:
        """
        The comment of the mapped PCI device.
        """
        return pulumi.get(self, "comment")

    @property
    @pulumi.getter(name="iommuGroup")
    def iommu_group(self) -> Optional[int]:
        """
        The IOMMU group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set
        """
        return pulumi.get(self, "iommu_group")

    @property
    @pulumi.getter(name="subsystemId")
    def subsystem_id(self) -> Optional[str]:
        """
        The subsystem ID group of the map. Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set
        """
        return pulumi.get(self, "subsystem_id")


@pulumi.output_type
class UsbMap(dict):
    def __init__(__self__, *,
                 id: str,
                 node: str,
                 comment: Optional[str] = None,
                 path: Optional[str] = None):
        """
        :param str id: The ID of the map.
        :param str node: The node name of the map.
        :param str comment: The comment of the mapped USB device.
        :param str path: The path of the map. For hardware mappings of type USB the path is optional and indicates that the device is mapped through the device ID instead of ports.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "node", node)
        if comment is not None:
            pulumi.set(__self__, "comment", comment)
        if path is not None:
            pulumi.set(__self__, "path", path)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of the map.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def node(self) -> str:
        """
        The node name of the map.
        """
        return pulumi.get(self, "node")

    @property
    @pulumi.getter
    def comment(self) -> Optional[str]:
        """
        The comment of the mapped USB device.
        """
        return pulumi.get(self, "comment")

    @property
    @pulumi.getter
    def path(self) -> Optional[str]:
        """
        The path of the map. For hardware mappings of type USB the path is optional and indicates that the device is mapped through the device ID instead of ports.
        """
        return pulumi.get(self, "path")


@pulumi.output_type
class GetPciMapResult(dict):
    def __init__(__self__, *,
                 comment: str,
                 id: str,
                 iommu_group: int,
                 node: str,
                 path: str,
                 subsystem_id: str):
        """
        :param str comment: The comment of the mapped PCI device.
        :param str id: The ID attribute of the map.
        :param int iommu_group: The IOMMU group attribute of the map.
        :param str node: The node name attribute of the map.
        :param str path: The path attribute of the map.
        :param str subsystem_id: The subsystem ID attribute of the map.Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set.
        """
        pulumi.set(__self__, "comment", comment)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "iommu_group", iommu_group)
        pulumi.set(__self__, "node", node)
        pulumi.set(__self__, "path", path)
        pulumi.set(__self__, "subsystem_id", subsystem_id)

    @property
    @pulumi.getter
    def comment(self) -> str:
        """
        The comment of the mapped PCI device.
        """
        return pulumi.get(self, "comment")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID attribute of the map.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter(name="iommuGroup")
    def iommu_group(self) -> int:
        """
        The IOMMU group attribute of the map.
        """
        return pulumi.get(self, "iommu_group")

    @property
    @pulumi.getter
    def node(self) -> str:
        """
        The node name attribute of the map.
        """
        return pulumi.get(self, "node")

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        The path attribute of the map.
        """
        return pulumi.get(self, "path")

    @property
    @pulumi.getter(name="subsystemId")
    def subsystem_id(self) -> str:
        """
        The subsystem ID attribute of the map.Not mandatory for the Proxmox VE API call, but causes a PCI hardware mapping to be incomplete when not set.
        """
        return pulumi.get(self, "subsystem_id")


@pulumi.output_type
class GetUsbMapResult(dict):
    def __init__(__self__, *,
                 comment: str,
                 id: str,
                 node: str,
                 path: str):
        """
        :param str comment: The comment of the mapped USB device.
        :param str id: The ID attribute of the map.
        :param str node: The node name attribute of the map.
        :param str path: The path attribute of the map.
        """
        pulumi.set(__self__, "comment", comment)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "node", node)
        pulumi.set(__self__, "path", path)

    @property
    @pulumi.getter
    def comment(self) -> str:
        """
        The comment of the mapped USB device.
        """
        return pulumi.get(self, "comment")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID attribute of the map.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def node(self) -> str:
        """
        The node name attribute of the map.
        """
        return pulumi.get(self, "node")

    @property
    @pulumi.getter
    def path(self) -> str:
        """
        The path attribute of the map.
        """
        return pulumi.get(self, "path")


