# 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__ = [
    'DatabaseMysqlUpdatesArgs',
    'DatabasePostgresqlUpdatesArgs',
    'FirewallDeviceArgs',
    'FirewallInboundArgs',
    'FirewallOutboundArgs',
    'InstanceAlertsArgs',
    'InstanceBackupsArgs',
    'InstanceBackupsScheduleArgs',
    'InstanceConfigArgs',
    'InstanceConfigDevicesArgs',
    'InstanceConfigDevicesSdaArgs',
    'InstanceConfigDevicesSdbArgs',
    'InstanceConfigDevicesSdcArgs',
    'InstanceConfigDevicesSddArgs',
    'InstanceConfigDevicesSdeArgs',
    'InstanceConfigDevicesSdfArgs',
    'InstanceConfigDevicesSdgArgs',
    'InstanceConfigDevicesSdhArgs',
    'InstanceConfigHelpersArgs',
    'InstanceConfigInterfaceArgs',
    'InstanceDiskArgs',
    'InstanceInterfaceArgs',
    'InstanceMetadataArgs',
    'InstanceSpecsArgs',
    'LkeClusterControlPlaneArgs',
    'LkeClusterPoolArgs',
    'LkeClusterPoolAutoscalerArgs',
    'LkeClusterPoolNodeArgs',
    'NodeBalancerConfigNodeStatusArgs',
    'NodeBalancerTransferArgs',
    'ObjectStorageBucketCertArgs',
    'ObjectStorageBucketLifecycleRuleArgs',
    'ObjectStorageBucketLifecycleRuleExpirationArgs',
    'ObjectStorageBucketLifecycleRuleNoncurrentVersionExpirationArgs',
    'ObjectStorageKeyBucketAccessArgs',
    'StackScriptUserDefinedFieldArgs',
    'UserDomainGrantArgs',
    'UserFirewallGrantArgs',
    'UserGlobalGrantsArgs',
    'UserImageGrantArgs',
    'UserLinodeGrantArgs',
    'UserLongviewGrantArgs',
    'UserNodebalancerGrantArgs',
    'UserStackscriptGrantArgs',
    'UserVolumeGrantArgs',
    'GetAccountLoginsFilterArgs',
    'GetAccountLoginsLoginArgs',
    'GetDatabaseBackupsBackupArgs',
    'GetDatabaseBackupsFilterArgs',
    'GetDatabaseEnginesEngineArgs',
    'GetDatabaseEnginesFilterArgs',
    'GetDatabaseMysqlBackupsFilterArgs',
    'GetDatabasesDatabaseArgs',
    'GetDatabasesFilterArgs',
    'GetImagesFilterArgs',
    'GetImagesImageArgs',
    'GetInstanceTypesFilterArgs',
    'GetInstanceTypesTypeArgs',
    'GetInstanceTypesTypeAddonArgs',
    'GetInstanceTypesTypeAddonBackupArgs',
    'GetInstanceTypesTypeAddonBackupPriceArgs',
    'GetInstanceTypesTypePriceArgs',
    'GetInstancesFilterArgs',
    'GetNodebalancersFilterArgs',
    'GetNodebalancersNodebalancerArgs',
    'GetNodebalancersNodebalancerTransferArgs',
    'GetRegionResolverArgs',
    'GetRegionsFilterArgs',
    'GetRegionsRegionArgs',
    'GetRegionsRegionResolverArgs',
    'GetStackScriptsFilterArgs',
    'GetStackScriptsStackscriptArgs',
    'GetStackScriptsStackscriptUserDefinedFieldArgs',
    'GetUserDatabaseGrantArgs',
    'GetUserDomainGrantArgs',
    'GetUserFirewallGrantArgs',
    'GetUserImageGrantArgs',
    'GetUserLinodeGrantArgs',
    'GetUserLongviewGrantArgs',
    'GetUserNodebalancerGrantArgs',
    'GetUserStackscriptGrantArgs',
    'GetUserVolumeGrantArgs',
    'GetUsersFilterArgs',
    'GetUsersUserArgs',
    'GetUsersUserDatabaseGrantArgs',
    'GetUsersUserDomainGrantArgs',
    'GetUsersUserFirewallGrantArgs',
    'GetUsersUserGlobalGrantArgs',
    'GetUsersUserImageGrantArgs',
    'GetUsersUserLinodeGrantArgs',
    'GetUsersUserLongviewGrantArgs',
    'GetUsersUserNodebalancerGrantArgs',
    'GetUsersUserStackscriptGrantArgs',
    'GetUsersUserVolumeGrantArgs',
    'GetVlansFilterArgs',
    'GetVlansVlanArgs',
]

@pulumi.input_type
class DatabaseMysqlUpdatesArgs:
    def __init__(__self__, *,
                 day_of_week: pulumi.Input[str],
                 duration: pulumi.Input[int],
                 frequency: pulumi.Input[str],
                 hour_of_day: pulumi.Input[int],
                 week_of_month: Optional[pulumi.Input[int]] = None):
        pulumi.set(__self__, "day_of_week", day_of_week)
        pulumi.set(__self__, "duration", duration)
        pulumi.set(__self__, "frequency", frequency)
        pulumi.set(__self__, "hour_of_day", hour_of_day)
        if week_of_month is not None:
            pulumi.set(__self__, "week_of_month", week_of_month)

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

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

    @property
    @pulumi.getter
    def duration(self) -> pulumi.Input[int]:
        return pulumi.get(self, "duration")

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

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

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

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

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

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

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


@pulumi.input_type
class DatabasePostgresqlUpdatesArgs:
    def __init__(__self__, *,
                 day_of_week: pulumi.Input[str],
                 duration: pulumi.Input[int],
                 frequency: pulumi.Input[str],
                 hour_of_day: pulumi.Input[int],
                 week_of_month: Optional[pulumi.Input[int]] = None):
        pulumi.set(__self__, "day_of_week", day_of_week)
        pulumi.set(__self__, "duration", duration)
        pulumi.set(__self__, "frequency", frequency)
        pulumi.set(__self__, "hour_of_day", hour_of_day)
        if week_of_month is not None:
            pulumi.set(__self__, "week_of_month", week_of_month)

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

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

    @property
    @pulumi.getter
    def duration(self) -> pulumi.Input[int]:
        return pulumi.get(self, "duration")

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

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

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

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

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

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

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


