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

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from . import _utilities
from . import outputs
from ._inputs import *

__all__ = ['StatefulNodeAzureArgs', 'StatefulNodeAzure']

@pulumi.input_type
class StatefulNodeAzureArgs:
    def __init__(__self__, *,
                 os: pulumi.Input[str],
                 region: pulumi.Input[str],
                 resource_group_name: pulumi.Input[str],
                 should_persist_data_disks: pulumi.Input[bool],
                 should_persist_network: pulumi.Input[bool],
                 should_persist_os_disk: pulumi.Input[bool],
                 strategy: pulumi.Input['StatefulNodeAzureStrategyArgs'],
                 vm_sizes: pulumi.Input['StatefulNodeAzureVmSizesArgs'],
                 attach_data_disks: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureAttachDataDiskArgs']]]] = None,
                 boot_diagnostics: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureBootDiagnosticArgs']]]] = None,
                 custom_data: Optional[pulumi.Input[str]] = None,
                 data_disks: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureDataDiskArgs']]]] = None,
                 data_disks_persistence_mode: Optional[pulumi.Input[str]] = None,
                 deletes: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureDeleteArgs']]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 detach_data_disks: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureDetachDataDiskArgs']]]] = None,
                 extensions: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureExtensionArgs']]]] = None,
                 health: Optional[pulumi.Input['StatefulNodeAzureHealthArgs']] = None,
                 image: Optional[pulumi.Input['StatefulNodeAzureImageArgs']] = None,
                 import_vms: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureImportVmArgs']]]] = None,
                 license_type: Optional[pulumi.Input[str]] = None,
                 load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureLoadBalancerArgs']]]] = None,
                 login: Optional[pulumi.Input['StatefulNodeAzureLoginArgs']] = None,
                 managed_service_identities: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureManagedServiceIdentityArgs']]]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network: Optional[pulumi.Input['StatefulNodeAzureNetworkArgs']] = None,
                 os_disk: Optional[pulumi.Input['StatefulNodeAzureOsDiskArgs']] = None,
                 os_disk_persistence_mode: Optional[pulumi.Input[str]] = None,
                 preferred_zone: Optional[pulumi.Input[str]] = None,
                 proximity_placement_groups: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureProximityPlacementGroupArgs']]]] = None,
                 scheduling_tasks: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureSchedulingTaskArgs']]]] = None,
                 secrets: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureSecretArgs']]]] = None,
                 security: Optional[pulumi.Input['StatefulNodeAzureSecurityArgs']] = None,
                 should_persist_vm: Optional[pulumi.Input[bool]] = None,
                 shutdown_script: Optional[pulumi.Input[str]] = None,
                 signals: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureSignalArgs']]]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureTagArgs']]]] = None,
                 update_states: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureUpdateStateArgs']]]] = None,
                 user_data: Optional[pulumi.Input[str]] = None,
                 vm_name: Optional[pulumi.Input[str]] = None,
                 vm_name_prefix: Optional[pulumi.Input[str]] = None,
                 zones: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        The set of arguments for constructing a StatefulNodeAzure resource.
        """
        pulumi.set(__self__, "os", os)
        pulumi.set(__self__, "region", region)
        pulumi.set(__self__, "resource_group_name", resource_group_name)
        pulumi.set(__self__, "should_persist_data_disks", should_persist_data_disks)
        pulumi.set(__self__, "should_persist_network", should_persist_network)
        pulumi.set(__self__, "should_persist_os_disk", should_persist_os_disk)
        pulumi.set(__self__, "strategy", strategy)
        pulumi.set(__self__, "vm_sizes", vm_sizes)
        if attach_data_disks is not None:
            pulumi.set(__self__, "attach_data_disks", attach_data_disks)
        if boot_diagnostics is not None:
            pulumi.set(__self__, "boot_diagnostics", boot_diagnostics)
        if custom_data is not None:
            pulumi.set(__self__, "custom_data", custom_data)
        if data_disks is not None:
            pulumi.set(__self__, "data_disks", data_disks)
        if data_disks_persistence_mode is not None:
            pulumi.set(__self__, "data_disks_persistence_mode", data_disks_persistence_mode)
        if deletes is not None:
            pulumi.set(__self__, "deletes", deletes)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if detach_data_disks is not None:
            pulumi.set(__self__, "detach_data_disks", detach_data_disks)
        if extensions is not None:
            pulumi.set(__self__, "extensions", extensions)
        if health is not None:
            pulumi.set(__self__, "health", health)
        if image is not None:
            pulumi.set(__self__, "image", image)
        if import_vms is not None:
            pulumi.set(__self__, "import_vms", import_vms)
        if license_type is not None:
            pulumi.set(__self__, "license_type", license_type)
        if load_balancers is not None:
            pulumi.set(__self__, "load_balancers", load_balancers)
        if login is not None:
            pulumi.set(__self__, "login", login)
        if managed_service_identities is not None:
            pulumi.set(__self__, "managed_service_identities", managed_service_identities)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if network is not None:
            pulumi.set(__self__, "network", network)
        if os_disk is not None:
            pulumi.set(__self__, "os_disk", os_disk)
        if os_disk_persistence_mode is not None:
            pulumi.set(__self__, "os_disk_persistence_mode", os_disk_persistence_mode)
        if preferred_zone is not None:
            pulumi.set(__self__, "preferred_zone", preferred_zone)
        if proximity_placement_groups is not None:
            pulumi.set(__self__, "proximity_placement_groups", proximity_placement_groups)
        if scheduling_tasks is not None:
            pulumi.set(__self__, "scheduling_tasks", scheduling_tasks)
        if secrets is not None:
            pulumi.set(__self__, "secrets", secrets)
        if security is not None:
            pulumi.set(__self__, "security", security)
        if should_persist_vm is not None:
            pulumi.set(__self__, "should_persist_vm", should_persist_vm)
        if shutdown_script is not None:
            pulumi.set(__self__, "shutdown_script", shutdown_script)
        if signals is not None:
            pulumi.set(__self__, "signals", signals)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if update_states is not None:
            pulumi.set(__self__, "update_states", update_states)
        if user_data is not None:
            pulumi.set(__self__, "user_data", user_data)
        if vm_name is not None:
            pulumi.set(__self__, "vm_name", vm_name)
        if vm_name_prefix is not None:
            pulumi.set(__self__, "vm_name_prefix", vm_name_prefix)
        if zones is not None:
            pulumi.set(__self__, "zones", zones)

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

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

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

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

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

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

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

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

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

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

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

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

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

    @strategy.setter
    def strategy(self, value: pulumi.Input['StatefulNodeAzureStrategyArgs']):
        pulumi.set(self, "strategy", value)

    @property
    @pulumi.getter(name="vmSizes")
    def vm_sizes(self) -> pulumi.Input['StatefulNodeAzureVmSizesArgs']:
        return pulumi.get(self, "vm_sizes")

    @vm_sizes.setter
    def vm_sizes(self, value: pulumi.Input['StatefulNodeAzureVmSizesArgs']):
        pulumi.set(self, "vm_sizes", value)

    @property
    @pulumi.getter(name="attachDataDisks")
    def attach_data_disks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureAttachDataDiskArgs']]]]:
        return pulumi.get(self, "attach_data_disks")

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

    @property
    @pulumi.getter(name="bootDiagnostics")
    def boot_diagnostics(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureBootDiagnosticArgs']]]]:
        return pulumi.get(self, "boot_diagnostics")

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

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

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

    @property
    @pulumi.getter(name="dataDisks")
    def data_disks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureDataDiskArgs']]]]:
        return pulumi.get(self, "data_disks")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="detachDataDisks")
    def detach_data_disks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureDetachDataDiskArgs']]]]:
        return pulumi.get(self, "detach_data_disks")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="importVms")
    def import_vms(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureImportVmArgs']]]]:
        return pulumi.get(self, "import_vms")

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

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

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

    @property
    @pulumi.getter(name="loadBalancers")
    def load_balancers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureLoadBalancerArgs']]]]:
        return pulumi.get(self, "load_balancers")

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

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

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

    @property
    @pulumi.getter(name="managedServiceIdentities")
    def managed_service_identities(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureManagedServiceIdentityArgs']]]]:
        return pulumi.get(self, "managed_service_identities")

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

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

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

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

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

    @property
    @pulumi.getter(name="osDisk")
    def os_disk(self) -> Optional[pulumi.Input['StatefulNodeAzureOsDiskArgs']]:
        return pulumi.get(self, "os_disk")

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

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

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

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

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

    @property
    @pulumi.getter(name="proximityPlacementGroups")
    def proximity_placement_groups(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureProximityPlacementGroupArgs']]]]:
        return pulumi.get(self, "proximity_placement_groups")

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

    @property
    @pulumi.getter(name="schedulingTasks")
    def scheduling_tasks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureSchedulingTaskArgs']]]]:
        return pulumi.get(self, "scheduling_tasks")

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="updateStates")
    def update_states(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureUpdateStateArgs']]]]:
        return pulumi.get(self, "update_states")

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

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

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

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

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

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

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

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

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


@pulumi.input_type
class _StatefulNodeAzureState:
    def __init__(__self__, *,
                 attach_data_disks: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureAttachDataDiskArgs']]]] = None,
                 boot_diagnostics: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureBootDiagnosticArgs']]]] = None,
                 custom_data: Optional[pulumi.Input[str]] = None,
                 data_disks: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureDataDiskArgs']]]] = None,
                 data_disks_persistence_mode: Optional[pulumi.Input[str]] = None,
                 deletes: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureDeleteArgs']]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 detach_data_disks: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureDetachDataDiskArgs']]]] = None,
                 extensions: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureExtensionArgs']]]] = None,
                 health: Optional[pulumi.Input['StatefulNodeAzureHealthArgs']] = None,
                 image: Optional[pulumi.Input['StatefulNodeAzureImageArgs']] = None,
                 import_vms: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureImportVmArgs']]]] = None,
                 license_type: Optional[pulumi.Input[str]] = None,
                 load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureLoadBalancerArgs']]]] = None,
                 login: Optional[pulumi.Input['StatefulNodeAzureLoginArgs']] = None,
                 managed_service_identities: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureManagedServiceIdentityArgs']]]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network: Optional[pulumi.Input['StatefulNodeAzureNetworkArgs']] = None,
                 os: Optional[pulumi.Input[str]] = None,
                 os_disk: Optional[pulumi.Input['StatefulNodeAzureOsDiskArgs']] = None,
                 os_disk_persistence_mode: Optional[pulumi.Input[str]] = None,
                 preferred_zone: Optional[pulumi.Input[str]] = None,
                 proximity_placement_groups: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureProximityPlacementGroupArgs']]]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 resource_group_name: Optional[pulumi.Input[str]] = None,
                 scheduling_tasks: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureSchedulingTaskArgs']]]] = None,
                 secrets: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureSecretArgs']]]] = None,
                 security: Optional[pulumi.Input['StatefulNodeAzureSecurityArgs']] = None,
                 should_persist_data_disks: Optional[pulumi.Input[bool]] = None,
                 should_persist_network: Optional[pulumi.Input[bool]] = None,
                 should_persist_os_disk: Optional[pulumi.Input[bool]] = None,
                 should_persist_vm: Optional[pulumi.Input[bool]] = None,
                 shutdown_script: Optional[pulumi.Input[str]] = None,
                 signals: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureSignalArgs']]]] = None,
                 strategy: Optional[pulumi.Input['StatefulNodeAzureStrategyArgs']] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureTagArgs']]]] = None,
                 update_states: Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureUpdateStateArgs']]]] = None,
                 user_data: Optional[pulumi.Input[str]] = None,
                 vm_name: Optional[pulumi.Input[str]] = None,
                 vm_name_prefix: Optional[pulumi.Input[str]] = None,
                 vm_sizes: Optional[pulumi.Input['StatefulNodeAzureVmSizesArgs']] = None,
                 zones: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
        """
        Input properties used for looking up and filtering StatefulNodeAzure resources.
        """
        if attach_data_disks is not None:
            pulumi.set(__self__, "attach_data_disks", attach_data_disks)
        if boot_diagnostics is not None:
            pulumi.set(__self__, "boot_diagnostics", boot_diagnostics)
        if custom_data is not None:
            pulumi.set(__self__, "custom_data", custom_data)
        if data_disks is not None:
            pulumi.set(__self__, "data_disks", data_disks)
        if data_disks_persistence_mode is not None:
            pulumi.set(__self__, "data_disks_persistence_mode", data_disks_persistence_mode)
        if deletes is not None:
            pulumi.set(__self__, "deletes", deletes)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if detach_data_disks is not None:
            pulumi.set(__self__, "detach_data_disks", detach_data_disks)
        if extensions is not None:
            pulumi.set(__self__, "extensions", extensions)
        if health is not None:
            pulumi.set(__self__, "health", health)
        if image is not None:
            pulumi.set(__self__, "image", image)
        if import_vms is not None:
            pulumi.set(__self__, "import_vms", import_vms)
        if license_type is not None:
            pulumi.set(__self__, "license_type", license_type)
        if load_balancers is not None:
            pulumi.set(__self__, "load_balancers", load_balancers)
        if login is not None:
            pulumi.set(__self__, "login", login)
        if managed_service_identities is not None:
            pulumi.set(__self__, "managed_service_identities", managed_service_identities)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if network is not None:
            pulumi.set(__self__, "network", network)
        if os is not None:
            pulumi.set(__self__, "os", os)
        if os_disk is not None:
            pulumi.set(__self__, "os_disk", os_disk)
        if os_disk_persistence_mode is not None:
            pulumi.set(__self__, "os_disk_persistence_mode", os_disk_persistence_mode)
        if preferred_zone is not None:
            pulumi.set(__self__, "preferred_zone", preferred_zone)
        if proximity_placement_groups is not None:
            pulumi.set(__self__, "proximity_placement_groups", proximity_placement_groups)
        if region is not None:
            pulumi.set(__self__, "region", region)
        if resource_group_name is not None:
            pulumi.set(__self__, "resource_group_name", resource_group_name)
        if scheduling_tasks is not None:
            pulumi.set(__self__, "scheduling_tasks", scheduling_tasks)
        if secrets is not None:
            pulumi.set(__self__, "secrets", secrets)
        if security is not None:
            pulumi.set(__self__, "security", security)
        if should_persist_data_disks is not None:
            pulumi.set(__self__, "should_persist_data_disks", should_persist_data_disks)
        if should_persist_network is not None:
            pulumi.set(__self__, "should_persist_network", should_persist_network)
        if should_persist_os_disk is not None:
            pulumi.set(__self__, "should_persist_os_disk", should_persist_os_disk)
        if should_persist_vm is not None:
            pulumi.set(__self__, "should_persist_vm", should_persist_vm)
        if shutdown_script is not None:
            pulumi.set(__self__, "shutdown_script", shutdown_script)
        if signals is not None:
            pulumi.set(__self__, "signals", signals)
        if strategy is not None:
            pulumi.set(__self__, "strategy", strategy)
        if tags is not None:
            pulumi.set(__self__, "tags", tags)
        if update_states is not None:
            pulumi.set(__self__, "update_states", update_states)
        if user_data is not None:
            pulumi.set(__self__, "user_data", user_data)
        if vm_name is not None:
            pulumi.set(__self__, "vm_name", vm_name)
        if vm_name_prefix is not None:
            pulumi.set(__self__, "vm_name_prefix", vm_name_prefix)
        if vm_sizes is not None:
            pulumi.set(__self__, "vm_sizes", vm_sizes)
        if zones is not None:
            pulumi.set(__self__, "zones", zones)

    @property
    @pulumi.getter(name="attachDataDisks")
    def attach_data_disks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureAttachDataDiskArgs']]]]:
        return pulumi.get(self, "attach_data_disks")

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

    @property
    @pulumi.getter(name="bootDiagnostics")
    def boot_diagnostics(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureBootDiagnosticArgs']]]]:
        return pulumi.get(self, "boot_diagnostics")

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

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

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

    @property
    @pulumi.getter(name="dataDisks")
    def data_disks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureDataDiskArgs']]]]:
        return pulumi.get(self, "data_disks")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="detachDataDisks")
    def detach_data_disks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureDetachDataDiskArgs']]]]:
        return pulumi.get(self, "detach_data_disks")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="importVms")
    def import_vms(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureImportVmArgs']]]]:
        return pulumi.get(self, "import_vms")

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

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

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

    @property
    @pulumi.getter(name="loadBalancers")
    def load_balancers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureLoadBalancerArgs']]]]:
        return pulumi.get(self, "load_balancers")

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

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

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

    @property
    @pulumi.getter(name="managedServiceIdentities")
    def managed_service_identities(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureManagedServiceIdentityArgs']]]]:
        return pulumi.get(self, "managed_service_identities")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="osDisk")
    def os_disk(self) -> Optional[pulumi.Input['StatefulNodeAzureOsDiskArgs']]:
        return pulumi.get(self, "os_disk")

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

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

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

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

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

    @property
    @pulumi.getter(name="proximityPlacementGroups")
    def proximity_placement_groups(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureProximityPlacementGroupArgs']]]]:
        return pulumi.get(self, "proximity_placement_groups")

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

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

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

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

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

    @property
    @pulumi.getter(name="schedulingTasks")
    def scheduling_tasks(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureSchedulingTaskArgs']]]]:
        return pulumi.get(self, "scheduling_tasks")

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="updateStates")
    def update_states(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['StatefulNodeAzureUpdateStateArgs']]]]:
        return pulumi.get(self, "update_states")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="vmSizes")
    def vm_sizes(self) -> Optional[pulumi.Input['StatefulNodeAzureVmSizesArgs']]:
        return pulumi.get(self, "vm_sizes")

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

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

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


class StatefulNodeAzure(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 attach_data_disks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureAttachDataDiskArgs', 'StatefulNodeAzureAttachDataDiskArgsDict']]]]] = None,
                 boot_diagnostics: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureBootDiagnosticArgs', 'StatefulNodeAzureBootDiagnosticArgsDict']]]]] = None,
                 custom_data: Optional[pulumi.Input[str]] = None,
                 data_disks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureDataDiskArgs', 'StatefulNodeAzureDataDiskArgsDict']]]]] = None,
                 data_disks_persistence_mode: Optional[pulumi.Input[str]] = None,
                 deletes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureDeleteArgs', 'StatefulNodeAzureDeleteArgsDict']]]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 detach_data_disks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureDetachDataDiskArgs', 'StatefulNodeAzureDetachDataDiskArgsDict']]]]] = None,
                 extensions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureExtensionArgs', 'StatefulNodeAzureExtensionArgsDict']]]]] = None,
                 health: Optional[pulumi.Input[Union['StatefulNodeAzureHealthArgs', 'StatefulNodeAzureHealthArgsDict']]] = None,
                 image: Optional[pulumi.Input[Union['StatefulNodeAzureImageArgs', 'StatefulNodeAzureImageArgsDict']]] = None,
                 import_vms: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureImportVmArgs', 'StatefulNodeAzureImportVmArgsDict']]]]] = None,
                 license_type: Optional[pulumi.Input[str]] = None,
                 load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureLoadBalancerArgs', 'StatefulNodeAzureLoadBalancerArgsDict']]]]] = None,
                 login: Optional[pulumi.Input[Union['StatefulNodeAzureLoginArgs', 'StatefulNodeAzureLoginArgsDict']]] = None,
                 managed_service_identities: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureManagedServiceIdentityArgs', 'StatefulNodeAzureManagedServiceIdentityArgsDict']]]]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network: Optional[pulumi.Input[Union['StatefulNodeAzureNetworkArgs', 'StatefulNodeAzureNetworkArgsDict']]] = None,
                 os: Optional[pulumi.Input[str]] = None,
                 os_disk: Optional[pulumi.Input[Union['StatefulNodeAzureOsDiskArgs', 'StatefulNodeAzureOsDiskArgsDict']]] = None,
                 os_disk_persistence_mode: Optional[pulumi.Input[str]] = None,
                 preferred_zone: Optional[pulumi.Input[str]] = None,
                 proximity_placement_groups: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureProximityPlacementGroupArgs', 'StatefulNodeAzureProximityPlacementGroupArgsDict']]]]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 resource_group_name: Optional[pulumi.Input[str]] = None,
                 scheduling_tasks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureSchedulingTaskArgs', 'StatefulNodeAzureSchedulingTaskArgsDict']]]]] = None,
                 secrets: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureSecretArgs', 'StatefulNodeAzureSecretArgsDict']]]]] = None,
                 security: Optional[pulumi.Input[Union['StatefulNodeAzureSecurityArgs', 'StatefulNodeAzureSecurityArgsDict']]] = None,
                 should_persist_data_disks: Optional[pulumi.Input[bool]] = None,
                 should_persist_network: Optional[pulumi.Input[bool]] = None,
                 should_persist_os_disk: Optional[pulumi.Input[bool]] = None,
                 should_persist_vm: Optional[pulumi.Input[bool]] = None,
                 shutdown_script: Optional[pulumi.Input[str]] = None,
                 signals: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureSignalArgs', 'StatefulNodeAzureSignalArgsDict']]]]] = None,
                 strategy: Optional[pulumi.Input[Union['StatefulNodeAzureStrategyArgs', 'StatefulNodeAzureStrategyArgsDict']]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureTagArgs', 'StatefulNodeAzureTagArgsDict']]]]] = None,
                 update_states: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureUpdateStateArgs', 'StatefulNodeAzureUpdateStateArgsDict']]]]] = None,
                 user_data: Optional[pulumi.Input[str]] = None,
                 vm_name: Optional[pulumi.Input[str]] = None,
                 vm_name_prefix: Optional[pulumi.Input[str]] = None,
                 vm_sizes: Optional[pulumi.Input[Union['StatefulNodeAzureVmSizesArgs', 'StatefulNodeAzureVmSizesArgsDict']]] = None,
                 zones: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 __props__=None):
        """
        Provides a Spotinst stateful node Azure resource.

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: StatefulNodeAzureArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Provides a Spotinst stateful node Azure resource.

        :param str resource_name: The name of the resource.
        :param StatefulNodeAzureArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(StatefulNodeAzureArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 attach_data_disks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureAttachDataDiskArgs', 'StatefulNodeAzureAttachDataDiskArgsDict']]]]] = None,
                 boot_diagnostics: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureBootDiagnosticArgs', 'StatefulNodeAzureBootDiagnosticArgsDict']]]]] = None,
                 custom_data: Optional[pulumi.Input[str]] = None,
                 data_disks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureDataDiskArgs', 'StatefulNodeAzureDataDiskArgsDict']]]]] = None,
                 data_disks_persistence_mode: Optional[pulumi.Input[str]] = None,
                 deletes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureDeleteArgs', 'StatefulNodeAzureDeleteArgsDict']]]]] = None,
                 description: Optional[pulumi.Input[str]] = None,
                 detach_data_disks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureDetachDataDiskArgs', 'StatefulNodeAzureDetachDataDiskArgsDict']]]]] = None,
                 extensions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureExtensionArgs', 'StatefulNodeAzureExtensionArgsDict']]]]] = None,
                 health: Optional[pulumi.Input[Union['StatefulNodeAzureHealthArgs', 'StatefulNodeAzureHealthArgsDict']]] = None,
                 image: Optional[pulumi.Input[Union['StatefulNodeAzureImageArgs', 'StatefulNodeAzureImageArgsDict']]] = None,
                 import_vms: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureImportVmArgs', 'StatefulNodeAzureImportVmArgsDict']]]]] = None,
                 license_type: Optional[pulumi.Input[str]] = None,
                 load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureLoadBalancerArgs', 'StatefulNodeAzureLoadBalancerArgsDict']]]]] = None,
                 login: Optional[pulumi.Input[Union['StatefulNodeAzureLoginArgs', 'StatefulNodeAzureLoginArgsDict']]] = None,
                 managed_service_identities: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureManagedServiceIdentityArgs', 'StatefulNodeAzureManagedServiceIdentityArgsDict']]]]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network: Optional[pulumi.Input[Union['StatefulNodeAzureNetworkArgs', 'StatefulNodeAzureNetworkArgsDict']]] = None,
                 os: Optional[pulumi.Input[str]] = None,
                 os_disk: Optional[pulumi.Input[Union['StatefulNodeAzureOsDiskArgs', 'StatefulNodeAzureOsDiskArgsDict']]] = None,
                 os_disk_persistence_mode: Optional[pulumi.Input[str]] = None,
                 preferred_zone: Optional[pulumi.Input[str]] = None,
                 proximity_placement_groups: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureProximityPlacementGroupArgs', 'StatefulNodeAzureProximityPlacementGroupArgsDict']]]]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 resource_group_name: Optional[pulumi.Input[str]] = None,
                 scheduling_tasks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureSchedulingTaskArgs', 'StatefulNodeAzureSchedulingTaskArgsDict']]]]] = None,
                 secrets: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureSecretArgs', 'StatefulNodeAzureSecretArgsDict']]]]] = None,
                 security: Optional[pulumi.Input[Union['StatefulNodeAzureSecurityArgs', 'StatefulNodeAzureSecurityArgsDict']]] = None,
                 should_persist_data_disks: Optional[pulumi.Input[bool]] = None,
                 should_persist_network: Optional[pulumi.Input[bool]] = None,
                 should_persist_os_disk: Optional[pulumi.Input[bool]] = None,
                 should_persist_vm: Optional[pulumi.Input[bool]] = None,
                 shutdown_script: Optional[pulumi.Input[str]] = None,
                 signals: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureSignalArgs', 'StatefulNodeAzureSignalArgsDict']]]]] = None,
                 strategy: Optional[pulumi.Input[Union['StatefulNodeAzureStrategyArgs', 'StatefulNodeAzureStrategyArgsDict']]] = None,
                 tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureTagArgs', 'StatefulNodeAzureTagArgsDict']]]]] = None,
                 update_states: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureUpdateStateArgs', 'StatefulNodeAzureUpdateStateArgsDict']]]]] = None,
                 user_data: Optional[pulumi.Input[str]] = None,
                 vm_name: Optional[pulumi.Input[str]] = None,
                 vm_name_prefix: Optional[pulumi.Input[str]] = None,
                 vm_sizes: Optional[pulumi.Input[Union['StatefulNodeAzureVmSizesArgs', 'StatefulNodeAzureVmSizesArgsDict']]] = None,
                 zones: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = StatefulNodeAzureArgs.__new__(StatefulNodeAzureArgs)

            __props__.__dict__["attach_data_disks"] = attach_data_disks
            __props__.__dict__["boot_diagnostics"] = boot_diagnostics
            __props__.__dict__["custom_data"] = custom_data
            __props__.__dict__["data_disks"] = data_disks
            __props__.__dict__["data_disks_persistence_mode"] = data_disks_persistence_mode
            __props__.__dict__["deletes"] = deletes
            __props__.__dict__["description"] = description
            __props__.__dict__["detach_data_disks"] = detach_data_disks
            __props__.__dict__["extensions"] = extensions
            __props__.__dict__["health"] = health
            __props__.__dict__["image"] = image
            __props__.__dict__["import_vms"] = import_vms
            __props__.__dict__["license_type"] = license_type
            __props__.__dict__["load_balancers"] = load_balancers
            __props__.__dict__["login"] = login
            __props__.__dict__["managed_service_identities"] = managed_service_identities
            __props__.__dict__["name"] = name
            __props__.__dict__["network"] = network
            if os is None and not opts.urn:
                raise TypeError("Missing required property 'os'")
            __props__.__dict__["os"] = os
            __props__.__dict__["os_disk"] = os_disk
            __props__.__dict__["os_disk_persistence_mode"] = os_disk_persistence_mode
            __props__.__dict__["preferred_zone"] = preferred_zone
            __props__.__dict__["proximity_placement_groups"] = proximity_placement_groups
            if region is None and not opts.urn:
                raise TypeError("Missing required property 'region'")
            __props__.__dict__["region"] = region
            if resource_group_name is None and not opts.urn:
                raise TypeError("Missing required property 'resource_group_name'")
            __props__.__dict__["resource_group_name"] = resource_group_name
            __props__.__dict__["scheduling_tasks"] = scheduling_tasks
            __props__.__dict__["secrets"] = secrets
            __props__.__dict__["security"] = security
            if should_persist_data_disks is None and not opts.urn:
                raise TypeError("Missing required property 'should_persist_data_disks'")
            __props__.__dict__["should_persist_data_disks"] = should_persist_data_disks
            if should_persist_network is None and not opts.urn:
                raise TypeError("Missing required property 'should_persist_network'")
            __props__.__dict__["should_persist_network"] = should_persist_network
            if should_persist_os_disk is None and not opts.urn:
                raise TypeError("Missing required property 'should_persist_os_disk'")
            __props__.__dict__["should_persist_os_disk"] = should_persist_os_disk
            __props__.__dict__["should_persist_vm"] = should_persist_vm
            __props__.__dict__["shutdown_script"] = shutdown_script
            __props__.__dict__["signals"] = signals
            if strategy is None and not opts.urn:
                raise TypeError("Missing required property 'strategy'")
            __props__.__dict__["strategy"] = strategy
            __props__.__dict__["tags"] = tags
            __props__.__dict__["update_states"] = update_states
            __props__.__dict__["user_data"] = user_data
            __props__.__dict__["vm_name"] = vm_name
            __props__.__dict__["vm_name_prefix"] = vm_name_prefix
            if vm_sizes is None and not opts.urn:
                raise TypeError("Missing required property 'vm_sizes'")
            __props__.__dict__["vm_sizes"] = vm_sizes
            __props__.__dict__["zones"] = zones
        super(StatefulNodeAzure, __self__).__init__(
            'spotinst:index/statefulNodeAzure:StatefulNodeAzure',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            attach_data_disks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureAttachDataDiskArgs', 'StatefulNodeAzureAttachDataDiskArgsDict']]]]] = None,
            boot_diagnostics: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureBootDiagnosticArgs', 'StatefulNodeAzureBootDiagnosticArgsDict']]]]] = None,
            custom_data: Optional[pulumi.Input[str]] = None,
            data_disks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureDataDiskArgs', 'StatefulNodeAzureDataDiskArgsDict']]]]] = None,
            data_disks_persistence_mode: Optional[pulumi.Input[str]] = None,
            deletes: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureDeleteArgs', 'StatefulNodeAzureDeleteArgsDict']]]]] = None,
            description: Optional[pulumi.Input[str]] = None,
            detach_data_disks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureDetachDataDiskArgs', 'StatefulNodeAzureDetachDataDiskArgsDict']]]]] = None,
            extensions: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureExtensionArgs', 'StatefulNodeAzureExtensionArgsDict']]]]] = None,
            health: Optional[pulumi.Input[Union['StatefulNodeAzureHealthArgs', 'StatefulNodeAzureHealthArgsDict']]] = None,
            image: Optional[pulumi.Input[Union['StatefulNodeAzureImageArgs', 'StatefulNodeAzureImageArgsDict']]] = None,
            import_vms: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureImportVmArgs', 'StatefulNodeAzureImportVmArgsDict']]]]] = None,
            license_type: Optional[pulumi.Input[str]] = None,
            load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureLoadBalancerArgs', 'StatefulNodeAzureLoadBalancerArgsDict']]]]] = None,
            login: Optional[pulumi.Input[Union['StatefulNodeAzureLoginArgs', 'StatefulNodeAzureLoginArgsDict']]] = None,
            managed_service_identities: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureManagedServiceIdentityArgs', 'StatefulNodeAzureManagedServiceIdentityArgsDict']]]]] = None,
            name: Optional[pulumi.Input[str]] = None,
            network: Optional[pulumi.Input[Union['StatefulNodeAzureNetworkArgs', 'StatefulNodeAzureNetworkArgsDict']]] = None,
            os: Optional[pulumi.Input[str]] = None,
            os_disk: Optional[pulumi.Input[Union['StatefulNodeAzureOsDiskArgs', 'StatefulNodeAzureOsDiskArgsDict']]] = None,
            os_disk_persistence_mode: Optional[pulumi.Input[str]] = None,
            preferred_zone: Optional[pulumi.Input[str]] = None,
            proximity_placement_groups: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureProximityPlacementGroupArgs', 'StatefulNodeAzureProximityPlacementGroupArgsDict']]]]] = None,
            region: Optional[pulumi.Input[str]] = None,
            resource_group_name: Optional[pulumi.Input[str]] = None,
            scheduling_tasks: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureSchedulingTaskArgs', 'StatefulNodeAzureSchedulingTaskArgsDict']]]]] = None,
            secrets: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureSecretArgs', 'StatefulNodeAzureSecretArgsDict']]]]] = None,
            security: Optional[pulumi.Input[Union['StatefulNodeAzureSecurityArgs', 'StatefulNodeAzureSecurityArgsDict']]] = None,
            should_persist_data_disks: Optional[pulumi.Input[bool]] = None,
            should_persist_network: Optional[pulumi.Input[bool]] = None,
            should_persist_os_disk: Optional[pulumi.Input[bool]] = None,
            should_persist_vm: Optional[pulumi.Input[bool]] = None,
            shutdown_script: Optional[pulumi.Input[str]] = None,
            signals: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureSignalArgs', 'StatefulNodeAzureSignalArgsDict']]]]] = None,
            strategy: Optional[pulumi.Input[Union['StatefulNodeAzureStrategyArgs', 'StatefulNodeAzureStrategyArgsDict']]] = None,
            tags: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureTagArgs', 'StatefulNodeAzureTagArgsDict']]]]] = None,
            update_states: Optional[pulumi.Input[Sequence[pulumi.Input[Union['StatefulNodeAzureUpdateStateArgs', 'StatefulNodeAzureUpdateStateArgsDict']]]]] = None,
            user_data: Optional[pulumi.Input[str]] = None,
            vm_name: Optional[pulumi.Input[str]] = None,
            vm_name_prefix: Optional[pulumi.Input[str]] = None,
            vm_sizes: Optional[pulumi.Input[Union['StatefulNodeAzureVmSizesArgs', 'StatefulNodeAzureVmSizesArgsDict']]] = None,
            zones: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None) -> 'StatefulNodeAzure':
        """
        Get an existing StatefulNodeAzure resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _StatefulNodeAzureState.__new__(_StatefulNodeAzureState)

        __props__.__dict__["attach_data_disks"] = attach_data_disks
        __props__.__dict__["boot_diagnostics"] = boot_diagnostics
        __props__.__dict__["custom_data"] = custom_data
        __props__.__dict__["data_disks"] = data_disks
        __props__.__dict__["data_disks_persistence_mode"] = data_disks_persistence_mode
        __props__.__dict__["deletes"] = deletes
        __props__.__dict__["description"] = description
        __props__.__dict__["detach_data_disks"] = detach_data_disks
        __props__.__dict__["extensions"] = extensions
        __props__.__dict__["health"] = health
        __props__.__dict__["image"] = image
        __props__.__dict__["import_vms"] = import_vms
        __props__.__dict__["license_type"] = license_type
        __props__.__dict__["load_balancers"] = load_balancers
        __props__.__dict__["login"] = login
        __props__.__dict__["managed_service_identities"] = managed_service_identities
        __props__.__dict__["name"] = name
        __props__.__dict__["network"] = network
        __props__.__dict__["os"] = os
        __props__.__dict__["os_disk"] = os_disk
        __props__.__dict__["os_disk_persistence_mode"] = os_disk_persistence_mode
        __props__.__dict__["preferred_zone"] = preferred_zone
        __props__.__dict__["proximity_placement_groups"] = proximity_placement_groups
        __props__.__dict__["region"] = region
        __props__.__dict__["resource_group_name"] = resource_group_name
        __props__.__dict__["scheduling_tasks"] = scheduling_tasks
        __props__.__dict__["secrets"] = secrets
        __props__.__dict__["security"] = security
        __props__.__dict__["should_persist_data_disks"] = should_persist_data_disks
        __props__.__dict__["should_persist_network"] = should_persist_network
        __props__.__dict__["should_persist_os_disk"] = should_persist_os_disk
        __props__.__dict__["should_persist_vm"] = should_persist_vm
        __props__.__dict__["shutdown_script"] = shutdown_script
        __props__.__dict__["signals"] = signals
        __props__.__dict__["strategy"] = strategy
        __props__.__dict__["tags"] = tags
        __props__.__dict__["update_states"] = update_states
        __props__.__dict__["user_data"] = user_data
        __props__.__dict__["vm_name"] = vm_name
        __props__.__dict__["vm_name_prefix"] = vm_name_prefix
        __props__.__dict__["vm_sizes"] = vm_sizes
        __props__.__dict__["zones"] = zones
        return StatefulNodeAzure(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="attachDataDisks")
    def attach_data_disks(self) -> pulumi.Output[Optional[Sequence['outputs.StatefulNodeAzureAttachDataDisk']]]:
        return pulumi.get(self, "attach_data_disks")

    @property
    @pulumi.getter(name="bootDiagnostics")
    def boot_diagnostics(self) -> pulumi.Output[Sequence['outputs.StatefulNodeAzureBootDiagnostic']]:
        return pulumi.get(self, "boot_diagnostics")

    @property
    @pulumi.getter(name="customData")
    def custom_data(self) -> pulumi.Output[str]:
        return pulumi.get(self, "custom_data")

    @property
    @pulumi.getter(name="dataDisks")
    def data_disks(self) -> pulumi.Output[Optional[Sequence['outputs.StatefulNodeAzureDataDisk']]]:
        return pulumi.get(self, "data_disks")

    @property
    @pulumi.getter(name="dataDisksPersistenceMode")
    def data_disks_persistence_mode(self) -> pulumi.Output[str]:
        return pulumi.get(self, "data_disks_persistence_mode")

    @property
    @pulumi.getter
    def deletes(self) -> pulumi.Output[Optional[Sequence['outputs.StatefulNodeAzureDelete']]]:
        return pulumi.get(self, "deletes")

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

    @property
    @pulumi.getter(name="detachDataDisks")
    def detach_data_disks(self) -> pulumi.Output[Optional[Sequence['outputs.StatefulNodeAzureDetachDataDisk']]]:
        return pulumi.get(self, "detach_data_disks")

    @property
    @pulumi.getter
    def extensions(self) -> pulumi.Output[Sequence['outputs.StatefulNodeAzureExtension']]:
        return pulumi.get(self, "extensions")

    @property
    @pulumi.getter
    def health(self) -> pulumi.Output['outputs.StatefulNodeAzureHealth']:
        return pulumi.get(self, "health")

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

    @property
    @pulumi.getter(name="importVms")
    def import_vms(self) -> pulumi.Output[Optional[Sequence['outputs.StatefulNodeAzureImportVm']]]:
        return pulumi.get(self, "import_vms")

    @property
    @pulumi.getter(name="licenseType")
    def license_type(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "license_type")

    @property
    @pulumi.getter(name="loadBalancers")
    def load_balancers(self) -> pulumi.Output[Sequence['outputs.StatefulNodeAzureLoadBalancer']]:
        return pulumi.get(self, "load_balancers")

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

    @property
    @pulumi.getter(name="managedServiceIdentities")
    def managed_service_identities(self) -> pulumi.Output[Sequence['outputs.StatefulNodeAzureManagedServiceIdentity']]:
        return pulumi.get(self, "managed_service_identities")

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

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

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

    @property
    @pulumi.getter(name="osDisk")
    def os_disk(self) -> pulumi.Output[Optional['outputs.StatefulNodeAzureOsDisk']]:
        return pulumi.get(self, "os_disk")

    @property
    @pulumi.getter(name="osDiskPersistenceMode")
    def os_disk_persistence_mode(self) -> pulumi.Output[str]:
        return pulumi.get(self, "os_disk_persistence_mode")

    @property
    @pulumi.getter(name="preferredZone")
    def preferred_zone(self) -> pulumi.Output[str]:
        return pulumi.get(self, "preferred_zone")

    @property
    @pulumi.getter(name="proximityPlacementGroups")
    def proximity_placement_groups(self) -> pulumi.Output[Sequence['outputs.StatefulNodeAzureProximityPlacementGroup']]:
        return pulumi.get(self, "proximity_placement_groups")

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

    @property
    @pulumi.getter(name="resourceGroupName")
    def resource_group_name(self) -> pulumi.Output[str]:
        return pulumi.get(self, "resource_group_name")

    @property
    @pulumi.getter(name="schedulingTasks")
    def scheduling_tasks(self) -> pulumi.Output[Sequence['outputs.StatefulNodeAzureSchedulingTask']]:
        return pulumi.get(self, "scheduling_tasks")

    @property
    @pulumi.getter
    def secrets(self) -> pulumi.Output[Optional[Sequence['outputs.StatefulNodeAzureSecret']]]:
        return pulumi.get(self, "secrets")

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

    @property
    @pulumi.getter(name="shouldPersistDataDisks")
    def should_persist_data_disks(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "should_persist_data_disks")

    @property
    @pulumi.getter(name="shouldPersistNetwork")
    def should_persist_network(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "should_persist_network")

    @property
    @pulumi.getter(name="shouldPersistOsDisk")
    def should_persist_os_disk(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "should_persist_os_disk")

    @property
    @pulumi.getter(name="shouldPersistVm")
    def should_persist_vm(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "should_persist_vm")

    @property
    @pulumi.getter(name="shutdownScript")
    def shutdown_script(self) -> pulumi.Output[str]:
        return pulumi.get(self, "shutdown_script")

    @property
    @pulumi.getter
    def signals(self) -> pulumi.Output[Sequence['outputs.StatefulNodeAzureSignal']]:
        return pulumi.get(self, "signals")

    @property
    @pulumi.getter
    def strategy(self) -> pulumi.Output['outputs.StatefulNodeAzureStrategy']:
        return pulumi.get(self, "strategy")

    @property
    @pulumi.getter
    def tags(self) -> pulumi.Output[Sequence['outputs.StatefulNodeAzureTag']]:
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="updateStates")
    def update_states(self) -> pulumi.Output[Optional[Sequence['outputs.StatefulNodeAzureUpdateState']]]:
        return pulumi.get(self, "update_states")

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

    @property
    @pulumi.getter(name="vmName")
    def vm_name(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "vm_name")

    @property
    @pulumi.getter(name="vmNamePrefix")
    def vm_name_prefix(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "vm_name_prefix")

    @property
    @pulumi.getter(name="vmSizes")
    def vm_sizes(self) -> pulumi.Output['outputs.StatefulNodeAzureVmSizes']:
        return pulumi.get(self, "vm_sizes")

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

