# 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__ = [
    'ServicePlanDefaultAutoShutdown',
    'ServicePlanDefaultConnection',
    'ServicePlanSupport',
]

@pulumi.output_type
class ServicePlanDefaultAutoShutdown(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "disconnectDelay":
            suggest = "disconnect_delay"
        elif key == "idleDelay":
            suggest = "idle_delay"
        elif key == "noConnectDelay":
            suggest = "no_connect_delay"
        elif key == "shutdownOnIdle":
            suggest = "shutdown_on_idle"

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

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

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

    def __init__(__self__, *,
                 disconnect_delay: Optional[str] = None,
                 idle_delay: Optional[str] = None,
                 no_connect_delay: Optional[str] = None,
                 shutdown_on_idle: Optional[str] = None):
        """
        :param str disconnect_delay: The amount of time a VM will stay running after a user disconnects if this behavior is enabled. This value must be formatted as an ISO 8601 string.
        :param str idle_delay: The amount of time a VM will idle before it is shutdown if this behavior is enabled. This value must be formatted as an ISO 8601 string.
        :param str no_connect_delay: The amount of time a VM will stay running before it is shutdown if no connection is made and this behavior is enabled. This value must be formatted as an ISO 8601 string.
        :param str shutdown_on_idle: Will a VM get shutdown when it has idled for a period of time? Possible values are `LowUsage` and `UserAbsence`.
        """
        if disconnect_delay is not None:
            pulumi.set(__self__, "disconnect_delay", disconnect_delay)
        if idle_delay is not None:
            pulumi.set(__self__, "idle_delay", idle_delay)
        if no_connect_delay is not None:
            pulumi.set(__self__, "no_connect_delay", no_connect_delay)
        if shutdown_on_idle is not None:
            pulumi.set(__self__, "shutdown_on_idle", shutdown_on_idle)

    @property
    @pulumi.getter(name="disconnectDelay")
    def disconnect_delay(self) -> Optional[str]:
        """
        The amount of time a VM will stay running after a user disconnects if this behavior is enabled. This value must be formatted as an ISO 8601 string.
        """
        return pulumi.get(self, "disconnect_delay")

    @property
    @pulumi.getter(name="idleDelay")
    def idle_delay(self) -> Optional[str]:
        """
        The amount of time a VM will idle before it is shutdown if this behavior is enabled. This value must be formatted as an ISO 8601 string.
        """
        return pulumi.get(self, "idle_delay")

    @property
    @pulumi.getter(name="noConnectDelay")
    def no_connect_delay(self) -> Optional[str]:
        """
        The amount of time a VM will stay running before it is shutdown if no connection is made and this behavior is enabled. This value must be formatted as an ISO 8601 string.
        """
        return pulumi.get(self, "no_connect_delay")

    @property
    @pulumi.getter(name="shutdownOnIdle")
    def shutdown_on_idle(self) -> Optional[str]:
        """
        Will a VM get shutdown when it has idled for a period of time? Possible values are `LowUsage` and `UserAbsence`.
        """
        return pulumi.get(self, "shutdown_on_idle")


@pulumi.output_type
class ServicePlanDefaultConnection(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "clientRdpAccess":
            suggest = "client_rdp_access"
        elif key == "clientSshAccess":
            suggest = "client_ssh_access"
        elif key == "webRdpAccess":
            suggest = "web_rdp_access"
        elif key == "webSshAccess":
            suggest = "web_ssh_access"

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

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

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

    def __init__(__self__, *,
                 client_rdp_access: Optional[str] = None,
                 client_ssh_access: Optional[str] = None,
                 web_rdp_access: Optional[str] = None,
                 web_ssh_access: Optional[str] = None):
        """
        :param str client_rdp_access: The enabled access level for Client Access over RDP. Possible values are `Private` and `Public`.
        :param str client_ssh_access: The enabled access level for Client Access over SSH. Possible values are `Private` and `Public`.
        :param str web_rdp_access: The enabled access level for Web Access over RDP. Possible values are `Private` and `Public`.
        :param str web_ssh_access: The enabled access level for Web Access over SSH. Possible values are `Private` and `Public`.
        """
        if client_rdp_access is not None:
            pulumi.set(__self__, "client_rdp_access", client_rdp_access)
        if client_ssh_access is not None:
            pulumi.set(__self__, "client_ssh_access", client_ssh_access)
        if web_rdp_access is not None:
            pulumi.set(__self__, "web_rdp_access", web_rdp_access)
        if web_ssh_access is not None:
            pulumi.set(__self__, "web_ssh_access", web_ssh_access)

    @property
    @pulumi.getter(name="clientRdpAccess")
    def client_rdp_access(self) -> Optional[str]:
        """
        The enabled access level for Client Access over RDP. Possible values are `Private` and `Public`.
        """
        return pulumi.get(self, "client_rdp_access")

    @property
    @pulumi.getter(name="clientSshAccess")
    def client_ssh_access(self) -> Optional[str]:
        """
        The enabled access level for Client Access over SSH. Possible values are `Private` and `Public`.
        """
        return pulumi.get(self, "client_ssh_access")

    @property
    @pulumi.getter(name="webRdpAccess")
    def web_rdp_access(self) -> Optional[str]:
        """
        The enabled access level for Web Access over RDP. Possible values are `Private` and `Public`.
        """
        return pulumi.get(self, "web_rdp_access")

    @property
    @pulumi.getter(name="webSshAccess")
    def web_ssh_access(self) -> Optional[str]:
        """
        The enabled access level for Web Access over SSH. Possible values are `Private` and `Public`.
        """
        return pulumi.get(self, "web_ssh_access")


@pulumi.output_type
class ServicePlanSupport(dict):
    def __init__(__self__, *,
                 email: Optional[str] = None,
                 instructions: Optional[str] = None,
                 phone: Optional[str] = None,
                 url: Optional[str] = None):
        """
        :param str email: The email address for the support contact.
        :param str instructions: The instructions for users of the Lab Service Plan.
        :param str phone: The phone number for the support contact.
        :param str url: The web address for users of the Lab Service Plan.
        """
        if email is not None:
            pulumi.set(__self__, "email", email)
        if instructions is not None:
            pulumi.set(__self__, "instructions", instructions)
        if phone is not None:
            pulumi.set(__self__, "phone", phone)
        if url is not None:
            pulumi.set(__self__, "url", url)

    @property
    @pulumi.getter
    def email(self) -> Optional[str]:
        """
        The email address for the support contact.
        """
        return pulumi.get(self, "email")

    @property
    @pulumi.getter
    def instructions(self) -> Optional[str]:
        """
        The instructions for users of the Lab Service Plan.
        """
        return pulumi.get(self, "instructions")

    @property
    @pulumi.getter
    def phone(self) -> Optional[str]:
        """
        The phone number for the support contact.
        """
        return pulumi.get(self, "phone")

    @property
    @pulumi.getter
    def url(self) -> Optional[str]:
        """
        The web address for users of the Lab Service Plan.
        """
        return pulumi.get(self, "url")