@pulumi.input_type
class FirewallDeviceArgs:
    def __init__(__self__, *,
                 entity_id: Optional[pulumi.Input[int]] = None,
                 id: Optional[pulumi.Input[int]] = None,
                 label: Optional[pulumi.Input[str]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 url: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[int] entity_id: The ID of the underlying entity this device references (i.e. the Linode's ID).
        :param pulumi.Input[int] id: The ID of the Firewall Device.
        :param pulumi.Input[str] label: This Firewall's unique label.
        :param pulumi.Input[str] type: The type of Firewall Device.
        :param pulumi.Input[str] url: The URL of the underlying entity this device references.
        """
        if entity_id is not None:
            pulumi.set(__self__, "entity_id", entity_id)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if label is not None:
            pulumi.set(__self__, "label", label)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if url is not None:
            pulumi.set(__self__, "url", url)

    @property
    @pulumi.getter(name="entityId")
    def entity_id(self) -> Optional[pulumi.Input[int]]:
        """
        The ID of the underlying entity this device references (i.e. the Linode's ID).
        """
        return pulumi.get(self, "entity_id")

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

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[int]]:
        """
        The ID of the Firewall Device.
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter
    def label(self) -> Optional[pulumi.Input[str]]:
        """
        This Firewall's unique label.
        """
        return pulumi.get(self, "label")

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

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

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

    @property
    @pulumi.getter
    def url(self) -> Optional[pulumi.Input[str]]:
        """
        The URL of the underlying entity this device references.
        """
        return pulumi.get(self, "url")

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


@pulumi.input_type
class FirewallInboundArgs:
    def __init__(__self__, *,
                 action: pulumi.Input[str],
                 label: pulumi.Input[str],
                 protocol: pulumi.Input[str],
                 ipv4s: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 ipv6s: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 ports: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] action: Controls whether traffic is accepted or dropped by this rule (`ACCEPT`, `DROP`). Overrides the Firewall’s inbound_policy if this is an inbound rule, or the outbound_policy if this is an outbound rule.
        :param pulumi.Input[str] label: Used to identify this rule. For display purposes only.
        :param pulumi.Input[str] protocol: The network protocol this rule controls. (`TCP`, `UDP`, `ICMP`)
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ipv4s: A list of IPv4 addresses or networks. Must be in IP/mask format.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ipv6s: A list of IPv6 addresses or networks. Must be in IP/mask format.
        :param pulumi.Input[str] ports: A string representation of ports and/or port ranges (i.e. "443" or "80-90, 91").
        """
        pulumi.set(__self__, "action", action)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "protocol", protocol)
        if ipv4s is not None:
            pulumi.set(__self__, "ipv4s", ipv4s)
        if ipv6s is not None:
            pulumi.set(__self__, "ipv6s", ipv6s)
        if ports is not None:
            pulumi.set(__self__, "ports", ports)

    @property
    @pulumi.getter
    def action(self) -> pulumi.Input[str]:
        """
        Controls whether traffic is accepted or dropped by this rule (`ACCEPT`, `DROP`). Overrides the Firewall’s inbound_policy if this is an inbound rule, or the outbound_policy if this is an outbound rule.
        """
        return pulumi.get(self, "action")

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

    @property
    @pulumi.getter
    def label(self) -> pulumi.Input[str]:
        """
        Used to identify this rule. For display purposes only.
        """
        return pulumi.get(self, "label")

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

    @property
    @pulumi.getter
    def protocol(self) -> pulumi.Input[str]:
        """
        The network protocol this rule controls. (`TCP`, `UDP`, `ICMP`)
        """
        return pulumi.get(self, "protocol")

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

    @property
    @pulumi.getter
    def ipv4s(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of IPv4 addresses or networks. Must be in IP/mask format.
        """
        return pulumi.get(self, "ipv4s")

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

    @property
    @pulumi.getter
    def ipv6s(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of IPv6 addresses or networks. Must be in IP/mask format.
        """
        return pulumi.get(self, "ipv6s")

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

    @property
    @pulumi.getter
    def ports(self) -> Optional[pulumi.Input[str]]:
        """
        A string representation of ports and/or port ranges (i.e. "443" or "80-90, 91").
        """
        return pulumi.get(self, "ports")

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


@pulumi.input_type
class FirewallOutboundArgs:
    def __init__(__self__, *,
                 action: pulumi.Input[str],
                 label: pulumi.Input[str],
                 protocol: pulumi.Input[str],
                 ipv4s: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 ipv6s: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 ports: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] action: Controls whether traffic is accepted or dropped by this rule (`ACCEPT`, `DROP`). Overrides the Firewall’s inbound_policy if this is an inbound rule, or the outbound_policy if this is an outbound rule.
        :param pulumi.Input[str] label: This Firewall's unique label.
        :param pulumi.Input[str] protocol: The network protocol this rule controls. (`TCP`, `UDP`, `ICMP`)
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ipv4s: A list of IPv4 addresses or networks. Must be in IP/mask format.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] ipv6s: A list of IPv6 addresses or networks. Must be in IP/mask format.
        :param pulumi.Input[str] ports: A string representation of ports and/or port ranges (i.e. "443" or "80-90, 91").
        """
        pulumi.set(__self__, "action", action)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "protocol", protocol)
        if ipv4s is not None:
            pulumi.set(__self__, "ipv4s", ipv4s)
        if ipv6s is not None:
            pulumi.set(__self__, "ipv6s", ipv6s)
        if ports is not None:
            pulumi.set(__self__, "ports", ports)

    @property
    @pulumi.getter
    def action(self) -> pulumi.Input[str]:
        """
        Controls whether traffic is accepted or dropped by this rule (`ACCEPT`, `DROP`). Overrides the Firewall’s inbound_policy if this is an inbound rule, or the outbound_policy if this is an outbound rule.
        """
        return pulumi.get(self, "action")

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

    @property
    @pulumi.getter
    def label(self) -> pulumi.Input[str]:
        """
        This Firewall's unique label.
        """
        return pulumi.get(self, "label")

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

    @property
    @pulumi.getter
    def protocol(self) -> pulumi.Input[str]:
        """
        The network protocol this rule controls. (`TCP`, `UDP`, `ICMP`)
        """
        return pulumi.get(self, "protocol")

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

    @property
    @pulumi.getter
    def ipv4s(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of IPv4 addresses or networks. Must be in IP/mask format.
        """
        return pulumi.get(self, "ipv4s")

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

    @property
    @pulumi.getter
    def ipv6s(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of IPv6 addresses or networks. Must be in IP/mask format.
        """
        return pulumi.get(self, "ipv6s")

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

    @property
    @pulumi.getter
    def ports(self) -> Optional[pulumi.Input[str]]:
        """
        A string representation of ports and/or port ranges (i.e. "443" or "80-90, 91").
        """
        return pulumi.get(self, "ports")

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


@pulumi.input_type
class InstanceAlertsArgs:
    def __init__(__self__, *,
                 cpu: Optional[pulumi.Input[int]] = None,
                 io: Optional[pulumi.Input[int]] = None,
                 network_in: Optional[pulumi.Input[int]] = None,
                 network_out: Optional[pulumi.Input[int]] = None,
                 transfer_quota: Optional[pulumi.Input[int]] = None):
        if cpu is not None:
            pulumi.set(__self__, "cpu", cpu)
        if io is not None:
            pulumi.set(__self__, "io", io)
        if network_in is not None:
            pulumi.set(__self__, "network_in", network_in)
        if network_out is not None:
            pulumi.set(__self__, "network_out", network_out)
        if transfer_quota is not None:
            pulumi.set(__self__, "transfer_quota", transfer_quota)

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

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

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

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

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

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

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

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

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

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


@pulumi.input_type
class InstanceBackupsArgs:
    def __init__(__self__, *,
                 available: Optional[pulumi.Input[bool]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 schedule: Optional[pulumi.Input['InstanceBackupsScheduleArgs']] = None):
        """
        :param pulumi.Input[bool] enabled: If this Linode has the Backup service enabled.
        """
        if available is not None:
            pulumi.set(__self__, "available", available)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if schedule is not None:
            pulumi.set(__self__, "schedule", schedule)

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

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

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[bool]]:
        """
        If this Linode has the Backup service enabled.
        """
        return pulumi.get(self, "enabled")

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

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

    @schedule.setter
    def schedule(self, value: Optional[pulumi.Input['InstanceBackupsScheduleArgs']]):
        pulumi.set(self, "schedule", value)


@pulumi.input_type
class InstanceBackupsScheduleArgs:
    def __init__(__self__, *,
                 day: Optional[pulumi.Input[str]] = None,
                 window: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] day: The day of the week that your Linode's weekly Backup is taken. If not set manually, a day will be chosen for you. Backups are taken every day, but backups taken on this day are preferred when selecting backups to retain for a longer period.  If not set manually, then when backups are initially enabled, this may come back as "Scheduling" until the day is automatically selected.
        :param pulumi.Input[str] window: The window ('W0'-'W22') in which your backups will be taken, in UTC. A backups window is a two-hour span of time in which the backup may occur. For example, 'W10' indicates that your backups should be taken between 10:00 and 12:00. If you do not choose a backup window, one will be selected for you automatically.  If not set manually, when backups are initially enabled this may come back as Scheduling until the window is automatically selected.
        """
        if day is not None:
            pulumi.set(__self__, "day", day)
        if window is not None:
            pulumi.set(__self__, "window", window)

    @property
    @pulumi.getter
    def day(self) -> Optional[pulumi.Input[str]]:
        """
        The day of the week that your Linode's weekly Backup is taken. If not set manually, a day will be chosen for you. Backups are taken every day, but backups taken on this day are preferred when selecting backups to retain for a longer period.  If not set manually, then when backups are initially enabled, this may come back as "Scheduling" until the day is automatically selected.
        """
        return pulumi.get(self, "day")

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

    @property
    @pulumi.getter
    def window(self) -> Optional[pulumi.Input[str]]:
        """
        The window ('W0'-'W22') in which your backups will be taken, in UTC. A backups window is a two-hour span of time in which the backup may occur. For example, 'W10' indicates that your backups should be taken between 10:00 and 12:00. If you do not choose a backup window, one will be selected for you automatically.  If not set manually, when backups are initially enabled this may come back as Scheduling until the window is automatically selected.
        """
        return pulumi.get(self, "window")

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


@pulumi.input_type
class InstanceConfigArgs:
    def __init__(__self__, *,
                 label: pulumi.Input[str],
                 comments: Optional[pulumi.Input[str]] = None,
                 devices: Optional[pulumi.Input['InstanceConfigDevicesArgs']] = None,
                 helpers: Optional[pulumi.Input['InstanceConfigHelpersArgs']] = None,
                 interfaces: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceConfigInterfaceArgs']]]] = None,
                 kernel: Optional[pulumi.Input[str]] = None,
                 memory_limit: Optional[pulumi.Input[int]] = None,
                 root_device: Optional[pulumi.Input[str]] = None,
                 run_level: Optional[pulumi.Input[str]] = None,
                 virt_mode: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] label: The Linode's label is for display purposes only. If no label is provided for a Linode, a default will be assigned.
        :param pulumi.Input[str] comments: Arbitrary user comments about this `config`.
        :param pulumi.Input['InstanceConfigDevicesArgs'] devices: A list of `disk` or `volume` attachments for this `config`.  If the `boot_config_label` omits a `devices` block, the Linode will not be booted.
        :param pulumi.Input['InstanceConfigHelpersArgs'] helpers: Helpers enabled when booting to this Linode Config.
        :param pulumi.Input[str] kernel: A Kernel ID to boot a Linode with. Default is based on image choice. Examples are `linode/latest-64bit`, `linode/grub2`, `linode/direct-disk`, etc. See all kernels [here](https://api.linode.com/v4/linode/kernels). Note that this is a paginated API endpoint ([docs](https://developers.linode.com/api/v4/linode-kernels)).
        :param pulumi.Input[int] memory_limit: Defaults to the total RAM of the Linode
               
               * `interface` - (Optional) A list of network interfaces to be assigned to the Linode.
        :param pulumi.Input[str] root_device: The root device to boot. The corresponding disk must be attached to a `device` slot.  Example: `"/dev/sda"`
        :param pulumi.Input[str] run_level: Defines the state of your Linode after booting. Defaults to `"default"`.
        :param pulumi.Input[str] virt_mode: Controls the virtualization mode. Defaults to `"paravirt"`.
        """
        pulumi.set(__self__, "label", label)
        if comments is not None:
            pulumi.set(__self__, "comments", comments)
        if devices is not None:
            pulumi.set(__self__, "devices", devices)
        if helpers is not None:
            pulumi.set(__self__, "helpers", helpers)
        if interfaces is not None:
            pulumi.set(__self__, "interfaces", interfaces)
        if kernel is not None:
            pulumi.set(__self__, "kernel", kernel)
        if memory_limit is not None:
            pulumi.set(__self__, "memory_limit", memory_limit)
        if root_device is not None:
            pulumi.set(__self__, "root_device", root_device)
        if run_level is not None:
            pulumi.set(__self__, "run_level", run_level)
        if virt_mode is not None:
            pulumi.set(__self__, "virt_mode", virt_mode)

    @property
    @pulumi.getter
    def label(self) -> pulumi.Input[str]:
        """
        The Linode's label is for display purposes only. If no label is provided for a Linode, a default will be assigned.
        """
        return pulumi.get(self, "label")

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

    @property
    @pulumi.getter
    def comments(self) -> Optional[pulumi.Input[str]]:
        """
        Arbitrary user comments about this `config`.
        """
        return pulumi.get(self, "comments")

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

    @property
    @pulumi.getter
    def devices(self) -> Optional[pulumi.Input['InstanceConfigDevicesArgs']]:
        """
        A list of `disk` or `volume` attachments for this `config`.  If the `boot_config_label` omits a `devices` block, the Linode will not be booted.
        """
        return pulumi.get(self, "devices")

    @devices.setter
    def devices(self, value: Optional[pulumi.Input['InstanceConfigDevicesArgs']]):
        pulumi.set(self, "devices", value)

    @property
    @pulumi.getter
    def helpers(self) -> Optional[pulumi.Input['InstanceConfigHelpersArgs']]:
        """
        Helpers enabled when booting to this Linode Config.
        """
        return pulumi.get(self, "helpers")

    @helpers.setter
    def helpers(self, value: Optional[pulumi.Input['InstanceConfigHelpersArgs']]):
        pulumi.set(self, "helpers", value)

    @property
    @pulumi.getter
    def interfaces(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InstanceConfigInterfaceArgs']]]]:
        return pulumi.get(self, "interfaces")

    @interfaces.setter
    def interfaces(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceConfigInterfaceArgs']]]]):
        pulumi.set(self, "interfaces", value)

    @property
    @pulumi.getter
    def kernel(self) -> Optional[pulumi.Input[str]]:
        """
        A Kernel ID to boot a Linode with. Default is based on image choice. Examples are `linode/latest-64bit`, `linode/grub2`, `linode/direct-disk`, etc. See all kernels [here](https://api.linode.com/v4/linode/kernels). Note that this is a paginated API endpoint ([docs](https://developers.linode.com/api/v4/linode-kernels)).
        """
        return pulumi.get(self, "kernel")

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

    @property
    @pulumi.getter(name="memoryLimit")
    def memory_limit(self) -> Optional[pulumi.Input[int]]:
        """
        Defaults to the total RAM of the Linode

        * `interface` - (Optional) A list of network interfaces to be assigned to the Linode.
        """
        return pulumi.get(self, "memory_limit")

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

    @property
    @pulumi.getter(name="rootDevice")
    def root_device(self) -> Optional[pulumi.Input[str]]:
        """
        The root device to boot. The corresponding disk must be attached to a `device` slot.  Example: `"/dev/sda"`
        """
        return pulumi.get(self, "root_device")

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

    @property
    @pulumi.getter(name="runLevel")
    def run_level(self) -> Optional[pulumi.Input[str]]:
        """
        Defines the state of your Linode after booting. Defaults to `"default"`.
        """
        return pulumi.get(self, "run_level")

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

    @property
    @pulumi.getter(name="virtMode")
    def virt_mode(self) -> Optional[pulumi.Input[str]]:
        """
        Controls the virtualization mode. Defaults to `"paravirt"`.
        """
        return pulumi.get(self, "virt_mode")

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


@pulumi.input_type
class InstanceConfigDevicesArgs:
    def __init__(__self__, *,
                 sda: Optional[pulumi.Input['InstanceConfigDevicesSdaArgs']] = None,
                 sdb: Optional[pulumi.Input['InstanceConfigDevicesSdbArgs']] = None,
                 sdc: Optional[pulumi.Input['InstanceConfigDevicesSdcArgs']] = None,
                 sdd: Optional[pulumi.Input['InstanceConfigDevicesSddArgs']] = None,
                 sde: Optional[pulumi.Input['InstanceConfigDevicesSdeArgs']] = None,
                 sdf: Optional[pulumi.Input['InstanceConfigDevicesSdfArgs']] = None,
                 sdg: Optional[pulumi.Input['InstanceConfigDevicesSdgArgs']] = None,
                 sdh: Optional[pulumi.Input['InstanceConfigDevicesSdhArgs']] = None):
        """
        :param pulumi.Input['InstanceConfigDevicesSdaArgs'] sda: ... `sdh` - (Optional) The SDA-SDH slots, represent the Linux block device nodes for the first 8 disks attached to the Linode.  Each device must be suplied sequentially.  The device can be either a Disk or a Volume identified by `disk_label` or `volume_id`. Only one disk identifier is permitted per slot. Devices mapped from `sde` through `sdh` are unavailable in `"fullvirt"` `virt_mode`.
        """
        if sda is not None:
            pulumi.set(__self__, "sda", sda)
        if sdb is not None:
            pulumi.set(__self__, "sdb", sdb)
        if sdc is not None:
            pulumi.set(__self__, "sdc", sdc)
        if sdd is not None:
            pulumi.set(__self__, "sdd", sdd)
        if sde is not None:
            pulumi.set(__self__, "sde", sde)
        if sdf is not None:
            pulumi.set(__self__, "sdf", sdf)
        if sdg is not None:
            pulumi.set(__self__, "sdg", sdg)
        if sdh is not None:
            pulumi.set(__self__, "sdh", sdh)

    @property
    @pulumi.getter
    def sda(self) -> Optional[pulumi.Input['InstanceConfigDevicesSdaArgs']]:
        """
        ... `sdh` - (Optional) The SDA-SDH slots, represent the Linux block device nodes for the first 8 disks attached to the Linode.  Each device must be suplied sequentially.  The device can be either a Disk or a Volume identified by `disk_label` or `volume_id`. Only one disk identifier is permitted per slot. Devices mapped from `sde` through `sdh` are unavailable in `"fullvirt"` `virt_mode`.
        """
        return pulumi.get(self, "sda")

    @sda.setter
    def sda(self, value: Optional[pulumi.Input['InstanceConfigDevicesSdaArgs']]):
        pulumi.set(self, "sda", value)

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

    @sdb.setter
    def sdb(self, value: Optional[pulumi.Input['InstanceConfigDevicesSdbArgs']]):
        pulumi.set(self, "sdb", value)

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

    @sdc.setter
    def sdc(self, value: Optional[pulumi.Input['InstanceConfigDevicesSdcArgs']]):
        pulumi.set(self, "sdc", value)

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

    @sdd.setter
    def sdd(self, value: Optional[pulumi.Input['InstanceConfigDevicesSddArgs']]):
        pulumi.set(self, "sdd", value)

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

    @sde.setter
    def sde(self, value: Optional[pulumi.Input['InstanceConfigDevicesSdeArgs']]):
        pulumi.set(self, "sde", value)

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

    @sdf.setter
    def sdf(self, value: Optional[pulumi.Input['InstanceConfigDevicesSdfArgs']]):
        pulumi.set(self, "sdf", value)

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

    @sdg.setter
    def sdg(self, value: Optional[pulumi.Input['InstanceConfigDevicesSdgArgs']]):
        pulumi.set(self, "sdg", value)

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

    @sdh.setter
    def sdh(self, value: Optional[pulumi.Input['InstanceConfigDevicesSdhArgs']]):
        pulumi.set(self, "sdh", value)


@pulumi.input_type
class InstanceConfigDevicesSdaArgs:
    def __init__(__self__, *,
                 disk_id: Optional[pulumi.Input[int]] = None,
                 disk_label: Optional[pulumi.Input[str]] = None,
                 volume_id: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[int] disk_id: The Disk ID of the associated `disk_label`, if used.
        :param pulumi.Input[str] disk_label: The `label` of the `disk` to map to this `device` slot.
        :param pulumi.Input[int] volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

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

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[pulumi.Input[str]]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

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

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

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


@pulumi.input_type
class InstanceConfigDevicesSdbArgs:
    def __init__(__self__, *,
                 disk_id: Optional[pulumi.Input[int]] = None,
                 disk_label: Optional[pulumi.Input[str]] = None,
                 volume_id: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[int] disk_id: The Disk ID of the associated `disk_label`, if used.
        :param pulumi.Input[str] disk_label: The `label` of the `disk` to map to this `device` slot.
        :param pulumi.Input[int] volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

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

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[pulumi.Input[str]]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

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

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

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


@pulumi.input_type
class InstanceConfigDevicesSdcArgs:
    def __init__(__self__, *,
                 disk_id: Optional[pulumi.Input[int]] = None,
                 disk_label: Optional[pulumi.Input[str]] = None,
                 volume_id: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[int] disk_id: The Disk ID of the associated `disk_label`, if used.
        :param pulumi.Input[str] disk_label: The `label` of the `disk` to map to this `device` slot.
        :param pulumi.Input[int] volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

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

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[pulumi.Input[str]]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

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

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

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


@pulumi.input_type
class InstanceConfigDevicesSddArgs:
    def __init__(__self__, *,
                 disk_id: Optional[pulumi.Input[int]] = None,
                 disk_label: Optional[pulumi.Input[str]] = None,
                 volume_id: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[int] disk_id: The Disk ID of the associated `disk_label`, if used.
        :param pulumi.Input[str] disk_label: The `label` of the `disk` to map to this `device` slot.
        :param pulumi.Input[int] volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

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

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[pulumi.Input[str]]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

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

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

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


@pulumi.input_type
class InstanceConfigDevicesSdeArgs:
    def __init__(__self__, *,
                 disk_id: Optional[pulumi.Input[int]] = None,
                 disk_label: Optional[pulumi.Input[str]] = None,
                 volume_id: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[int] disk_id: The Disk ID of the associated `disk_label`, if used.
        :param pulumi.Input[str] disk_label: The `label` of the `disk` to map to this `device` slot.
        :param pulumi.Input[int] volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

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

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[pulumi.Input[str]]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

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

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

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


@pulumi.input_type
class InstanceConfigDevicesSdfArgs:
    def __init__(__self__, *,
                 disk_id: Optional[pulumi.Input[int]] = None,
                 disk_label: Optional[pulumi.Input[str]] = None,
                 volume_id: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[int] disk_id: The Disk ID of the associated `disk_label`, if used.
        :param pulumi.Input[str] disk_label: The `label` of the `disk` to map to this `device` slot.
        :param pulumi.Input[int] volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

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

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[pulumi.Input[str]]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

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

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

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


@pulumi.input_type
class InstanceConfigDevicesSdgArgs:
    def __init__(__self__, *,
                 disk_id: Optional[pulumi.Input[int]] = None,
                 disk_label: Optional[pulumi.Input[str]] = None,
                 volume_id: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[int] disk_id: The Disk ID of the associated `disk_label`, if used.
        :param pulumi.Input[str] disk_label: The `label` of the `disk` to map to this `device` slot.
        :param pulumi.Input[int] volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

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

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[pulumi.Input[str]]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

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

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

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


@pulumi.input_type
class InstanceConfigDevicesSdhArgs:
    def __init__(__self__, *,
                 disk_id: Optional[pulumi.Input[int]] = None,
                 disk_label: Optional[pulumi.Input[str]] = None,
                 volume_id: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[int] disk_id: The Disk ID of the associated `disk_label`, if used.
        :param pulumi.Input[str] disk_label: The `label` of the `disk` to map to this `device` slot.
        :param pulumi.Input[int] volume_id: The Volume ID to map to this `device` slot.
        """
        if disk_id is not None:
            pulumi.set(__self__, "disk_id", disk_id)
        if disk_label is not None:
            pulumi.set(__self__, "disk_label", disk_label)
        if volume_id is not None:
            pulumi.set(__self__, "volume_id", volume_id)

    @property
    @pulumi.getter(name="diskId")
    def disk_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Disk ID of the associated `disk_label`, if used.
        """
        return pulumi.get(self, "disk_id")

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

    @property
    @pulumi.getter(name="diskLabel")
    def disk_label(self) -> Optional[pulumi.Input[str]]:
        """
        The `label` of the `disk` to map to this `device` slot.
        """
        return pulumi.get(self, "disk_label")

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

    @property
    @pulumi.getter(name="volumeId")
    def volume_id(self) -> Optional[pulumi.Input[int]]:
        """
        The Volume ID to map to this `device` slot.
        """
        return pulumi.get(self, "volume_id")

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


@pulumi.input_type
class InstanceConfigHelpersArgs:
    def __init__(__self__, *,
                 devtmpfs_automount: Optional[pulumi.Input[bool]] = None,
                 distro: Optional[pulumi.Input[bool]] = None,
                 modules_dep: Optional[pulumi.Input[bool]] = None,
                 network: Optional[pulumi.Input[bool]] = None,
                 updatedb_disabled: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[bool] distro: Controls the behavior of the Linode Config's Distribution Helper setting.
        :param pulumi.Input[bool] modules_dep: Creates a modules dependency file for the Kernel you run.
        :param pulumi.Input[bool] network: Controls the behavior of the Linode Config's Network Helper setting, used to automatically configure additional IP addresses assigned to this instance.
        :param pulumi.Input[bool] updatedb_disabled: Disables updatedb cron job to avoid disk thrashing.
        """
        if devtmpfs_automount is not None:
            pulumi.set(__self__, "devtmpfs_automount", devtmpfs_automount)
        if distro is not None:
            pulumi.set(__self__, "distro", distro)
        if modules_dep is not None:
            pulumi.set(__self__, "modules_dep", modules_dep)
        if network is not None:
            pulumi.set(__self__, "network", network)
        if updatedb_disabled is not None:
            pulumi.set(__self__, "updatedb_disabled", updatedb_disabled)

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

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

    @property
    @pulumi.getter
    def distro(self) -> Optional[pulumi.Input[bool]]:
        """
        Controls the behavior of the Linode Config's Distribution Helper setting.
        """
        return pulumi.get(self, "distro")

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

    @property
    @pulumi.getter(name="modulesDep")
    def modules_dep(self) -> Optional[pulumi.Input[bool]]:
        """
        Creates a modules dependency file for the Kernel you run.
        """
        return pulumi.get(self, "modules_dep")

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

    @property
    @pulumi.getter
    def network(self) -> Optional[pulumi.Input[bool]]:
        """
        Controls the behavior of the Linode Config's Network Helper setting, used to automatically configure additional IP addresses assigned to this instance.
        """
        return pulumi.get(self, "network")

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

    @property
    @pulumi.getter(name="updatedbDisabled")
    def updatedb_disabled(self) -> Optional[pulumi.Input[bool]]:
        """
        Disables updatedb cron job to avoid disk thrashing.
        """
        return pulumi.get(self, "updatedb_disabled")

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


@pulumi.input_type
class InstanceConfigInterfaceArgs:
    def __init__(__self__, *,
                 ipam_address: Optional[pulumi.Input[str]] = None,
                 label: Optional[pulumi.Input[str]] = None,
                 purpose: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] ipam_address: This Network Interface’s private IP address in Classless Inter-Domain Routing (CIDR) notation.
        :param pulumi.Input[str] label: The name of this interface. If the interface is a VLAN, a label is required.
        :param pulumi.Input[str] purpose: The type of interface. (`public`, `vlan`)
        """
        if ipam_address is not None:
            pulumi.set(__self__, "ipam_address", ipam_address)
        if label is not None:
            pulumi.set(__self__, "label", label)
        if purpose is not None:
            pulumi.set(__self__, "purpose", purpose)

    @property
    @pulumi.getter(name="ipamAddress")
    def ipam_address(self) -> Optional[pulumi.Input[str]]:
        """
        This Network Interface’s private IP address in Classless Inter-Domain Routing (CIDR) notation.
        """
        return pulumi.get(self, "ipam_address")

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

    @property
    @pulumi.getter
    def label(self) -> Optional[pulumi.Input[str]]:
        """
        The name of this interface. If the interface is a VLAN, a label is required.
        """
        return pulumi.get(self, "label")

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

    @property
    @pulumi.getter
    def purpose(self) -> Optional[pulumi.Input[str]]:
        """
        The type of interface. (`public`, `vlan`)
        """
        return pulumi.get(self, "purpose")

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


@pulumi.input_type
class InstanceDiskArgs:
    def __init__(__self__, *,
                 label: pulumi.Input[str],
                 size: pulumi.Input[int],
                 authorized_keys: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 authorized_users: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 filesystem: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[int]] = None,
                 image: Optional[pulumi.Input[str]] = None,
                 read_only: Optional[pulumi.Input[bool]] = None,
                 root_pass: Optional[pulumi.Input[str]] = None,
                 stackscript_data: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 stackscript_id: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[str] label: The Linode's label is for display purposes only. If no label is provided for a Linode, a default will be assigned.
        :param pulumi.Input[int] size: The size of the Disk in MB.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] authorized_keys: A list of SSH public keys to deploy for the root user on the newly created Linode. *This value can not be imported.* *Changing `authorized_keys` forces the creation of a new Linode Instance.*
        :param pulumi.Input[Sequence[pulumi.Input[str]]] authorized_users: A list of Linode usernames. If the usernames have associated SSH keys, the keys will be appended to the `root` user's `~/.ssh/authorized_keys` file automatically. *This value can not be imported.* *Changing `authorized_users` forces the creation of a new Linode Instance.*
        :param pulumi.Input[str] filesystem: The Disk filesystem can be one of: `"raw"`, `"swap"`, `"ext3"`, `"ext4"`, or `"initrd"` which has a max size of 32mb and can be used in the config `initrd` (not currently supported in this provider).
        :param pulumi.Input[int] id: The ID of the disk in the Linode API.
        :param pulumi.Input[str] image: An Image ID to deploy the Disk from. Official Linode Images start with linode/, while your Images start with `private/`. See [images](https://api.linode.com/v4/images) for more information on the Images available for you to use. Examples are `linode/debian9`, `linode/fedora28`, `linode/ubuntu16.04lts`, `linode/arch`, and `private/12345`. See all images [here](https://api.linode.com/v4/linode/images) (Requires a personal access token; docs [here](https://developers.linode.com/api/v4/images)). *This value can not be imported.* *Changing `image` forces the creation of a new Linode Instance.*
        :param pulumi.Input[bool] read_only: If true, this Disk is read-only.
        :param pulumi.Input[str] root_pass: The initial password for the `root` user account. *This value can not be imported.* *Changing `root_pass` forces the creation of a new Linode Instance.* *If omitted, a random password will be generated but will not be stored in the state.*
        :param pulumi.Input[Mapping[str, Any]] stackscript_data: An object containing responses to any User Defined Fields present in the StackScript being deployed to this Linode. Only accepted if 'stackscript_id' is given. The required values depend on the StackScript being deployed.  *This value can not be imported.* *Changing `stackscript_data` forces the creation of a new Linode Instance.*
        :param pulumi.Input[int] stackscript_id: The StackScript to deploy to the newly created Linode. If provided, 'image' must also be provided, and must be an Image that is compatible with this StackScript. *This value can not be imported.* *Changing `stackscript_id` forces the creation of a new Linode Instance.*
        """
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "size", size)
        if authorized_keys is not None:
            pulumi.set(__self__, "authorized_keys", authorized_keys)
        if authorized_users is not None:
            pulumi.set(__self__, "authorized_users", authorized_users)
        if filesystem is not None:
            pulumi.set(__self__, "filesystem", filesystem)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if image is not None:
            pulumi.set(__self__, "image", image)
        if read_only is not None:
            pulumi.set(__self__, "read_only", read_only)
        if root_pass is not None:
            pulumi.set(__self__, "root_pass", root_pass)
        if stackscript_data is not None:
            pulumi.set(__self__, "stackscript_data", stackscript_data)
        if stackscript_id is not None:
            pulumi.set(__self__, "stackscript_id", stackscript_id)

    @property
    @pulumi.getter
    def label(self) -> pulumi.Input[str]:
        """
        The Linode's label is for display purposes only. If no label is provided for a Linode, a default will be assigned.
        """
        return pulumi.get(self, "label")

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

    @property
    @pulumi.getter
    def size(self) -> pulumi.Input[int]:
        """
        The size of the Disk in MB.
        """
        return pulumi.get(self, "size")

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

    @property
    @pulumi.getter(name="authorizedKeys")
    def authorized_keys(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of SSH public keys to deploy for the root user on the newly created Linode. *This value can not be imported.* *Changing `authorized_keys` forces the creation of a new Linode Instance.*
        """
        return pulumi.get(self, "authorized_keys")

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

    @property
    @pulumi.getter(name="authorizedUsers")
    def authorized_users(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        A list of Linode usernames. If the usernames have associated SSH keys, the keys will be appended to the `root` user's `~/.ssh/authorized_keys` file automatically. *This value can not be imported.* *Changing `authorized_users` forces the creation of a new Linode Instance.*
        """
        return pulumi.get(self, "authorized_users")

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

    @property
    @pulumi.getter
    def filesystem(self) -> Optional[pulumi.Input[str]]:
        """
        The Disk filesystem can be one of: `"raw"`, `"swap"`, `"ext3"`, `"ext4"`, or `"initrd"` which has a max size of 32mb and can be used in the config `initrd` (not currently supported in this provider).
        """
        return pulumi.get(self, "filesystem")

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

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[int]]:
        """
        The ID of the disk in the Linode API.
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter
    def image(self) -> Optional[pulumi.Input[str]]:
        """
        An Image ID to deploy the Disk from. Official Linode Images start with linode/, while your Images start with `private/`. See [images](https://api.linode.com/v4/images) for more information on the Images available for you to use. Examples are `linode/debian9`, `linode/fedora28`, `linode/ubuntu16.04lts`, `linode/arch`, and `private/12345`. See all images [here](https://api.linode.com/v4/linode/images) (Requires a personal access token; docs [here](https://developers.linode.com/api/v4/images)). *This value can not be imported.* *Changing `image` forces the creation of a new Linode Instance.*
        """
        return pulumi.get(self, "image")

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

    @property
    @pulumi.getter(name="readOnly")
    def read_only(self) -> Optional[pulumi.Input[bool]]:
        """
        If true, this Disk is read-only.
        """
        return pulumi.get(self, "read_only")

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

    @property
    @pulumi.getter(name="rootPass")
    def root_pass(self) -> Optional[pulumi.Input[str]]:
        """
        The initial password for the `root` user account. *This value can not be imported.* *Changing `root_pass` forces the creation of a new Linode Instance.* *If omitted, a random password will be generated but will not be stored in the state.*
        """
        return pulumi.get(self, "root_pass")

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

    @property
    @pulumi.getter(name="stackscriptData")
    def stackscript_data(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        An object containing responses to any User Defined Fields present in the StackScript being deployed to this Linode. Only accepted if 'stackscript_id' is given. The required values depend on the StackScript being deployed.  *This value can not be imported.* *Changing `stackscript_data` forces the creation of a new Linode Instance.*
        """
        return pulumi.get(self, "stackscript_data")

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

    @property
    @pulumi.getter(name="stackscriptId")
    def stackscript_id(self) -> Optional[pulumi.Input[int]]:
        """
        The StackScript to deploy to the newly created Linode. If provided, 'image' must also be provided, and must be an Image that is compatible with this StackScript. *This value can not be imported.* *Changing `stackscript_id` forces the creation of a new Linode Instance.*
        """
        return pulumi.get(self, "stackscript_id")

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


@pulumi.input_type
class InstanceInterfaceArgs:
    def __init__(__self__, *,
                 ipam_address: Optional[pulumi.Input[str]] = None,
                 label: Optional[pulumi.Input[str]] = None,
                 purpose: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] ipam_address: This Network Interface’s private IP address in Classless Inter-Domain Routing (CIDR) notation.
        :param pulumi.Input[str] label: The name of this interface. If the interface is a VLAN, a label is required.
        :param pulumi.Input[str] purpose: The type of interface. (`public`, `vlan`)
        """
        if ipam_address is not None:
            pulumi.set(__self__, "ipam_address", ipam_address)
        if label is not None:
            pulumi.set(__self__, "label", label)
        if purpose is not None:
            pulumi.set(__self__, "purpose", purpose)

    @property
    @pulumi.getter(name="ipamAddress")
    def ipam_address(self) -> Optional[pulumi.Input[str]]:
        """
        This Network Interface’s private IP address in Classless Inter-Domain Routing (CIDR) notation.
        """
        return pulumi.get(self, "ipam_address")

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

    @property
    @pulumi.getter
    def label(self) -> Optional[pulumi.Input[str]]:
        """
        The name of this interface. If the interface is a VLAN, a label is required.
        """
        return pulumi.get(self, "label")

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

    @property
    @pulumi.getter
    def purpose(self) -> Optional[pulumi.Input[str]]:
        """
        The type of interface. (`public`, `vlan`)
        """
        return pulumi.get(self, "purpose")

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


@pulumi.input_type
class InstanceMetadataArgs:
    def __init__(__self__, *,
                 user_data: Optional[pulumi.Input[str]] = None):
        if user_data is not None:
            pulumi.set(__self__, "user_data", user_data)

    @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)


@pulumi.input_type
class InstanceSpecsArgs:
    def __init__(__self__, *,
                 disk: Optional[pulumi.Input[int]] = None,
                 memory: Optional[pulumi.Input[int]] = None,
                 transfer: Optional[pulumi.Input[int]] = None,
                 vcpus: Optional[pulumi.Input[int]] = None):
        if disk is not None:
            pulumi.set(__self__, "disk", disk)
        if memory is not None:
            pulumi.set(__self__, "memory", memory)
        if transfer is not None:
            pulumi.set(__self__, "transfer", transfer)
        if vcpus is not None:
            pulumi.set(__self__, "vcpus", vcpus)

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

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

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

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

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

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

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

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


@pulumi.input_type
class LkeClusterControlPlaneArgs:
    def __init__(__self__, *,
                 high_availability: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[bool] high_availability: Defines whether High Availability is enabled for the cluster Control Plane. This is an **irreversible** change.
        """
        if high_availability is not None:
            pulumi.set(__self__, "high_availability", high_availability)

    @property
    @pulumi.getter(name="highAvailability")
    def high_availability(self) -> Optional[pulumi.Input[bool]]:
        """
        Defines whether High Availability is enabled for the cluster Control Plane. This is an **irreversible** change.
        """
        return pulumi.get(self, "high_availability")

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


@pulumi.input_type
class LkeClusterPoolArgs:
    def __init__(__self__, *,
                 count: pulumi.Input[int],
                 type: pulumi.Input[str],
                 autoscaler: Optional[pulumi.Input['LkeClusterPoolAutoscalerArgs']] = None,
                 id: Optional[pulumi.Input[int]] = None,
                 nodes: Optional[pulumi.Input[Sequence[pulumi.Input['LkeClusterPoolNodeArgs']]]] = None):
        """
        :param pulumi.Input[int] count: The number of nodes in the Node Pool.
               
               * `autoscaler` - (Optional) If defined, an autoscaler will be enabled with the given configuration.
        :param pulumi.Input[str] type: A Linode Type for all of the nodes in the Node Pool. See all node types [here](https://api.linode.com/v4/linode/types).
        :param pulumi.Input[int] id: The ID of the node.
        """
        pulumi.set(__self__, "count", count)
        pulumi.set(__self__, "type", type)
        if autoscaler is not None:
            pulumi.set(__self__, "autoscaler", autoscaler)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if nodes is not None:
            pulumi.set(__self__, "nodes", nodes)

    @property
    @pulumi.getter
    def count(self) -> pulumi.Input[int]:
        """
        The number of nodes in the Node Pool.

        * `autoscaler` - (Optional) If defined, an autoscaler will be enabled with the given configuration.
        """
        return pulumi.get(self, "count")

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

    @property
    @pulumi.getter
    def type(self) -> pulumi.Input[str]:
        """
        A Linode Type for all of the nodes in the Node Pool. See all node types [here](https://api.linode.com/v4/linode/types).
        """
        return pulumi.get(self, "type")

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

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

    @autoscaler.setter
    def autoscaler(self, value: Optional[pulumi.Input['LkeClusterPoolAutoscalerArgs']]):
        pulumi.set(self, "autoscaler", value)

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[int]]:
        """
        The ID of the node.
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter
    def nodes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['LkeClusterPoolNodeArgs']]]]:
        return pulumi.get(self, "nodes")

    @nodes.setter
    def nodes(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['LkeClusterPoolNodeArgs']]]]):
        pulumi.set(self, "nodes", value)


@pulumi.input_type
class LkeClusterPoolAutoscalerArgs:
    def __init__(__self__, *,
                 max: pulumi.Input[int],
                 min: pulumi.Input[int]):
        """
        :param pulumi.Input[int] max: The maximum number of nodes to autoscale to.
        :param pulumi.Input[int] min: The minimum number of nodes to autoscale to.
        """
        pulumi.set(__self__, "max", max)
        pulumi.set(__self__, "min", min)

    @property
    @pulumi.getter
    def max(self) -> pulumi.Input[int]:
        """
        The maximum number of nodes to autoscale to.
        """
        return pulumi.get(self, "max")

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

    @property
    @pulumi.getter
    def min(self) -> pulumi.Input[int]:
        """
        The minimum number of nodes to autoscale to.
        """
        return pulumi.get(self, "min")

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


@pulumi.input_type
class LkeClusterPoolNodeArgs:
    def __init__(__self__, *,
                 id: Optional[pulumi.Input[str]] = None,
                 instance_id: Optional[pulumi.Input[int]] = None,
                 status: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] id: The ID of the node.
        :param pulumi.Input[int] instance_id: The ID of the underlying Linode instance.
        :param pulumi.Input[str] status: The status of the node. (`ready`, `not_ready`)
        """
        if id is not None:
            pulumi.set(__self__, "id", id)
        if instance_id is not None:
            pulumi.set(__self__, "instance_id", instance_id)
        if status is not None:
            pulumi.set(__self__, "status", status)

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[str]]:
        """
        The ID of the node.
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter(name="instanceId")
    def instance_id(self) -> Optional[pulumi.Input[int]]:
        """
        The ID of the underlying Linode instance.
        """
        return pulumi.get(self, "instance_id")

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

    @property
    @pulumi.getter
    def status(self) -> Optional[pulumi.Input[str]]:
        """
        The status of the node. (`ready`, `not_ready`)
        """
        return pulumi.get(self, "status")

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


@pulumi.input_type
class NodeBalancerConfigNodeStatusArgs:
    def __init__(__self__, *,
                 down: Optional[pulumi.Input[int]] = None,
                 up: Optional[pulumi.Input[int]] = None):
        """
        :param pulumi.Input[int] down: The number of backends considered to be 'DOWN' and unhealthy. These are not in rotation, and not serving requests.
        :param pulumi.Input[int] up: The number of backends considered to be 'UP' and healthy, and that are serving requests.
        """
        if down is not None:
            pulumi.set(__self__, "down", down)
        if up is not None:
            pulumi.set(__self__, "up", up)

    @property
    @pulumi.getter
    def down(self) -> Optional[pulumi.Input[int]]:
        """
        The number of backends considered to be 'DOWN' and unhealthy. These are not in rotation, and not serving requests.
        """
        return pulumi.get(self, "down")

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

    @property
    @pulumi.getter
    def up(self) -> Optional[pulumi.Input[int]]:
        """
        The number of backends considered to be 'UP' and healthy, and that are serving requests.
        """
        return pulumi.get(self, "up")

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


@pulumi.input_type
class NodeBalancerTransferArgs:
    def __init__(__self__, *,
                 in_: pulumi.Input[float],
                 out: pulumi.Input[float],
                 total: pulumi.Input[float]):
        """
        :param pulumi.Input[float] in_: The total transfer, in MB, used by this NodeBalancer for the current month
        :param pulumi.Input[float] out: The total inbound transfer, in MB, used for this NodeBalancer for the current month
        :param pulumi.Input[float] total: The total outbound transfer, in MB, used for this NodeBalancer for the current month
        """
        pulumi.set(__self__, "in_", in_)
        pulumi.set(__self__, "out", out)
        pulumi.set(__self__, "total", total)

    @property
    @pulumi.getter(name="in")
    def in_(self) -> pulumi.Input[float]:
        """
        The total transfer, in MB, used by this NodeBalancer for the current month
        """
        return pulumi.get(self, "in_")

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

    @property
    @pulumi.getter
    def out(self) -> pulumi.Input[float]:
        """
        The total inbound transfer, in MB, used for this NodeBalancer for the current month
        """
        return pulumi.get(self, "out")

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

    @property
    @pulumi.getter
    def total(self) -> pulumi.Input[float]:
        """
        The total outbound transfer, in MB, used for this NodeBalancer for the current month
        """
        return pulumi.get(self, "total")

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


@pulumi.input_type
class ObjectStorageBucketCertArgs:
    def __init__(__self__, *,
                 certificate: pulumi.Input[str],
                 private_key: pulumi.Input[str]):
        """
        :param pulumi.Input[str] certificate: The Base64 encoded and PEM formatted SSL certificate.
        :param pulumi.Input[str] private_key: The private key associated with the TLS/SSL certificate.
        """
        pulumi.set(__self__, "certificate", certificate)
        pulumi.set(__self__, "private_key", private_key)

    @property
    @pulumi.getter
    def certificate(self) -> pulumi.Input[str]:
        """
        The Base64 encoded and PEM formatted SSL certificate.
        """
        return pulumi.get(self, "certificate")

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

    @property
    @pulumi.getter(name="privateKey")
    def private_key(self) -> pulumi.Input[str]:
        """
        The private key associated with the TLS/SSL certificate.
        """
        return pulumi.get(self, "private_key")

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


@pulumi.input_type
class ObjectStorageBucketLifecycleRuleArgs:
    def __init__(__self__, *,
                 enabled: pulumi.Input[bool],
                 abort_incomplete_multipart_upload_days: Optional[pulumi.Input[int]] = None,
                 expiration: Optional[pulumi.Input['ObjectStorageBucketLifecycleRuleExpirationArgs']] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 noncurrent_version_expiration: Optional[pulumi.Input['ObjectStorageBucketLifecycleRuleNoncurrentVersionExpirationArgs']] = None,
                 prefix: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[bool] enabled: Specifies whether the lifecycle rule is active.
        :param pulumi.Input[int] abort_incomplete_multipart_upload_days: Specifies the number of days after initiating a multipart upload when the multipart upload must be completed.
               
               * `expiration` - (Optional) Specifies a period in the object's expire.
               
               * `noncurrent_version_expiration` - (Optional) Specifies when non-current object versions expire.
        :param pulumi.Input[str] id: The unique identifier for the rule.
        :param pulumi.Input[str] prefix: The object key prefix identifying one or more objects to which the rule applies.
        """
        pulumi.set(__self__, "enabled", enabled)
        if abort_incomplete_multipart_upload_days is not None:
            pulumi.set(__self__, "abort_incomplete_multipart_upload_days", abort_incomplete_multipart_upload_days)
        if expiration is not None:
            pulumi.set(__self__, "expiration", expiration)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if noncurrent_version_expiration is not None:
            pulumi.set(__self__, "noncurrent_version_expiration", noncurrent_version_expiration)
        if prefix is not None:
            pulumi.set(__self__, "prefix", prefix)

    @property
    @pulumi.getter
    def enabled(self) -> pulumi.Input[bool]:
        """
        Specifies whether the lifecycle rule is active.
        """
        return pulumi.get(self, "enabled")

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

    @property
    @pulumi.getter(name="abortIncompleteMultipartUploadDays")
    def abort_incomplete_multipart_upload_days(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of days after initiating a multipart upload when the multipart upload must be completed.

        * `expiration` - (Optional) Specifies a period in the object's expire.

        * `noncurrent_version_expiration` - (Optional) Specifies when non-current object versions expire.
        """
        return pulumi.get(self, "abort_incomplete_multipart_upload_days")

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

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

    @expiration.setter
    def expiration(self, value: Optional[pulumi.Input['ObjectStorageBucketLifecycleRuleExpirationArgs']]):
        pulumi.set(self, "expiration", value)

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[str]]:
        """
        The unique identifier for the rule.
        """
        return pulumi.get(self, "id")

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

    @property
    @pulumi.getter(name="noncurrentVersionExpiration")
    def noncurrent_version_expiration(self) -> Optional[pulumi.Input['ObjectStorageBucketLifecycleRuleNoncurrentVersionExpirationArgs']]:
        return pulumi.get(self, "noncurrent_version_expiration")

    @noncurrent_version_expiration.setter
    def noncurrent_version_expiration(self, value: Optional[pulumi.Input['ObjectStorageBucketLifecycleRuleNoncurrentVersionExpirationArgs']]):
        pulumi.set(self, "noncurrent_version_expiration", value)

    @property
    @pulumi.getter
    def prefix(self) -> Optional[pulumi.Input[str]]:
        """
        The object key prefix identifying one or more objects to which the rule applies.
        """
        return pulumi.get(self, "prefix")

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


@pulumi.input_type
class ObjectStorageBucketLifecycleRuleExpirationArgs:
    def __init__(__self__, *,
                 date: Optional[pulumi.Input[str]] = None,
                 days: Optional[pulumi.Input[int]] = None,
                 expired_object_delete_marker: Optional[pulumi.Input[bool]] = None):
        """
        :param pulumi.Input[str] date: Specifies the date after which you want the corresponding action to take effect.
        :param pulumi.Input[int] days: Specifies the number of days after object creation when the specific rule action takes effect.
        :param pulumi.Input[bool] expired_object_delete_marker: On a versioned bucket (versioning-enabled or versioning-suspended bucket), you can add this element in the lifecycle configuration to direct Linode Object Storage to delete expired object delete markers. This cannot be specified with Days or Date in a Lifecycle Expiration Policy.
        """
        if date is not None:
            pulumi.set(__self__, "date", date)
        if days is not None:
            pulumi.set(__self__, "days", days)
        if expired_object_delete_marker is not None:
            pulumi.set(__self__, "expired_object_delete_marker", expired_object_delete_marker)

    @property
    @pulumi.getter
    def date(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the date after which you want the corresponding action to take effect.
        """
        return pulumi.get(self, "date")

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

    @property
    @pulumi.getter
    def days(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of days after object creation when the specific rule action takes effect.
        """
        return pulumi.get(self, "days")

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

    @property
    @pulumi.getter(name="expiredObjectDeleteMarker")
    def expired_object_delete_marker(self) -> Optional[pulumi.Input[bool]]:
        """
        On a versioned bucket (versioning-enabled or versioning-suspended bucket), you can add this element in the lifecycle configuration to direct Linode Object Storage to delete expired object delete markers. This cannot be specified with Days or Date in a Lifecycle Expiration Policy.
        """
        return pulumi.get(self, "expired_object_delete_marker")

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


@pulumi.input_type
class ObjectStorageBucketLifecycleRuleNoncurrentVersionExpirationArgs:
    def __init__(__self__, *,
                 days: pulumi.Input[int]):
        """
        :param pulumi.Input[int] days: Specifies the number of days non-current object versions expire.
        """
        pulumi.set(__self__, "days", days)

    @property
    @pulumi.getter
    def days(self) -> pulumi.Input[int]:
        """
        Specifies the number of days non-current object versions expire.
        """
        return pulumi.get(self, "days")

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


@pulumi.input_type
class ObjectStorageKeyBucketAccessArgs:
    def __init__(__self__, *,
                 bucket_name: pulumi.Input[str],
                 cluster: pulumi.Input[str],
                 permissions: pulumi.Input[str]):
        """
        :param pulumi.Input[str] bucket_name: The unique label of the bucket to which the key will grant limited access.
        :param pulumi.Input[str] cluster: The Object Storage cluster where a bucket to which the key is granting access is hosted.
        :param pulumi.Input[str] permissions: This Limited Access Key’s permissions for the selected bucket. *Changing `permissions` forces the creation of a new Object Storage Key.* (`read_write`, `read_only`)
        """
        pulumi.set(__self__, "bucket_name", bucket_name)
        pulumi.set(__self__, "cluster", cluster)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter(name="bucketName")
    def bucket_name(self) -> pulumi.Input[str]:
        """
        The unique label of the bucket to which the key will grant limited access.
        """
        return pulumi.get(self, "bucket_name")

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

    @property
    @pulumi.getter
    def cluster(self) -> pulumi.Input[str]:
        """
        The Object Storage cluster where a bucket to which the key is granting access is hosted.
        """
        return pulumi.get(self, "cluster")

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

    @property
    @pulumi.getter
    def permissions(self) -> pulumi.Input[str]:
        """
        This Limited Access Key’s permissions for the selected bucket. *Changing `permissions` forces the creation of a new Object Storage Key.* (`read_write`, `read_only`)
        """
        return pulumi.get(self, "permissions")

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


@pulumi.input_type
class StackScriptUserDefinedFieldArgs:
    def __init__(__self__, *,
                 default: pulumi.Input[str],
                 example: pulumi.Input[str],
                 label: pulumi.Input[str],
                 many_of: pulumi.Input[str],
                 name: pulumi.Input[str],
                 one_of: pulumi.Input[str]):
        """
        :param pulumi.Input[str] default: The default value. If not specified, this value will be used.
        :param pulumi.Input[str] example: An example value for the field.
        :param pulumi.Input[str] label: The StackScript's label is for display purposes only.
        :param pulumi.Input[str] many_of: A list of acceptable values for the field in any quantity, combination or order.
        :param pulumi.Input[str] name: The name of the field.
        :param pulumi.Input[str] one_of: A list of acceptable single values for the field.
        """
        pulumi.set(__self__, "default", default)
        pulumi.set(__self__, "example", example)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "many_of", many_of)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "one_of", one_of)

    @property
    @pulumi.getter
    def default(self) -> pulumi.Input[str]:
        """
        The default value. If not specified, this value will be used.
        """
        return pulumi.get(self, "default")

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

    @property
    @pulumi.getter
    def example(self) -> pulumi.Input[str]:
        """
        An example value for the field.
        """
        return pulumi.get(self, "example")

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

    @property
    @pulumi.getter
    def label(self) -> pulumi.Input[str]:
        """
        The StackScript's label is for display purposes only.
        """
        return pulumi.get(self, "label")

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

    @property
    @pulumi.getter(name="manyOf")
    def many_of(self) -> pulumi.Input[str]:
        """
        A list of acceptable values for the field in any quantity, combination or order.
        """
        return pulumi.get(self, "many_of")

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

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

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

    @property
    @pulumi.getter(name="oneOf")
    def one_of(self) -> pulumi.Input[str]:
        """
        A list of acceptable single values for the field.
        """
        return pulumi.get(self, "one_of")

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


@pulumi.input_type
class UserDomainGrantArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[int],
                 permissions: pulumi.Input[str]):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[int]:
        return pulumi.get(self, "id")

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

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

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


@pulumi.input_type
class UserFirewallGrantArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[int],
                 permissions: pulumi.Input[str]):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[int]:
        return pulumi.get(self, "id")

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

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

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


@pulumi.input_type
class UserGlobalGrantsArgs:
    def __init__(__self__, *,
                 account_access: Optional[pulumi.Input[str]] = None,
                 add_databases: Optional[pulumi.Input[bool]] = None,
                 add_domains: Optional[pulumi.Input[bool]] = None,
                 add_firewalls: Optional[pulumi.Input[bool]] = None,
                 add_images: Optional[pulumi.Input[bool]] = None,
                 add_linodes: Optional[pulumi.Input[bool]] = None,
                 add_longview: Optional[pulumi.Input[bool]] = None,
                 add_nodebalancers: Optional[pulumi.Input[bool]] = None,
                 add_stackscripts: Optional[pulumi.Input[bool]] = None,
                 add_volumes: Optional[pulumi.Input[bool]] = None,
                 cancel_account: Optional[pulumi.Input[bool]] = None,
                 longview_subscription: Optional[pulumi.Input[bool]] = None):
        if account_access is not None:
            pulumi.set(__self__, "account_access", account_access)
        if add_databases is not None:
            pulumi.set(__self__, "add_databases", add_databases)
        if add_domains is not None:
            pulumi.set(__self__, "add_domains", add_domains)
        if add_firewalls is not None:
            pulumi.set(__self__, "add_firewalls", add_firewalls)
        if add_images is not None:
            pulumi.set(__self__, "add_images", add_images)
        if add_linodes is not None:
            pulumi.set(__self__, "add_linodes", add_linodes)
        if add_longview is not None:
            pulumi.set(__self__, "add_longview", add_longview)
        if add_nodebalancers is not None:
            pulumi.set(__self__, "add_nodebalancers", add_nodebalancers)
        if add_stackscripts is not None:
            pulumi.set(__self__, "add_stackscripts", add_stackscripts)
        if add_volumes is not None:
            pulumi.set(__self__, "add_volumes", add_volumes)
        if cancel_account is not None:
            pulumi.set(__self__, "cancel_account", cancel_account)
        if longview_subscription is not None:
            pulumi.set(__self__, "longview_subscription", longview_subscription)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


@pulumi.input_type
class UserImageGrantArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[int],
                 permissions: pulumi.Input[str]):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[int]:
        return pulumi.get(self, "id")

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

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

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


@pulumi.input_type
class UserLinodeGrantArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[int],
                 permissions: pulumi.Input[str]):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[int]:
        return pulumi.get(self, "id")

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

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

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


@pulumi.input_type
class UserLongviewGrantArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[int],
                 permissions: pulumi.Input[str]):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[int]:
        return pulumi.get(self, "id")

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

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

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


@pulumi.input_type
class UserNodebalancerGrantArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[int],
                 permissions: pulumi.Input[str]):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[int]:
        return pulumi.get(self, "id")

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

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

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


@pulumi.input_type
class UserStackscriptGrantArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[int],
                 permissions: pulumi.Input[str]):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[int]:
        return pulumi.get(self, "id")

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

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

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


@pulumi.input_type
class UserVolumeGrantArgs:
    def __init__(__self__, *,
                 id: pulumi.Input[int],
                 permissions: pulumi.Input[str]):
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> pulumi.Input[int]:
        return pulumi.get(self, "id")

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

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

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


@pulumi.input_type
class GetAccountLoginsFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetAccountLoginsLoginArgs:
    def __init__(__self__, *,
                 datetime: str,
                 id: int,
                 ip: str,
                 restricted: bool,
                 status: str,
                 username: str):
        """
        :param str datetime: When the login was initiated.
        :param int id: The unique ID of this login object.
        :param str ip: The remote IP address that requested the login.
        :param bool restricted: True if the User that was logged into was a restricted User, false otherwise.
        :param str username: The username of the User that was logged into.
        """
        pulumi.set(__self__, "datetime", datetime)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "ip", ip)
        pulumi.set(__self__, "restricted", restricted)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def datetime(self) -> str:
        """
        When the login was initiated.
        """
        return pulumi.get(self, "datetime")

    @datetime.setter
    def datetime(self, value: str):
        pulumi.set(self, "datetime", value)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The unique ID of this login object.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def ip(self) -> str:
        """
        The remote IP address that requested the login.
        """
        return pulumi.get(self, "ip")

    @ip.setter
    def ip(self, value: str):
        pulumi.set(self, "ip", value)

    @property
    @pulumi.getter
    def restricted(self) -> bool:
        """
        True if the User that was logged into was a restricted User, false otherwise.
        """
        return pulumi.get(self, "restricted")

    @restricted.setter
    def restricted(self, value: bool):
        pulumi.set(self, "restricted", value)

    @property
    @pulumi.getter
    def status(self) -> str:
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: str):
        pulumi.set(self, "status", value)

    @property
    @pulumi.getter
    def username(self) -> str:
        """
        The username of the User that was logged into.
        """
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: str):
        pulumi.set(self, "username", value)


@pulumi.input_type
class GetDatabaseBackupsBackupArgs:
    def __init__(__self__, *,
                 created: str,
                 id: int,
                 label: str,
                 type: str):
        """
        :param str created: A time value given in a combined date and time format that represents when the database backup was created.
        :param int id: The ID of the database backup object.
        :param str label: The database backup’s label, for display purposes only.
        :param str type: The type of database backup, determined by how the backup was created.
        """
        pulumi.set(__self__, "created", created)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "type", type)

    @property
    @pulumi.getter
    def created(self) -> str:
        """
        A time value given in a combined date and time format that represents when the database backup was created.
        """
        return pulumi.get(self, "created")

    @created.setter
    def created(self, value: str):
        pulumi.set(self, "created", value)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of the database backup object.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The database backup’s label, for display purposes only.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        The type of database backup, determined by how the backup was created.
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: str):
        pulumi.set(self, "type", value)


@pulumi.input_type
class GetDatabaseBackupsFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetDatabaseEnginesEngineArgs:
    def __init__(__self__, *,
                 engine: str,
                 id: str,
                 version: str):
        """
        :param str engine: The Managed Database engine type.
        :param str id: The Managed Database engine ID in engine/version format.
        :param str version: The Managed Database engine version.
        """
        pulumi.set(__self__, "engine", engine)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "version", version)

    @property
    @pulumi.getter
    def engine(self) -> str:
        """
        The Managed Database engine type.
        """
        return pulumi.get(self, "engine")

    @engine.setter
    def engine(self, value: str):
        pulumi.set(self, "engine", value)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The Managed Database engine ID in engine/version format.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: str):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        The Managed Database engine version.
        """
        return pulumi.get(self, "version")

    @version.setter
    def version(self, value: str):
        pulumi.set(self, "version", value)


@pulumi.input_type
class GetDatabaseEnginesFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetDatabaseMysqlBackupsFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetDatabasesDatabaseArgs:
    def __init__(__self__, *,
                 allow_lists: Sequence[str],
                 cluster_size: int,
                 created: str,
                 encrypted: bool,
                 engine: str,
                 host_primary: str,
                 host_secondary: str,
                 id: int,
                 instance_uri: str,
                 label: str,
                 region: str,
                 replication_type: str,
                 ssl_connection: bool,
                 status: str,
                 type: str,
                 updated: str,
                 version: str):
        """
        :param Sequence[str] allow_lists: A list of IP addresses that can access the Managed Database.
        :param int cluster_size: The number of Linode Instance nodes deployed to the Managed Database.
        :param str created: When this Managed Database was created.
        :param bool encrypted: Whether the Managed Databases is encrypted.
        :param str engine: The Managed Database engine.
        :param str host_primary: The primary host for the Managed Database.
        :param str host_secondary: The secondary/private network host for the Managed Database.
        :param int id: The ID of the Managed Database.
        :param str label: A unique, user-defined string referring to the Managed Database.
        :param str region: The region to use for the Managed Database.
        :param str replication_type: The replication method used for the Managed Database.
        :param bool ssl_connection: Whether to require SSL credentials to establish a connection to the Managed Database.
        :param str status: The operating status of the Managed Database.
        :param str type: The Linode Instance type used for the nodes of the  Managed Database instance.
        :param str updated: When this Managed Database was last updated.
        :param str version: The Managed Database engine version.
        """
        pulumi.set(__self__, "allow_lists", allow_lists)
        pulumi.set(__self__, "cluster_size", cluster_size)
        pulumi.set(__self__, "created", created)
        pulumi.set(__self__, "encrypted", encrypted)
        pulumi.set(__self__, "engine", engine)
        pulumi.set(__self__, "host_primary", host_primary)
        pulumi.set(__self__, "host_secondary", host_secondary)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "instance_uri", instance_uri)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "region", region)
        pulumi.set(__self__, "replication_type", replication_type)
        pulumi.set(__self__, "ssl_connection", ssl_connection)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "updated", updated)
        pulumi.set(__self__, "version", version)

    @property
    @pulumi.getter(name="allowLists")
    def allow_lists(self) -> Sequence[str]:
        """
        A list of IP addresses that can access the Managed Database.
        """
        return pulumi.get(self, "allow_lists")

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

    @property
    @pulumi.getter(name="clusterSize")
    def cluster_size(self) -> int:
        """
        The number of Linode Instance nodes deployed to the Managed Database.
        """
        return pulumi.get(self, "cluster_size")

    @cluster_size.setter
    def cluster_size(self, value: int):
        pulumi.set(self, "cluster_size", value)

    @property
    @pulumi.getter
    def created(self) -> str:
        """
        When this Managed Database was created.
        """
        return pulumi.get(self, "created")

    @created.setter
    def created(self, value: str):
        pulumi.set(self, "created", value)

    @property
    @pulumi.getter
    def encrypted(self) -> bool:
        """
        Whether the Managed Databases is encrypted.
        """
        return pulumi.get(self, "encrypted")

    @encrypted.setter
    def encrypted(self, value: bool):
        pulumi.set(self, "encrypted", value)

    @property
    @pulumi.getter
    def engine(self) -> str:
        """
        The Managed Database engine.
        """
        return pulumi.get(self, "engine")

    @engine.setter
    def engine(self, value: str):
        pulumi.set(self, "engine", value)

    @property
    @pulumi.getter(name="hostPrimary")
    def host_primary(self) -> str:
        """
        The primary host for the Managed Database.
        """
        return pulumi.get(self, "host_primary")

    @host_primary.setter
    def host_primary(self, value: str):
        pulumi.set(self, "host_primary", value)

    @property
    @pulumi.getter(name="hostSecondary")
    def host_secondary(self) -> str:
        """
        The secondary/private network host for the Managed Database.
        """
        return pulumi.get(self, "host_secondary")

    @host_secondary.setter
    def host_secondary(self, value: str):
        pulumi.set(self, "host_secondary", value)

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

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="instanceUri")
    def instance_uri(self) -> str:
        return pulumi.get(self, "instance_uri")

    @instance_uri.setter
    def instance_uri(self, value: str):
        pulumi.set(self, "instance_uri", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        A unique, user-defined string referring to the Managed Database.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def region(self) -> str:
        """
        The region to use for the Managed Database.
        """
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: str):
        pulumi.set(self, "region", value)

    @property
    @pulumi.getter(name="replicationType")
    def replication_type(self) -> str:
        """
        The replication method used for the Managed Database.
        """
        return pulumi.get(self, "replication_type")

    @replication_type.setter
    def replication_type(self, value: str):
        pulumi.set(self, "replication_type", value)

    @property
    @pulumi.getter(name="sslConnection")
    def ssl_connection(self) -> bool:
        """
        Whether to require SSL credentials to establish a connection to the Managed Database.
        """
        return pulumi.get(self, "ssl_connection")

    @ssl_connection.setter
    def ssl_connection(self, value: bool):
        pulumi.set(self, "ssl_connection", value)

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The operating status of the Managed Database.
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: str):
        pulumi.set(self, "status", value)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        The Linode Instance type used for the nodes of the  Managed Database instance.
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: str):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter
    def updated(self) -> str:
        """
        When this Managed Database was last updated.
        """
        return pulumi.get(self, "updated")

    @updated.setter
    def updated(self, value: str):
        pulumi.set(self, "updated", value)

    @property
    @pulumi.getter
    def version(self) -> str:
        """
        The Managed Database engine version.
        """
        return pulumi.get(self, "version")

    @version.setter
    def version(self, value: str):
        pulumi.set(self, "version", value)


@pulumi.input_type
class GetDatabasesFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetImagesFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetImagesImageArgs:
    def __init__(__self__, *,
                 capabilities: Sequence[str],
                 created: str,
                 created_by: str,
                 deprecated: bool,
                 description: str,
                 expiry: str,
                 id: str,
                 is_public: bool,
                 label: str,
                 size: int,
                 status: str,
                 type: str,
                 vendor: str):
        """
        :param str created: When this Image was created.
        :param str created_by: The name of the User who created this Image, or "linode" for official Images.
        :param bool deprecated: Whether or not this Image is deprecated. Will only be true for deprecated public Images.
        :param str description: A detailed description of this Image.
        :param str id: The unique ID of this Image.  The ID of private images begin with `private/` followed by the numeric identifier of the private image, for example `private/12345`.
        :param bool is_public: True if the Image is public.
        :param str label: A short description of the Image.
        :param int size: The minimum size this Image needs to deploy. Size is in MB. example: 2500
        :param str status: The current status of this image. (`creating`, `pending_upload`, `available`)
        :param str type: How the Image was created. Manual Images can be created at any time. "Automatic" Images are created automatically from a deleted Linode. (`manual`, `automatic`)
        :param str vendor: The upstream distribution vendor. `None` for private Images.
        """
        pulumi.set(__self__, "capabilities", capabilities)
        pulumi.set(__self__, "created", created)
        pulumi.set(__self__, "created_by", created_by)
        pulumi.set(__self__, "deprecated", deprecated)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "expiry", expiry)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "is_public", is_public)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "size", size)
        pulumi.set(__self__, "status", status)
        pulumi.set(__self__, "type", type)
        pulumi.set(__self__, "vendor", vendor)

    @property
    @pulumi.getter
    def capabilities(self) -> Sequence[str]:
        return pulumi.get(self, "capabilities")

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

    @property
    @pulumi.getter
    def created(self) -> str:
        """
        When this Image was created.
        """
        return pulumi.get(self, "created")

    @created.setter
    def created(self, value: str):
        pulumi.set(self, "created", value)

    @property
    @pulumi.getter(name="createdBy")
    def created_by(self) -> str:
        """
        The name of the User who created this Image, or "linode" for official Images.
        """
        return pulumi.get(self, "created_by")

    @created_by.setter
    def created_by(self, value: str):
        pulumi.set(self, "created_by", value)

    @property
    @pulumi.getter
    def deprecated(self) -> bool:
        """
        Whether or not this Image is deprecated. Will only be true for deprecated public Images.
        """
        return pulumi.get(self, "deprecated")

    @deprecated.setter
    def deprecated(self, value: bool):
        pulumi.set(self, "deprecated", value)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        A detailed description of this Image.
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: str):
        pulumi.set(self, "description", value)

    @property
    @pulumi.getter
    def expiry(self) -> str:
        return pulumi.get(self, "expiry")

    @expiry.setter
    def expiry(self, value: str):
        pulumi.set(self, "expiry", value)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The unique ID of this Image.  The ID of private images begin with `private/` followed by the numeric identifier of the private image, for example `private/12345`.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: str):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="isPublic")
    def is_public(self) -> bool:
        """
        True if the Image is public.
        """
        return pulumi.get(self, "is_public")

    @is_public.setter
    def is_public(self, value: bool):
        pulumi.set(self, "is_public", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        A short description of the Image.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def size(self) -> int:
        """
        The minimum size this Image needs to deploy. Size is in MB. example: 2500
        """
        return pulumi.get(self, "size")

    @size.setter
    def size(self, value: int):
        pulumi.set(self, "size", value)

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The current status of this image. (`creating`, `pending_upload`, `available`)
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: str):
        pulumi.set(self, "status", value)

    @property
    @pulumi.getter
    def type(self) -> str:
        """
        How the Image was created. Manual Images can be created at any time. "Automatic" Images are created automatically from a deleted Linode. (`manual`, `automatic`)
        """
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: str):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter
    def vendor(self) -> str:
        """
        The upstream distribution vendor. `None` for private Images.
        """
        return pulumi.get(self, "vendor")

    @vendor.setter
    def vendor(self, value: str):
        pulumi.set(self, "vendor", value)


@pulumi.input_type
class GetInstanceTypesFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetInstanceTypesTypeArgs:
    def __init__(__self__, *,
                 addons: Sequence['GetInstanceTypesTypeAddonArgs'],
                 class_: str,
                 disk: int,
                 id: str,
                 label: str,
                 memory: int,
                 network_out: int,
                 prices: Sequence['GetInstanceTypesTypePriceArgs'],
                 transfer: int,
                 vcpus: int):
        """
        :param str class_: The class of the Linode Type. See all classes [here](https://www.linode.com/docs/api/linode-types/#type-view__responses).
        :param int disk: The Disk size, in MB, of the Linode Type.
        :param str id: The ID representing the Linode Type.
        :param str label: The Linode Type's label is for display purposes only.
        :param int memory: The amount of RAM included in this Linode Type.
        :param int network_out: The Mbits outbound bandwidth allocation.
        :param int transfer: The monthly outbound transfer amount, in MB.
        :param int vcpus: The number of VCPU cores this Linode Type offers.
        """
        pulumi.set(__self__, "addons", addons)
        pulumi.set(__self__, "class_", class_)
        pulumi.set(__self__, "disk", disk)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "memory", memory)
        pulumi.set(__self__, "network_out", network_out)
        pulumi.set(__self__, "prices", prices)
        pulumi.set(__self__, "transfer", transfer)
        pulumi.set(__self__, "vcpus", vcpus)

    @property
    @pulumi.getter
    def addons(self) -> Sequence['GetInstanceTypesTypeAddonArgs']:
        return pulumi.get(self, "addons")

    @addons.setter
    def addons(self, value: Sequence['GetInstanceTypesTypeAddonArgs']):
        pulumi.set(self, "addons", value)

    @property
    @pulumi.getter(name="class")
    def class_(self) -> str:
        """
        The class of the Linode Type. See all classes [here](https://www.linode.com/docs/api/linode-types/#type-view__responses).
        """
        return pulumi.get(self, "class_")

    @class_.setter
    def class_(self, value: str):
        pulumi.set(self, "class_", value)

    @property
    @pulumi.getter
    def disk(self) -> int:
        """
        The Disk size, in MB, of the Linode Type.
        """
        return pulumi.get(self, "disk")

    @disk.setter
    def disk(self, value: int):
        pulumi.set(self, "disk", value)

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

    @id.setter
    def id(self, value: str):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The Linode Type's label is for display purposes only.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def memory(self) -> int:
        """
        The amount of RAM included in this Linode Type.
        """
        return pulumi.get(self, "memory")

    @memory.setter
    def memory(self, value: int):
        pulumi.set(self, "memory", value)

    @property
    @pulumi.getter(name="networkOut")
    def network_out(self) -> int:
        """
        The Mbits outbound bandwidth allocation.
        """
        return pulumi.get(self, "network_out")

    @network_out.setter
    def network_out(self, value: int):
        pulumi.set(self, "network_out", value)

    @property
    @pulumi.getter
    def prices(self) -> Sequence['GetInstanceTypesTypePriceArgs']:
        return pulumi.get(self, "prices")

    @prices.setter
    def prices(self, value: Sequence['GetInstanceTypesTypePriceArgs']):
        pulumi.set(self, "prices", value)

    @property
    @pulumi.getter
    def transfer(self) -> int:
        """
        The monthly outbound transfer amount, in MB.
        """
        return pulumi.get(self, "transfer")

    @transfer.setter
    def transfer(self, value: int):
        pulumi.set(self, "transfer", value)

    @property
    @pulumi.getter
    def vcpus(self) -> int:
        """
        The number of VCPU cores this Linode Type offers.
        """
        return pulumi.get(self, "vcpus")

    @vcpus.setter
    def vcpus(self, value: int):
        pulumi.set(self, "vcpus", value)


@pulumi.input_type
class GetInstanceTypesTypeAddonArgs:
    def __init__(__self__, *,
                 backups: Sequence['GetInstanceTypesTypeAddonBackupArgs']):
        pulumi.set(__self__, "backups", backups)

    @property
    @pulumi.getter
    def backups(self) -> Sequence['GetInstanceTypesTypeAddonBackupArgs']:
        return pulumi.get(self, "backups")

    @backups.setter
    def backups(self, value: Sequence['GetInstanceTypesTypeAddonBackupArgs']):
        pulumi.set(self, "backups", value)


@pulumi.input_type
class GetInstanceTypesTypeAddonBackupArgs:
    def __init__(__self__, *,
                 prices: Sequence['GetInstanceTypesTypeAddonBackupPriceArgs']):
        pulumi.set(__self__, "prices", prices)

    @property
    @pulumi.getter
    def prices(self) -> Sequence['GetInstanceTypesTypeAddonBackupPriceArgs']:
        return pulumi.get(self, "prices")

    @prices.setter
    def prices(self, value: Sequence['GetInstanceTypesTypeAddonBackupPriceArgs']):
        pulumi.set(self, "prices", value)


@pulumi.input_type
class GetInstanceTypesTypeAddonBackupPriceArgs:
    def __init__(__self__, *,
                 hourly: float,
                 monthly: float):
        pulumi.set(__self__, "hourly", hourly)
        pulumi.set(__self__, "monthly", monthly)

    @property
    @pulumi.getter
    def hourly(self) -> float:
        return pulumi.get(self, "hourly")

    @hourly.setter
    def hourly(self, value: float):
        pulumi.set(self, "hourly", value)

    @property
    @pulumi.getter
    def monthly(self) -> float:
        return pulumi.get(self, "monthly")

    @monthly.setter
    def monthly(self, value: float):
        pulumi.set(self, "monthly", value)


@pulumi.input_type
class GetInstanceTypesTypePriceArgs:
    def __init__(__self__, *,
                 hourly: float,
                 monthly: float):
        pulumi.set(__self__, "hourly", hourly)
        pulumi.set(__self__, "monthly", monthly)

    @property
    @pulumi.getter
    def hourly(self) -> float:
        return pulumi.get(self, "hourly")

    @hourly.setter
    def hourly(self, value: float):
        pulumi.set(self, "hourly", value)

    @property
    @pulumi.getter
    def monthly(self) -> float:
        return pulumi.get(self, "monthly")

    @monthly.setter
    def monthly(self, value: float):
        pulumi.set(self, "monthly", value)


@pulumi.input_type
class GetInstancesFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by. See the Filterable Fields section for a list of filterable fields.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by. See the Filterable Fields section for a list of filterable fields.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetNodebalancersFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetNodebalancersNodebalancerArgs:
    def __init__(__self__, *,
                 client_conn_throttle: int,
                 created: str,
                 hostname: str,
                 id: int,
                 ipv4: str,
                 ipv6: str,
                 label: str,
                 region: str,
                 tags: Sequence[str],
                 transfers: Sequence['GetNodebalancersNodebalancerTransferArgs'],
                 updated: str):
        """
        :param int client_conn_throttle: Throttle connections per second (0-20)
        :param str created: When this Linode NodeBalancer was created
        :param str hostname: This NodeBalancer's hostname, ending with .ip.linodeusercontent.com
        :param int id: The Linode NodeBalancer's unique ID
        :param str ipv4: The Public IPv4 Address of this NodeBalancer
        :param str ipv6: The Public IPv6 Address of this NodeBalancer
        :param str label: The label of the Linode NodeBalancer
        :param str region: The Region where this Linode NodeBalancer is located. NodeBalancers only support backends in the same Region.
        :param Sequence[str] tags: A list of tags applied to this object. Tags are for organizational purposes only.
        :param str updated: When this Linode NodeBalancer was last updated
        """
        pulumi.set(__self__, "client_conn_throttle", client_conn_throttle)
        pulumi.set(__self__, "created", created)
        pulumi.set(__self__, "hostname", hostname)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "ipv4", ipv4)
        pulumi.set(__self__, "ipv6", ipv6)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "region", region)
        pulumi.set(__self__, "tags", tags)
        pulumi.set(__self__, "transfers", transfers)
        pulumi.set(__self__, "updated", updated)

    @property
    @pulumi.getter(name="clientConnThrottle")
    def client_conn_throttle(self) -> int:
        """
        Throttle connections per second (0-20)
        """
        return pulumi.get(self, "client_conn_throttle")

    @client_conn_throttle.setter
    def client_conn_throttle(self, value: int):
        pulumi.set(self, "client_conn_throttle", value)

    @property
    @pulumi.getter
    def created(self) -> str:
        """
        When this Linode NodeBalancer was created
        """
        return pulumi.get(self, "created")

    @created.setter
    def created(self, value: str):
        pulumi.set(self, "created", value)

    @property
    @pulumi.getter
    def hostname(self) -> str:
        """
        This NodeBalancer's hostname, ending with .ip.linodeusercontent.com
        """
        return pulumi.get(self, "hostname")

    @hostname.setter
    def hostname(self, value: str):
        pulumi.set(self, "hostname", value)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The Linode NodeBalancer's unique ID
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def ipv4(self) -> str:
        """
        The Public IPv4 Address of this NodeBalancer
        """
        return pulumi.get(self, "ipv4")

    @ipv4.setter
    def ipv4(self, value: str):
        pulumi.set(self, "ipv4", value)

    @property
    @pulumi.getter
    def ipv6(self) -> str:
        """
        The Public IPv6 Address of this NodeBalancer
        """
        return pulumi.get(self, "ipv6")

    @ipv6.setter
    def ipv6(self, value: str):
        pulumi.set(self, "ipv6", value)

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

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def region(self) -> str:
        """
        The Region where this Linode NodeBalancer is located. NodeBalancers only support backends in the same Region.
        """
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: str):
        pulumi.set(self, "region", value)

    @property
    @pulumi.getter
    def tags(self) -> Sequence[str]:
        """
        A list of tags applied to this object. Tags are for organizational purposes only.
        """
        return pulumi.get(self, "tags")

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

    @property
    @pulumi.getter
    def transfers(self) -> Sequence['GetNodebalancersNodebalancerTransferArgs']:
        return pulumi.get(self, "transfers")

    @transfers.setter
    def transfers(self, value: Sequence['GetNodebalancersNodebalancerTransferArgs']):
        pulumi.set(self, "transfers", value)

    @property
    @pulumi.getter
    def updated(self) -> str:
        """
        When this Linode NodeBalancer was last updated
        """
        return pulumi.get(self, "updated")

    @updated.setter
    def updated(self, value: str):
        pulumi.set(self, "updated", value)


@pulumi.input_type
class GetNodebalancersNodebalancerTransferArgs:
    def __init__(__self__, *,
                 in_: float,
                 out: float,
                 total: float):
        """
        :param float in_: The total transfer, in MB, used by this NodeBalancer for the current month
        :param float out: The total inbound transfer, in MB, used for this NodeBalancer for the current month
        :param float total: The total outbound transfer, in MB, used for this NodeBalancer for the current month
        """
        pulumi.set(__self__, "in_", in_)
        pulumi.set(__self__, "out", out)
        pulumi.set(__self__, "total", total)

    @property
    @pulumi.getter(name="in")
    def in_(self) -> float:
        """
        The total transfer, in MB, used by this NodeBalancer for the current month
        """
        return pulumi.get(self, "in_")

    @in_.setter
    def in_(self, value: float):
        pulumi.set(self, "in_", value)

    @property
    @pulumi.getter
    def out(self) -> float:
        """
        The total inbound transfer, in MB, used for this NodeBalancer for the current month
        """
        return pulumi.get(self, "out")

    @out.setter
    def out(self, value: float):
        pulumi.set(self, "out", value)

    @property
    @pulumi.getter
    def total(self) -> float:
        """
        The total outbound transfer, in MB, used for this NodeBalancer for the current month
        """
        return pulumi.get(self, "total")

    @total.setter
    def total(self, value: float):
        pulumi.set(self, "total", value)


@pulumi.input_type
class GetRegionResolverArgs:
    def __init__(__self__, *,
                 ipv4: str,
                 ipv6: str):
        """
        :param str ipv4: The IPv4 addresses for this region’s DNS resolvers, separated by commas.
        :param str ipv6: The IPv6 addresses for this region’s DNS resolvers, separated by commas.
        """
        pulumi.set(__self__, "ipv4", ipv4)
        pulumi.set(__self__, "ipv6", ipv6)

    @property
    @pulumi.getter
    def ipv4(self) -> str:
        """
        The IPv4 addresses for this region’s DNS resolvers, separated by commas.
        """
        return pulumi.get(self, "ipv4")

    @ipv4.setter
    def ipv4(self, value: str):
        pulumi.set(self, "ipv4", value)

    @property
    @pulumi.getter
    def ipv6(self) -> str:
        """
        The IPv6 addresses for this region’s DNS resolvers, separated by commas.
        """
        return pulumi.get(self, "ipv6")

    @ipv6.setter
    def ipv6(self, value: str):
        pulumi.set(self, "ipv6", value)


@pulumi.input_type
class GetRegionsFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetRegionsRegionArgs:
    def __init__(__self__, *,
                 capabilities: Sequence[str],
                 country: str,
                 id: str,
                 label: str,
                 status: str,
                 resolvers: Optional[Sequence['GetRegionsRegionResolverArgs']] = None):
        """
        :param Sequence[str] capabilities: A list of capabilities of this region.
        :param str country: The country the region resides in.
        :param str label: Detailed location information for this Region, including city, state or region, and country.
        :param str status: This region’s current operational status (ok or outage).
        """
        pulumi.set(__self__, "capabilities", capabilities)
        pulumi.set(__self__, "country", country)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "status", status)
        if resolvers is not None:
            pulumi.set(__self__, "resolvers", resolvers)

    @property
    @pulumi.getter
    def capabilities(self) -> Sequence[str]:
        """
        A list of capabilities of this region.
        """
        return pulumi.get(self, "capabilities")

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

    @property
    @pulumi.getter
    def country(self) -> str:
        """
        The country the region resides in.
        """
        return pulumi.get(self, "country")

    @country.setter
    def country(self, value: str):
        pulumi.set(self, "country", value)

    @property
    @pulumi.getter
    def id(self) -> str:
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: str):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        Detailed location information for this Region, including city, state or region, and country.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        This region’s current operational status (ok or outage).
        """
        return pulumi.get(self, "status")

    @status.setter
    def status(self, value: str):
        pulumi.set(self, "status", value)

    @property
    @pulumi.getter
    def resolvers(self) -> Optional[Sequence['GetRegionsRegionResolverArgs']]:
        return pulumi.get(self, "resolvers")

    @resolvers.setter
    def resolvers(self, value: Optional[Sequence['GetRegionsRegionResolverArgs']]):
        pulumi.set(self, "resolvers", value)


@pulumi.input_type
class GetRegionsRegionResolverArgs:
    def __init__(__self__, *,
                 ipv4: str,
                 ipv6: str):
        """
        :param str ipv4: The IPv4 addresses for this region’s DNS resolvers, separated by commas.
        :param str ipv6: The IPv6 addresses for this region’s DNS resolvers, separated by commas.
        """
        pulumi.set(__self__, "ipv4", ipv4)
        pulumi.set(__self__, "ipv6", ipv6)

    @property
    @pulumi.getter
    def ipv4(self) -> str:
        """
        The IPv4 addresses for this region’s DNS resolvers, separated by commas.
        """
        return pulumi.get(self, "ipv4")

    @ipv4.setter
    def ipv4(self, value: str):
        pulumi.set(self, "ipv4", value)

    @property
    @pulumi.getter
    def ipv6(self) -> str:
        """
        The IPv6 addresses for this region’s DNS resolvers, separated by commas.
        """
        return pulumi.get(self, "ipv6")

    @ipv6.setter
    def ipv6(self, value: str):
        pulumi.set(self, "ipv6", value)


@pulumi.input_type
class GetStackScriptsFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetStackScriptsStackscriptArgs:
    def __init__(__self__, *,
                 created: str,
                 deployments_active: int,
                 deployments_total: int,
                 description: str,
                 id: str,
                 images: Sequence[str],
                 is_public: bool,
                 label: str,
                 rev_note: str,
                 script: str,
                 updated: str,
                 user_defined_fields: Sequence['GetStackScriptsStackscriptUserDefinedFieldArgs'],
                 user_gravatar_id: str,
                 username: str):
        """
        :param str created: The date this StackScript was created.
        :param int deployments_active: Count of currently active, deployed Linodes created from this StackScript.
        :param int deployments_total: The total number of times this StackScript has been deployed.
        :param str description: A description for the StackScript.
        :param str id: The unique ID of the StackScript.
        :param Sequence[str] images: An array of Image IDs representing the Images that this StackScript is compatible for deploying with.
        :param bool is_public: This determines whether other users can use your StackScript. Once a StackScript is made public, it cannot be made private.
        :param str label: A human-readable label for the field that will serve as the input prompt for entering the value during deployment.
        :param str rev_note: This field allows you to add notes for the set of revisions made to this StackScript.
        :param str script: The script to execute when provisioning a new Linode with this StackScript.
        :param str updated: The date this StackScript was updated.
        :param Sequence['GetStackScriptsStackscriptUserDefinedFieldArgs'] user_defined_fields: This is a list of fields defined with a special syntax inside this StackScript that allow for supplying customized parameters during deployment.
        :param str user_gravatar_id: The Gravatar ID for the User who created the StackScript.
        :param str username: The User who created the StackScript.
        """
        pulumi.set(__self__, "created", created)
        pulumi.set(__self__, "deployments_active", deployments_active)
        pulumi.set(__self__, "deployments_total", deployments_total)
        pulumi.set(__self__, "description", description)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "images", images)
        pulumi.set(__self__, "is_public", is_public)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "rev_note", rev_note)
        pulumi.set(__self__, "script", script)
        pulumi.set(__self__, "updated", updated)
        pulumi.set(__self__, "user_defined_fields", user_defined_fields)
        pulumi.set(__self__, "user_gravatar_id", user_gravatar_id)
        pulumi.set(__self__, "username", username)

    @property
    @pulumi.getter
    def created(self) -> str:
        """
        The date this StackScript was created.
        """
        return pulumi.get(self, "created")

    @created.setter
    def created(self, value: str):
        pulumi.set(self, "created", value)

    @property
    @pulumi.getter(name="deploymentsActive")
    def deployments_active(self) -> int:
        """
        Count of currently active, deployed Linodes created from this StackScript.
        """
        return pulumi.get(self, "deployments_active")

    @deployments_active.setter
    def deployments_active(self, value: int):
        pulumi.set(self, "deployments_active", value)

    @property
    @pulumi.getter(name="deploymentsTotal")
    def deployments_total(self) -> int:
        """
        The total number of times this StackScript has been deployed.
        """
        return pulumi.get(self, "deployments_total")

    @deployments_total.setter
    def deployments_total(self, value: int):
        pulumi.set(self, "deployments_total", value)

    @property
    @pulumi.getter
    def description(self) -> str:
        """
        A description for the StackScript.
        """
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: str):
        pulumi.set(self, "description", value)

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

    @id.setter
    def id(self, value: str):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def images(self) -> Sequence[str]:
        """
        An array of Image IDs representing the Images that this StackScript is compatible for deploying with.
        """
        return pulumi.get(self, "images")

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

    @property
    @pulumi.getter(name="isPublic")
    def is_public(self) -> bool:
        """
        This determines whether other users can use your StackScript. Once a StackScript is made public, it cannot be made private.
        """
        return pulumi.get(self, "is_public")

    @is_public.setter
    def is_public(self, value: bool):
        pulumi.set(self, "is_public", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        A human-readable label for the field that will serve as the input prompt for entering the value during deployment.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter(name="revNote")
    def rev_note(self) -> str:
        """
        This field allows you to add notes for the set of revisions made to this StackScript.
        """
        return pulumi.get(self, "rev_note")

    @rev_note.setter
    def rev_note(self, value: str):
        pulumi.set(self, "rev_note", value)

    @property
    @pulumi.getter
    def script(self) -> str:
        """
        The script to execute when provisioning a new Linode with this StackScript.
        """
        return pulumi.get(self, "script")

    @script.setter
    def script(self, value: str):
        pulumi.set(self, "script", value)

    @property
    @pulumi.getter
    def updated(self) -> str:
        """
        The date this StackScript was updated.
        """
        return pulumi.get(self, "updated")

    @updated.setter
    def updated(self, value: str):
        pulumi.set(self, "updated", value)

    @property
    @pulumi.getter(name="userDefinedFields")
    def user_defined_fields(self) -> Sequence['GetStackScriptsStackscriptUserDefinedFieldArgs']:
        """
        This is a list of fields defined with a special syntax inside this StackScript that allow for supplying customized parameters during deployment.
        """
        return pulumi.get(self, "user_defined_fields")

    @user_defined_fields.setter
    def user_defined_fields(self, value: Sequence['GetStackScriptsStackscriptUserDefinedFieldArgs']):
        pulumi.set(self, "user_defined_fields", value)

    @property
    @pulumi.getter(name="userGravatarId")
    def user_gravatar_id(self) -> str:
        """
        The Gravatar ID for the User who created the StackScript.
        """
        return pulumi.get(self, "user_gravatar_id")

    @user_gravatar_id.setter
    def user_gravatar_id(self, value: str):
        pulumi.set(self, "user_gravatar_id", value)

    @property
    @pulumi.getter
    def username(self) -> str:
        """
        The User who created the StackScript.
        """
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: str):
        pulumi.set(self, "username", value)


@pulumi.input_type
class GetStackScriptsStackscriptUserDefinedFieldArgs:
    def __init__(__self__, *,
                 default: str,
                 example: str,
                 label: str,
                 many_of: str,
                 name: str,
                 one_of: str):
        """
        :param str default: The default value. If not specified, this value will be used.
        :param str example: An example value for the field.
        :param str label: A human-readable label for the field that will serve as the input prompt for entering the value during deployment.
        :param str many_of: A list of acceptable values for the field in any quantity, combination or order.
        :param str name: The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        :param str one_of: A list of acceptable single values for the field.
        """
        pulumi.set(__self__, "default", default)
        pulumi.set(__self__, "example", example)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "many_of", many_of)
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "one_of", one_of)

    @property
    @pulumi.getter
    def default(self) -> str:
        """
        The default value. If not specified, this value will be used.
        """
        return pulumi.get(self, "default")

    @default.setter
    def default(self, value: str):
        pulumi.set(self, "default", value)

    @property
    @pulumi.getter
    def example(self) -> str:
        """
        An example value for the field.
        """
        return pulumi.get(self, "example")

    @example.setter
    def example(self, value: str):
        pulumi.set(self, "example", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        A human-readable label for the field that will serve as the input prompt for entering the value during deployment.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter(name="manyOf")
    def many_of(self) -> str:
        """
        A list of acceptable values for the field in any quantity, combination or order.
        """
        return pulumi.get(self, "many_of")

    @many_of.setter
    def many_of(self, value: str):
        pulumi.set(self, "many_of", value)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="oneOf")
    def one_of(self) -> str:
        """
        A list of acceptable single values for the field.
        """
        return pulumi.get(self, "one_of")

    @one_of.setter
    def one_of(self, value: str):
        pulumi.set(self, "one_of", value)


@pulumi.input_type
class GetUserDatabaseGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUserDomainGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUserFirewallGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUserImageGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUserLinodeGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUserLongviewGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUserNodebalancerGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUserStackscriptGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUserVolumeGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access. (`read_only`, `read_write`)
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUsersFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetUsersUserArgs:
    def __init__(__self__, *,
                 database_grants: Sequence['GetUsersUserDatabaseGrantArgs'],
                 domain_grants: Sequence['GetUsersUserDomainGrantArgs'],
                 email: str,
                 firewall_grants: Sequence['GetUsersUserFirewallGrantArgs'],
                 global_grants: Sequence['GetUsersUserGlobalGrantArgs'],
                 id: str,
                 image_grants: Sequence['GetUsersUserImageGrantArgs'],
                 linode_grants: Sequence['GetUsersUserLinodeGrantArgs'],
                 longview_grants: Sequence['GetUsersUserLongviewGrantArgs'],
                 nodebalancer_grants: Sequence['GetUsersUserNodebalancerGrantArgs'],
                 password_created: str,
                 restricted: bool,
                 ssh_keys: Sequence[str],
                 stackscript_grants: Sequence['GetUsersUserStackscriptGrantArgs'],
                 tfa_enabled: bool,
                 username: str,
                 verified_phone_number: str,
                 volume_grants: Sequence['GetUsersUserVolumeGrantArgs']):
        """
        :param str email: The email address for this User, for account management communications, and may be used for other communications as configured.
        :param str id: The ID of entity this grant applies to.
        :param str password_created: The date and time when this User’s current password was created. User passwords are first created during the Account sign-up process, and updated using the Reset Password webpage. null if this User has not created a password yet.
        :param bool restricted: If true, this User must be granted access to perform actions or access entities on this Account.
        :param Sequence[str] ssh_keys: A list of SSH Key labels added by this User. These are the keys that will be deployed if this User is included in the authorized_users field of a create Linode, rebuild Linode, or create Disk request.
        :param bool tfa_enabled: A boolean value indicating if the User has Two Factor Authentication (TFA) enabled.
        :param str username: This User's username. This is used for logging in, and may also be displayed alongside actions the User performs (for example, in Events or public StackScripts).
        :param str verified_phone_number: The phone number verified for this User Profile with the Phone Number Verify command. null if this User Profile has no verified phone number.
        """
        pulumi.set(__self__, "database_grants", database_grants)
        pulumi.set(__self__, "domain_grants", domain_grants)
        pulumi.set(__self__, "email", email)
        pulumi.set(__self__, "firewall_grants", firewall_grants)
        pulumi.set(__self__, "global_grants", global_grants)
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "image_grants", image_grants)
        pulumi.set(__self__, "linode_grants", linode_grants)
        pulumi.set(__self__, "longview_grants", longview_grants)
        pulumi.set(__self__, "nodebalancer_grants", nodebalancer_grants)
        pulumi.set(__self__, "password_created", password_created)
        pulumi.set(__self__, "restricted", restricted)
        pulumi.set(__self__, "ssh_keys", ssh_keys)
        pulumi.set(__self__, "stackscript_grants", stackscript_grants)
        pulumi.set(__self__, "tfa_enabled", tfa_enabled)
        pulumi.set(__self__, "username", username)
        pulumi.set(__self__, "verified_phone_number", verified_phone_number)
        pulumi.set(__self__, "volume_grants", volume_grants)

    @property
    @pulumi.getter(name="databaseGrants")
    def database_grants(self) -> Sequence['GetUsersUserDatabaseGrantArgs']:
        return pulumi.get(self, "database_grants")

    @database_grants.setter
    def database_grants(self, value: Sequence['GetUsersUserDatabaseGrantArgs']):
        pulumi.set(self, "database_grants", value)

    @property
    @pulumi.getter(name="domainGrants")
    def domain_grants(self) -> Sequence['GetUsersUserDomainGrantArgs']:
        return pulumi.get(self, "domain_grants")

    @domain_grants.setter
    def domain_grants(self, value: Sequence['GetUsersUserDomainGrantArgs']):
        pulumi.set(self, "domain_grants", value)

    @property
    @pulumi.getter
    def email(self) -> str:
        """
        The email address for this User, for account management communications, and may be used for other communications as configured.
        """
        return pulumi.get(self, "email")

    @email.setter
    def email(self, value: str):
        pulumi.set(self, "email", value)

    @property
    @pulumi.getter(name="firewallGrants")
    def firewall_grants(self) -> Sequence['GetUsersUserFirewallGrantArgs']:
        return pulumi.get(self, "firewall_grants")

    @firewall_grants.setter
    def firewall_grants(self, value: Sequence['GetUsersUserFirewallGrantArgs']):
        pulumi.set(self, "firewall_grants", value)

    @property
    @pulumi.getter(name="globalGrants")
    def global_grants(self) -> Sequence['GetUsersUserGlobalGrantArgs']:
        return pulumi.get(self, "global_grants")

    @global_grants.setter
    def global_grants(self, value: Sequence['GetUsersUserGlobalGrantArgs']):
        pulumi.set(self, "global_grants", value)

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: str):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="imageGrants")
    def image_grants(self) -> Sequence['GetUsersUserImageGrantArgs']:
        return pulumi.get(self, "image_grants")

    @image_grants.setter
    def image_grants(self, value: Sequence['GetUsersUserImageGrantArgs']):
        pulumi.set(self, "image_grants", value)

    @property
    @pulumi.getter(name="linodeGrants")
    def linode_grants(self) -> Sequence['GetUsersUserLinodeGrantArgs']:
        return pulumi.get(self, "linode_grants")

    @linode_grants.setter
    def linode_grants(self, value: Sequence['GetUsersUserLinodeGrantArgs']):
        pulumi.set(self, "linode_grants", value)

    @property
    @pulumi.getter(name="longviewGrants")
    def longview_grants(self) -> Sequence['GetUsersUserLongviewGrantArgs']:
        return pulumi.get(self, "longview_grants")

    @longview_grants.setter
    def longview_grants(self, value: Sequence['GetUsersUserLongviewGrantArgs']):
        pulumi.set(self, "longview_grants", value)

    @property
    @pulumi.getter(name="nodebalancerGrants")
    def nodebalancer_grants(self) -> Sequence['GetUsersUserNodebalancerGrantArgs']:
        return pulumi.get(self, "nodebalancer_grants")

    @nodebalancer_grants.setter
    def nodebalancer_grants(self, value: Sequence['GetUsersUserNodebalancerGrantArgs']):
        pulumi.set(self, "nodebalancer_grants", value)

    @property
    @pulumi.getter(name="passwordCreated")
    def password_created(self) -> str:
        """
        The date and time when this User’s current password was created. User passwords are first created during the Account sign-up process, and updated using the Reset Password webpage. null if this User has not created a password yet.
        """
        return pulumi.get(self, "password_created")

    @password_created.setter
    def password_created(self, value: str):
        pulumi.set(self, "password_created", value)

    @property
    @pulumi.getter
    def restricted(self) -> bool:
        """
        If true, this User must be granted access to perform actions or access entities on this Account.
        """
        return pulumi.get(self, "restricted")

    @restricted.setter
    def restricted(self, value: bool):
        pulumi.set(self, "restricted", value)

    @property
    @pulumi.getter(name="sshKeys")
    def ssh_keys(self) -> Sequence[str]:
        """
        A list of SSH Key labels added by this User. These are the keys that will be deployed if this User is included in the authorized_users field of a create Linode, rebuild Linode, or create Disk request.
        """
        return pulumi.get(self, "ssh_keys")

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

    @property
    @pulumi.getter(name="stackscriptGrants")
    def stackscript_grants(self) -> Sequence['GetUsersUserStackscriptGrantArgs']:
        return pulumi.get(self, "stackscript_grants")

    @stackscript_grants.setter
    def stackscript_grants(self, value: Sequence['GetUsersUserStackscriptGrantArgs']):
        pulumi.set(self, "stackscript_grants", value)

    @property
    @pulumi.getter(name="tfaEnabled")
    def tfa_enabled(self) -> bool:
        """
        A boolean value indicating if the User has Two Factor Authentication (TFA) enabled.
        """
        return pulumi.get(self, "tfa_enabled")

    @tfa_enabled.setter
    def tfa_enabled(self, value: bool):
        pulumi.set(self, "tfa_enabled", value)

    @property
    @pulumi.getter
    def username(self) -> str:
        """
        This User's username. This is used for logging in, and may also be displayed alongside actions the User performs (for example, in Events or public StackScripts).
        """
        return pulumi.get(self, "username")

    @username.setter
    def username(self, value: str):
        pulumi.set(self, "username", value)

    @property
    @pulumi.getter(name="verifiedPhoneNumber")
    def verified_phone_number(self) -> str:
        """
        The phone number verified for this User Profile with the Phone Number Verify command. null if this User Profile has no verified phone number.
        """
        return pulumi.get(self, "verified_phone_number")

    @verified_phone_number.setter
    def verified_phone_number(self, value: str):
        pulumi.set(self, "verified_phone_number", value)

    @property
    @pulumi.getter(name="volumeGrants")
    def volume_grants(self) -> Sequence['GetUsersUserVolumeGrantArgs']:
        return pulumi.get(self, "volume_grants")

    @volume_grants.setter
    def volume_grants(self, value: Sequence['GetUsersUserVolumeGrantArgs']):
        pulumi.set(self, "volume_grants", value)


@pulumi.input_type
class GetUsersUserDatabaseGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access.
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUsersUserDomainGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access.
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUsersUserFirewallGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access.
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUsersUserGlobalGrantArgs:
    def __init__(__self__, *,
                 account_access: str,
                 add_databases: bool,
                 add_domains: bool,
                 add_firewalls: bool,
                 add_images: bool,
                 add_linodes: bool,
                 add_longview: bool,
                 add_nodebalancers: bool,
                 add_stackscripts: bool,
                 add_volumes: bool,
                 cancel_account: bool,
                 longview_subscription: bool):
        """
        :param str account_access: The level of access this User has to Account-level actions, like billing information. A restricted User will never be able to manage users. (`read_only`, `read_write`)
        :param bool add_databases: If true, this User may add Managed Databases.
        :param bool add_domains: If true, this User may add Domains.
        :param bool add_firewalls: If true, this User may add Firewalls.
        :param bool add_images: If true, this User may add Images.
        :param bool add_linodes: If true, this User may create Linodes.
        :param bool add_longview: If true, this User may create Longview clients and view the current plan.
        :param bool add_nodebalancers: If true, this User may add NodeBalancers.
        :param bool add_volumes: If true, this User may add Volumes.
        :param bool cancel_account: If true, this User may cancel the entire Account.
        :param bool longview_subscription: If true, this User may manage the Account’s Longview subscription.
        """
        pulumi.set(__self__, "account_access", account_access)
        pulumi.set(__self__, "add_databases", add_databases)
        pulumi.set(__self__, "add_domains", add_domains)
        pulumi.set(__self__, "add_firewalls", add_firewalls)
        pulumi.set(__self__, "add_images", add_images)
        pulumi.set(__self__, "add_linodes", add_linodes)
        pulumi.set(__self__, "add_longview", add_longview)
        pulumi.set(__self__, "add_nodebalancers", add_nodebalancers)
        pulumi.set(__self__, "add_stackscripts", add_stackscripts)
        pulumi.set(__self__, "add_volumes", add_volumes)
        pulumi.set(__self__, "cancel_account", cancel_account)
        pulumi.set(__self__, "longview_subscription", longview_subscription)

    @property
    @pulumi.getter(name="accountAccess")
    def account_access(self) -> str:
        """
        The level of access this User has to Account-level actions, like billing information. A restricted User will never be able to manage users. (`read_only`, `read_write`)
        """
        return pulumi.get(self, "account_access")

    @account_access.setter
    def account_access(self, value: str):
        pulumi.set(self, "account_access", value)

    @property
    @pulumi.getter(name="addDatabases")
    def add_databases(self) -> bool:
        """
        If true, this User may add Managed Databases.
        """
        return pulumi.get(self, "add_databases")

    @add_databases.setter
    def add_databases(self, value: bool):
        pulumi.set(self, "add_databases", value)

    @property
    @pulumi.getter(name="addDomains")
    def add_domains(self) -> bool:
        """
        If true, this User may add Domains.
        """
        return pulumi.get(self, "add_domains")

    @add_domains.setter
    def add_domains(self, value: bool):
        pulumi.set(self, "add_domains", value)

    @property
    @pulumi.getter(name="addFirewalls")
    def add_firewalls(self) -> bool:
        """
        If true, this User may add Firewalls.
        """
        return pulumi.get(self, "add_firewalls")

    @add_firewalls.setter
    def add_firewalls(self, value: bool):
        pulumi.set(self, "add_firewalls", value)

    @property
    @pulumi.getter(name="addImages")
    def add_images(self) -> bool:
        """
        If true, this User may add Images.
        """
        return pulumi.get(self, "add_images")

    @add_images.setter
    def add_images(self, value: bool):
        pulumi.set(self, "add_images", value)

    @property
    @pulumi.getter(name="addLinodes")
    def add_linodes(self) -> bool:
        """
        If true, this User may create Linodes.
        """
        return pulumi.get(self, "add_linodes")

    @add_linodes.setter
    def add_linodes(self, value: bool):
        pulumi.set(self, "add_linodes", value)

    @property
    @pulumi.getter(name="addLongview")
    def add_longview(self) -> bool:
        """
        If true, this User may create Longview clients and view the current plan.
        """
        return pulumi.get(self, "add_longview")

    @add_longview.setter
    def add_longview(self, value: bool):
        pulumi.set(self, "add_longview", value)

    @property
    @pulumi.getter(name="addNodebalancers")
    def add_nodebalancers(self) -> bool:
        """
        If true, this User may add NodeBalancers.
        """
        return pulumi.get(self, "add_nodebalancers")

    @add_nodebalancers.setter
    def add_nodebalancers(self, value: bool):
        pulumi.set(self, "add_nodebalancers", value)

    @property
    @pulumi.getter(name="addStackscripts")
    def add_stackscripts(self) -> bool:
        return pulumi.get(self, "add_stackscripts")

    @add_stackscripts.setter
    def add_stackscripts(self, value: bool):
        pulumi.set(self, "add_stackscripts", value)

    @property
    @pulumi.getter(name="addVolumes")
    def add_volumes(self) -> bool:
        """
        If true, this User may add Volumes.
        """
        return pulumi.get(self, "add_volumes")

    @add_volumes.setter
    def add_volumes(self, value: bool):
        pulumi.set(self, "add_volumes", value)

    @property
    @pulumi.getter(name="cancelAccount")
    def cancel_account(self) -> bool:
        """
        If true, this User may cancel the entire Account.
        """
        return pulumi.get(self, "cancel_account")

    @cancel_account.setter
    def cancel_account(self, value: bool):
        pulumi.set(self, "cancel_account", value)

    @property
    @pulumi.getter(name="longviewSubscription")
    def longview_subscription(self) -> bool:
        """
        If true, this User may manage the Account’s Longview subscription.
        """
        return pulumi.get(self, "longview_subscription")

    @longview_subscription.setter
    def longview_subscription(self, value: bool):
        pulumi.set(self, "longview_subscription", value)


@pulumi.input_type
class GetUsersUserImageGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access.
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUsersUserLinodeGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access.
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUsersUserLongviewGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access.
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUsersUserNodebalancerGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access.
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUsersUserStackscriptGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access.
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetUsersUserVolumeGrantArgs:
    def __init__(__self__, *,
                 id: int,
                 label: str,
                 permissions: str):
        """
        :param int id: The ID of entity this grant applies to.
        :param str label: The current label of the entity this grant applies to, for display purposes.
        :param str permissions: The level of access this User has to this entity. If null, this User has no access.
        """
        pulumi.set(__self__, "id", id)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "permissions", permissions)

    @property
    @pulumi.getter
    def id(self) -> int:
        """
        The ID of entity this grant applies to.
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: int):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter
    def label(self) -> str:
        """
        The current label of the entity this grant applies to, for display purposes.
        """
        return pulumi.get(self, "label")

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def permissions(self) -> str:
        """
        The level of access this User has to this entity. If null, this User has no access.
        """
        return pulumi.get(self, "permissions")

    @permissions.setter
    def permissions(self, value: str):
        pulumi.set(self, "permissions", value)


@pulumi.input_type
class GetVlansFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 match_by: Optional[str] = None):
        """
        :param str name: The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        :param Sequence[str] values: A list of values for the filter to allow. These values should all be in string form.
        :param str match_by: The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if match_by is not None:
            pulumi.set(__self__, "match_by", match_by)

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        The name of the field to filter by. See the Filterable Fields section for a complete list of filterable fields.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        """
        A list of values for the filter to allow. These values should all be in string form.
        """
        return pulumi.get(self, "values")

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

    @property
    @pulumi.getter(name="matchBy")
    def match_by(self) -> Optional[str]:
        """
        The method to match the field by. (`exact`, `regex`, `substring`; default `exact`)
        """
        return pulumi.get(self, "match_by")

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


@pulumi.input_type
class GetVlansVlanArgs:
    def __init__(__self__, *,
                 created: str,
                 label: str,
                 linodes: Sequence[int],
                 region: str):
        """
        :param str created: When the VLAN was created.
        :param str label: The unique label of the VLAN.
        :param Sequence[int] linodes: The running Linodes currently attached to the VLAN.
        :param str region: The region the VLAN is located in. See all regions [here](https://api.linode.com/v4/regions).
        """
        pulumi.set(__self__, "created", created)
        pulumi.set(__self__, "label", label)
        pulumi.set(__self__, "linodes", linodes)
        pulumi.set(__self__, "region", region)

    @property
    @pulumi.getter
    def created(self) -> str:
        """
        When the VLAN was created.
        """
        return pulumi.get(self, "created")

    @created.setter
    def created(self, value: str):
        pulumi.set(self, "created", value)

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

    @label.setter
    def label(self, value: str):
        pulumi.set(self, "label", value)

    @property
    @pulumi.getter
    def linodes(self) -> Sequence[int]:
        """
        The running Linodes currently attached to the VLAN.
        """
        return pulumi.get(self, "linodes")

    @linodes.setter
    def linodes(self, value: Sequence[int]):
        pulumi.set(self, "linodes", value)

    @property
    @pulumi.getter
    def region(self) -> str:
        """
        The region the VLAN is located in. See all regions [here](https://api.linode.com/v4/regions).
        """
        return pulumi.get(self, "region")

    @region.setter
    def region(self, value: str):
        pulumi.set(self, "region", value)


