# 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__ = ['ElastigroupArgs', 'Elastigroup']

@pulumi.input_type
class ElastigroupArgs:
    def __init__(__self__, *,
                 low_priority_sizes: pulumi.Input[Sequence[pulumi.Input[str]]],
                 network: pulumi.Input['ElastigroupNetworkArgs'],
                 od_sizes: pulumi.Input[Sequence[pulumi.Input[str]]],
                 product: pulumi.Input[str],
                 region: pulumi.Input[str],
                 resource_group_name: pulumi.Input[str],
                 strategy: pulumi.Input['ElastigroupStrategyArgs'],
                 custom_data: Optional[pulumi.Input[str]] = None,
                 desired_capacity: Optional[pulumi.Input[int]] = None,
                 health_check: Optional[pulumi.Input['ElastigroupHealthCheckArgs']] = None,
                 images: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupImageArgs']]]] = None,
                 integration_kubernetes: Optional[pulumi.Input['ElastigroupIntegrationKubernetesArgs']] = None,
                 integration_multai_runtime: Optional[pulumi.Input['ElastigroupIntegrationMultaiRuntimeArgs']] = None,
                 load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupLoadBalancerArgs']]]] = None,
                 login: Optional[pulumi.Input['ElastigroupLoginArgs']] = None,
                 managed_service_identities: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupManagedServiceIdentityArgs']]]] = None,
                 max_size: Optional[pulumi.Input[int]] = None,
                 min_size: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 scaling_down_policies: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupScalingDownPolicyArgs']]]] = None,
                 scaling_up_policies: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupScalingUpPolicyArgs']]]] = None,
                 scheduled_tasks: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupScheduledTaskArgs']]]] = None,
                 shutdown_script: Optional[pulumi.Input[str]] = None,
                 update_policy: Optional[pulumi.Input['ElastigroupUpdatePolicyArgs']] = None,
                 user_data: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a Elastigroup resource.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] od_sizes: Available On-Demand sizes
        :param pulumi.Input[str] region: The region your Azure group will be created in.
        :param pulumi.Input[str] resource_group_name: Name of the Azure Resource Group where the Managed Service Identity is located.
        :param pulumi.Input[str] custom_data: Custom init script file or text in Base64 encoded format.
        :param pulumi.Input[int] desired_capacity: The desired number of instances the group should have at any time.
        :param pulumi.Input[int] max_size: The maximum number of instances the group should have at any time.
        :param pulumi.Input[int] min_size: The minimum number of instances the group should have at any time.
        :param pulumi.Input[str] name: Name of the Managed Service Identity.
        """
        pulumi.set(__self__, "low_priority_sizes", low_priority_sizes)
        pulumi.set(__self__, "network", network)
        pulumi.set(__self__, "od_sizes", od_sizes)
        pulumi.set(__self__, "product", product)
        pulumi.set(__self__, "region", region)
        pulumi.set(__self__, "resource_group_name", resource_group_name)
        pulumi.set(__self__, "strategy", strategy)
        if custom_data is not None:
            pulumi.set(__self__, "custom_data", custom_data)
        if desired_capacity is not None:
            pulumi.set(__self__, "desired_capacity", desired_capacity)
        if health_check is not None:
            pulumi.set(__self__, "health_check", health_check)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if integration_kubernetes is not None:
            pulumi.set(__self__, "integration_kubernetes", integration_kubernetes)
        if integration_multai_runtime is not None:
            pulumi.set(__self__, "integration_multai_runtime", integration_multai_runtime)
        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 max_size is not None:
            pulumi.set(__self__, "max_size", max_size)
        if min_size is not None:
            pulumi.set(__self__, "min_size", min_size)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if scaling_down_policies is not None:
            pulumi.set(__self__, "scaling_down_policies", scaling_down_policies)
        if scaling_up_policies is not None:
            pulumi.set(__self__, "scaling_up_policies", scaling_up_policies)
        if scheduled_tasks is not None:
            pulumi.set(__self__, "scheduled_tasks", scheduled_tasks)
        if shutdown_script is not None:
            pulumi.set(__self__, "shutdown_script", shutdown_script)
        if update_policy is not None:
            pulumi.set(__self__, "update_policy", update_policy)
        if user_data is not None:
            pulumi.set(__self__, "user_data", user_data)

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

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

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

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

    @property
    @pulumi.getter(name="odSizes")
    def od_sizes(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        """
        Available On-Demand sizes
        """
        return pulumi.get(self, "od_sizes")

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

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

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

    @property
    @pulumi.getter
    def region(self) -> pulumi.Input[str]:
        """
        The region your Azure group will be created in.
        """
        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]:
        """
        Name of the Azure Resource Group where the Managed Service Identity is located.
        """
        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
    def strategy(self) -> pulumi.Input['ElastigroupStrategyArgs']:
        return pulumi.get(self, "strategy")

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

    @property
    @pulumi.getter(name="customData")
    def custom_data(self) -> Optional[pulumi.Input[str]]:
        """
        Custom init script file or text in Base64 encoded format.
        """
        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="desiredCapacity")
    def desired_capacity(self) -> Optional[pulumi.Input[int]]:
        """
        The desired number of instances the group should have at any time.
        """
        return pulumi.get(self, "desired_capacity")

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

    @property
    @pulumi.getter(name="healthCheck")
    def health_check(self) -> Optional[pulumi.Input['ElastigroupHealthCheckArgs']]:
        return pulumi.get(self, "health_check")

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

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

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

    @property
    @pulumi.getter(name="integrationKubernetes")
    def integration_kubernetes(self) -> Optional[pulumi.Input['ElastigroupIntegrationKubernetesArgs']]:
        return pulumi.get(self, "integration_kubernetes")

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

    @property
    @pulumi.getter(name="integrationMultaiRuntime")
    def integration_multai_runtime(self) -> Optional[pulumi.Input['ElastigroupIntegrationMultaiRuntimeArgs']]:
        return pulumi.get(self, "integration_multai_runtime")

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> Optional[pulumi.Input[int]]:
        """
        The maximum number of instances the group should have at any time.
        """
        return pulumi.get(self, "max_size")

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

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> Optional[pulumi.Input[int]]:
        """
        The minimum number of instances the group should have at any time.
        """
        return pulumi.get(self, "min_size")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Name of the Managed Service Identity.
        """
        return pulumi.get(self, "name")

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

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

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

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

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

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

    @scheduled_tasks.setter
    def scheduled_tasks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupScheduledTaskArgs']]]]):
        pulumi.set(self, "scheduled_tasks", 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(name="updatePolicy")
    def update_policy(self) -> Optional[pulumi.Input['ElastigroupUpdatePolicyArgs']]:
        return pulumi.get(self, "update_policy")

    @update_policy.setter
    def update_policy(self, value: Optional[pulumi.Input['ElastigroupUpdatePolicyArgs']]):
        pulumi.set(self, "update_policy", 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)


@pulumi.input_type
class _ElastigroupState:
    def __init__(__self__, *,
                 custom_data: Optional[pulumi.Input[str]] = None,
                 desired_capacity: Optional[pulumi.Input[int]] = None,
                 health_check: Optional[pulumi.Input['ElastigroupHealthCheckArgs']] = None,
                 images: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupImageArgs']]]] = None,
                 integration_kubernetes: Optional[pulumi.Input['ElastigroupIntegrationKubernetesArgs']] = None,
                 integration_multai_runtime: Optional[pulumi.Input['ElastigroupIntegrationMultaiRuntimeArgs']] = None,
                 load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupLoadBalancerArgs']]]] = None,
                 login: Optional[pulumi.Input['ElastigroupLoginArgs']] = None,
                 low_priority_sizes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 managed_service_identities: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupManagedServiceIdentityArgs']]]] = None,
                 max_size: Optional[pulumi.Input[int]] = None,
                 min_size: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network: Optional[pulumi.Input['ElastigroupNetworkArgs']] = None,
                 od_sizes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 product: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 resource_group_name: Optional[pulumi.Input[str]] = None,
                 scaling_down_policies: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupScalingDownPolicyArgs']]]] = None,
                 scaling_up_policies: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupScalingUpPolicyArgs']]]] = None,
                 scheduled_tasks: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupScheduledTaskArgs']]]] = None,
                 shutdown_script: Optional[pulumi.Input[str]] = None,
                 strategy: Optional[pulumi.Input['ElastigroupStrategyArgs']] = None,
                 update_policy: Optional[pulumi.Input['ElastigroupUpdatePolicyArgs']] = None,
                 user_data: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering Elastigroup resources.
        :param pulumi.Input[str] custom_data: Custom init script file or text in Base64 encoded format.
        :param pulumi.Input[int] desired_capacity: The desired number of instances the group should have at any time.
        :param pulumi.Input[int] max_size: The maximum number of instances the group should have at any time.
        :param pulumi.Input[int] min_size: The minimum number of instances the group should have at any time.
        :param pulumi.Input[str] name: Name of the Managed Service Identity.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] od_sizes: Available On-Demand sizes
        :param pulumi.Input[str] region: The region your Azure group will be created in.
        :param pulumi.Input[str] resource_group_name: Name of the Azure Resource Group where the Managed Service Identity is located.
        """
        if custom_data is not None:
            pulumi.set(__self__, "custom_data", custom_data)
        if desired_capacity is not None:
            pulumi.set(__self__, "desired_capacity", desired_capacity)
        if health_check is not None:
            pulumi.set(__self__, "health_check", health_check)
        if images is not None:
            pulumi.set(__self__, "images", images)
        if integration_kubernetes is not None:
            pulumi.set(__self__, "integration_kubernetes", integration_kubernetes)
        if integration_multai_runtime is not None:
            pulumi.set(__self__, "integration_multai_runtime", integration_multai_runtime)
        if load_balancers is not None:
            pulumi.set(__self__, "load_balancers", load_balancers)
        if login is not None:
            pulumi.set(__self__, "login", login)
        if low_priority_sizes is not None:
            pulumi.set(__self__, "low_priority_sizes", low_priority_sizes)
        if managed_service_identities is not None:
            pulumi.set(__self__, "managed_service_identities", managed_service_identities)
        if max_size is not None:
            pulumi.set(__self__, "max_size", max_size)
        if min_size is not None:
            pulumi.set(__self__, "min_size", min_size)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if network is not None:
            pulumi.set(__self__, "network", network)
        if od_sizes is not None:
            pulumi.set(__self__, "od_sizes", od_sizes)
        if product is not None:
            pulumi.set(__self__, "product", product)
        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 scaling_down_policies is not None:
            pulumi.set(__self__, "scaling_down_policies", scaling_down_policies)
        if scaling_up_policies is not None:
            pulumi.set(__self__, "scaling_up_policies", scaling_up_policies)
        if scheduled_tasks is not None:
            pulumi.set(__self__, "scheduled_tasks", scheduled_tasks)
        if shutdown_script is not None:
            pulumi.set(__self__, "shutdown_script", shutdown_script)
        if strategy is not None:
            pulumi.set(__self__, "strategy", strategy)
        if update_policy is not None:
            pulumi.set(__self__, "update_policy", update_policy)
        if user_data is not None:
            pulumi.set(__self__, "user_data", user_data)

    @property
    @pulumi.getter(name="customData")
    def custom_data(self) -> Optional[pulumi.Input[str]]:
        """
        Custom init script file or text in Base64 encoded format.
        """
        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="desiredCapacity")
    def desired_capacity(self) -> Optional[pulumi.Input[int]]:
        """
        The desired number of instances the group should have at any time.
        """
        return pulumi.get(self, "desired_capacity")

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

    @property
    @pulumi.getter(name="healthCheck")
    def health_check(self) -> Optional[pulumi.Input['ElastigroupHealthCheckArgs']]:
        return pulumi.get(self, "health_check")

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

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

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

    @property
    @pulumi.getter(name="integrationKubernetes")
    def integration_kubernetes(self) -> Optional[pulumi.Input['ElastigroupIntegrationKubernetesArgs']]:
        return pulumi.get(self, "integration_kubernetes")

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

    @property
    @pulumi.getter(name="integrationMultaiRuntime")
    def integration_multai_runtime(self) -> Optional[pulumi.Input['ElastigroupIntegrationMultaiRuntimeArgs']]:
        return pulumi.get(self, "integration_multai_runtime")

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

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> Optional[pulumi.Input[int]]:
        """
        The maximum number of instances the group should have at any time.
        """
        return pulumi.get(self, "max_size")

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

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> Optional[pulumi.Input[int]]:
        """
        The minimum number of instances the group should have at any time.
        """
        return pulumi.get(self, "min_size")

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

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        """
        Name of the Managed Service Identity.
        """
        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['ElastigroupNetworkArgs']]:
        return pulumi.get(self, "network")

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

    @property
    @pulumi.getter(name="odSizes")
    def od_sizes(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        """
        Available On-Demand sizes
        """
        return pulumi.get(self, "od_sizes")

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

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

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

    @property
    @pulumi.getter
    def region(self) -> Optional[pulumi.Input[str]]:
        """
        The region your Azure group will be created in.
        """
        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]]:
        """
        Name of the Azure Resource Group where the Managed Service Identity is located.
        """
        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="scalingDownPolicies")
    def scaling_down_policies(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupScalingDownPolicyArgs']]]]:
        return pulumi.get(self, "scaling_down_policies")

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

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

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

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

    @scheduled_tasks.setter
    def scheduled_tasks(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ElastigroupScheduledTaskArgs']]]]):
        pulumi.set(self, "scheduled_tasks", 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 strategy(self) -> Optional[pulumi.Input['ElastigroupStrategyArgs']]:
        return pulumi.get(self, "strategy")

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

    @property
    @pulumi.getter(name="updatePolicy")
    def update_policy(self) -> Optional[pulumi.Input['ElastigroupUpdatePolicyArgs']]:
        return pulumi.get(self, "update_policy")

    @update_policy.setter
    def update_policy(self, value: Optional[pulumi.Input['ElastigroupUpdatePolicyArgs']]):
        pulumi.set(self, "update_policy", 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)


class Elastigroup(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 custom_data: Optional[pulumi.Input[str]] = None,
                 desired_capacity: Optional[pulumi.Input[int]] = None,
                 health_check: Optional[pulumi.Input[pulumi.InputType['ElastigroupHealthCheckArgs']]] = None,
                 images: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupImageArgs']]]]] = None,
                 integration_kubernetes: Optional[pulumi.Input[pulumi.InputType['ElastigroupIntegrationKubernetesArgs']]] = None,
                 integration_multai_runtime: Optional[pulumi.Input[pulumi.InputType['ElastigroupIntegrationMultaiRuntimeArgs']]] = None,
                 load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupLoadBalancerArgs']]]]] = None,
                 login: Optional[pulumi.Input[pulumi.InputType['ElastigroupLoginArgs']]] = None,
                 low_priority_sizes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 managed_service_identities: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupManagedServiceIdentityArgs']]]]] = None,
                 max_size: Optional[pulumi.Input[int]] = None,
                 min_size: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network: Optional[pulumi.Input[pulumi.InputType['ElastigroupNetworkArgs']]] = None,
                 od_sizes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 product: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 resource_group_name: Optional[pulumi.Input[str]] = None,
                 scaling_down_policies: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupScalingDownPolicyArgs']]]]] = None,
                 scaling_up_policies: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupScalingUpPolicyArgs']]]]] = None,
                 scheduled_tasks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupScheduledTaskArgs']]]]] = None,
                 shutdown_script: Optional[pulumi.Input[str]] = None,
                 strategy: Optional[pulumi.Input[pulumi.InputType['ElastigroupStrategyArgs']]] = None,
                 update_policy: Optional[pulumi.Input[pulumi.InputType['ElastigroupUpdatePolicyArgs']]] = None,
                 user_data: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        Provides a Spotinst elastigroup Azure resource.

        ## Strategy

        * `spot_percentage` - (Optional) Percentage of Spot-VMs to maintain. Required if `on_demand_count` is not specified.
        * `on_demand_count` - (Optional) Number of On-Demand VMs to maintain. Required if `spot_percentage` is not specified.
        * `fallback_to_on_demand` -
        * `draining_timeout` - (Optional, Default `120`) Time (seconds) to allow the instance to be drained from incoming TCP connections and detached from MLB before terminating it during a scale-down operation.

        <a id="image"></a>
        ## Image

        * `image` - (Required) Image of a VM. An image is a template for creating new VMs. Choose from Azure image catalogue (marketplace) or use a custom image.
            * `publisher` - (Optional) Image publisher. Required if resource_group_name is not specified.
            * `offer` - (Optional) Name of the image to use. Required if publisher is specified.
            * `sku` - (Optional) Image's Stock Keeping Unit, which is the specific version of the image. Required if publisher is specified.
            * `version` -
            * `resource_group_name` - (Optional) Name of Resource Group for custom image. Required if publisher not specified.
            * `image_name` - (Optional) Name of the custom image. Required if resource_group_name is specified.

        ```python
        import pulumi
        ```

        <a id="network"></a>
        ## Network

        * `network` - (Required) Defines the Virtual Network and Subnet for your Elastigroup.
            * `virtual_network_name` - (Required) Name of Vnet.
            * `resource_group_name` - (Required) Vnet Resource Group Name.
            * `network_interfaces` -
                * `subnet_name` - (Required) ID of subnet.
                * `assign_public_up` - (Optional, Default: `false`) Assign a public IP to each VM in the Elastigroup.
                * `is_primary` -
                * `additional_ip_configs` - (Optional) Array of additional IP configuration objects.
                    * `name` - (Required) The IP configuration name.
                    * `private_ip_version` - (Optional) Available from Azure Api-Version 2017-03-30 onwards, it represents whether the specific ip configuration is IPv4 or IPv6. Valid values: `IPv4`, `IPv6`.
                * `application_security_group` - (Optional) - List of Application Security Groups that will be associated to the primary ip configuration of the network interface.
                    * `name` - (Required) - The name of the Application Security group.
                    * `resource_group_name` - (Required) - The resource group of the Application Security Group.
                      }
        ```python
        import pulumi
        ```

        ### Login

        * `login` - (Required) Describes the login configuration.
            * `user_name` - (Required) Set admin access for accessing your VMs.
            * `ssh_public_key` - (Optional) SSH for admin access to Linux VMs. Required for Linux OS types.
            * `password` - (Optional) Password for admin access to Windows VMs. Required for Windows OS types.

        ```python
        import pulumi
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[str] custom_data: Custom init script file or text in Base64 encoded format.
        :param pulumi.Input[int] desired_capacity: The desired number of instances the group should have at any time.
        :param pulumi.Input[int] max_size: The maximum number of instances the group should have at any time.
        :param pulumi.Input[int] min_size: The minimum number of instances the group should have at any time.
        :param pulumi.Input[str] name: Name of the Managed Service Identity.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] od_sizes: Available On-Demand sizes
        :param pulumi.Input[str] region: The region your Azure group will be created in.
        :param pulumi.Input[str] resource_group_name: Name of the Azure Resource Group where the Managed Service Identity is located.
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: ElastigroupArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Provides a Spotinst elastigroup Azure resource.

        ## Strategy

        * `spot_percentage` - (Optional) Percentage of Spot-VMs to maintain. Required if `on_demand_count` is not specified.
        * `on_demand_count` - (Optional) Number of On-Demand VMs to maintain. Required if `spot_percentage` is not specified.
        * `fallback_to_on_demand` -
        * `draining_timeout` - (Optional, Default `120`) Time (seconds) to allow the instance to be drained from incoming TCP connections and detached from MLB before terminating it during a scale-down operation.

        <a id="image"></a>
        ## Image

        * `image` - (Required) Image of a VM. An image is a template for creating new VMs. Choose from Azure image catalogue (marketplace) or use a custom image.
            * `publisher` - (Optional) Image publisher. Required if resource_group_name is not specified.
            * `offer` - (Optional) Name of the image to use. Required if publisher is specified.
            * `sku` - (Optional) Image's Stock Keeping Unit, which is the specific version of the image. Required if publisher is specified.
            * `version` -
            * `resource_group_name` - (Optional) Name of Resource Group for custom image. Required if publisher not specified.
            * `image_name` - (Optional) Name of the custom image. Required if resource_group_name is specified.

        ```python
        import pulumi
        ```

        <a id="network"></a>
        ## Network

        * `network` - (Required) Defines the Virtual Network and Subnet for your Elastigroup.
            * `virtual_network_name` - (Required) Name of Vnet.
            * `resource_group_name` - (Required) Vnet Resource Group Name.
            * `network_interfaces` -
                * `subnet_name` - (Required) ID of subnet.
                * `assign_public_up` - (Optional, Default: `false`) Assign a public IP to each VM in the Elastigroup.
                * `is_primary` -
                * `additional_ip_configs` - (Optional) Array of additional IP configuration objects.
                    * `name` - (Required) The IP configuration name.
                    * `private_ip_version` - (Optional) Available from Azure Api-Version 2017-03-30 onwards, it represents whether the specific ip configuration is IPv4 or IPv6. Valid values: `IPv4`, `IPv6`.
                * `application_security_group` - (Optional) - List of Application Security Groups that will be associated to the primary ip configuration of the network interface.
                    * `name` - (Required) - The name of the Application Security group.
                    * `resource_group_name` - (Required) - The resource group of the Application Security Group.
                      }
        ```python
        import pulumi
        ```

        ### Login

        * `login` - (Required) Describes the login configuration.
            * `user_name` - (Required) Set admin access for accessing your VMs.
            * `ssh_public_key` - (Optional) SSH for admin access to Linux VMs. Required for Linux OS types.
            * `password` - (Optional) Password for admin access to Windows VMs. Required for Windows OS types.

        ```python
        import pulumi
        ```

        :param str resource_name: The name of the resource.
        :param ElastigroupArgs 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(ElastigroupArgs, 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,
                 custom_data: Optional[pulumi.Input[str]] = None,
                 desired_capacity: Optional[pulumi.Input[int]] = None,
                 health_check: Optional[pulumi.Input[pulumi.InputType['ElastigroupHealthCheckArgs']]] = None,
                 images: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupImageArgs']]]]] = None,
                 integration_kubernetes: Optional[pulumi.Input[pulumi.InputType['ElastigroupIntegrationKubernetesArgs']]] = None,
                 integration_multai_runtime: Optional[pulumi.Input[pulumi.InputType['ElastigroupIntegrationMultaiRuntimeArgs']]] = None,
                 load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupLoadBalancerArgs']]]]] = None,
                 login: Optional[pulumi.Input[pulumi.InputType['ElastigroupLoginArgs']]] = None,
                 low_priority_sizes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 managed_service_identities: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupManagedServiceIdentityArgs']]]]] = None,
                 max_size: Optional[pulumi.Input[int]] = None,
                 min_size: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 network: Optional[pulumi.Input[pulumi.InputType['ElastigroupNetworkArgs']]] = None,
                 od_sizes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 product: Optional[pulumi.Input[str]] = None,
                 region: Optional[pulumi.Input[str]] = None,
                 resource_group_name: Optional[pulumi.Input[str]] = None,
                 scaling_down_policies: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupScalingDownPolicyArgs']]]]] = None,
                 scaling_up_policies: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupScalingUpPolicyArgs']]]]] = None,
                 scheduled_tasks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupScheduledTaskArgs']]]]] = None,
                 shutdown_script: Optional[pulumi.Input[str]] = None,
                 strategy: Optional[pulumi.Input[pulumi.InputType['ElastigroupStrategyArgs']]] = None,
                 update_policy: Optional[pulumi.Input[pulumi.InputType['ElastigroupUpdatePolicyArgs']]] = None,
                 user_data: Optional[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__ = ElastigroupArgs.__new__(ElastigroupArgs)

            __props__.__dict__["custom_data"] = custom_data
            __props__.__dict__["desired_capacity"] = desired_capacity
            __props__.__dict__["health_check"] = health_check
            __props__.__dict__["images"] = images
            __props__.__dict__["integration_kubernetes"] = integration_kubernetes
            __props__.__dict__["integration_multai_runtime"] = integration_multai_runtime
            __props__.__dict__["load_balancers"] = load_balancers
            __props__.__dict__["login"] = login
            if low_priority_sizes is None and not opts.urn:
                raise TypeError("Missing required property 'low_priority_sizes'")
            __props__.__dict__["low_priority_sizes"] = low_priority_sizes
            __props__.__dict__["managed_service_identities"] = managed_service_identities
            __props__.__dict__["max_size"] = max_size
            __props__.__dict__["min_size"] = min_size
            __props__.__dict__["name"] = name
            if network is None and not opts.urn:
                raise TypeError("Missing required property 'network'")
            __props__.__dict__["network"] = network
            if od_sizes is None and not opts.urn:
                raise TypeError("Missing required property 'od_sizes'")
            __props__.__dict__["od_sizes"] = od_sizes
            if product is None and not opts.urn:
                raise TypeError("Missing required property 'product'")
            __props__.__dict__["product"] = product
            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__["scaling_down_policies"] = scaling_down_policies
            __props__.__dict__["scaling_up_policies"] = scaling_up_policies
            __props__.__dict__["scheduled_tasks"] = scheduled_tasks
            __props__.__dict__["shutdown_script"] = shutdown_script
            if strategy is None and not opts.urn:
                raise TypeError("Missing required property 'strategy'")
            __props__.__dict__["strategy"] = strategy
            __props__.__dict__["update_policy"] = update_policy
            __props__.__dict__["user_data"] = user_data
        super(Elastigroup, __self__).__init__(
            'spotinst:azure/elastigroup:Elastigroup',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            custom_data: Optional[pulumi.Input[str]] = None,
            desired_capacity: Optional[pulumi.Input[int]] = None,
            health_check: Optional[pulumi.Input[pulumi.InputType['ElastigroupHealthCheckArgs']]] = None,
            images: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupImageArgs']]]]] = None,
            integration_kubernetes: Optional[pulumi.Input[pulumi.InputType['ElastigroupIntegrationKubernetesArgs']]] = None,
            integration_multai_runtime: Optional[pulumi.Input[pulumi.InputType['ElastigroupIntegrationMultaiRuntimeArgs']]] = None,
            load_balancers: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupLoadBalancerArgs']]]]] = None,
            login: Optional[pulumi.Input[pulumi.InputType['ElastigroupLoginArgs']]] = None,
            low_priority_sizes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            managed_service_identities: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupManagedServiceIdentityArgs']]]]] = None,
            max_size: Optional[pulumi.Input[int]] = None,
            min_size: Optional[pulumi.Input[int]] = None,
            name: Optional[pulumi.Input[str]] = None,
            network: Optional[pulumi.Input[pulumi.InputType['ElastigroupNetworkArgs']]] = None,
            od_sizes: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            product: Optional[pulumi.Input[str]] = None,
            region: Optional[pulumi.Input[str]] = None,
            resource_group_name: Optional[pulumi.Input[str]] = None,
            scaling_down_policies: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupScalingDownPolicyArgs']]]]] = None,
            scaling_up_policies: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupScalingUpPolicyArgs']]]]] = None,
            scheduled_tasks: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ElastigroupScheduledTaskArgs']]]]] = None,
            shutdown_script: Optional[pulumi.Input[str]] = None,
            strategy: Optional[pulumi.Input[pulumi.InputType['ElastigroupStrategyArgs']]] = None,
            update_policy: Optional[pulumi.Input[pulumi.InputType['ElastigroupUpdatePolicyArgs']]] = None,
            user_data: Optional[pulumi.Input[str]] = None) -> 'Elastigroup':
        """
        Get an existing Elastigroup 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.
        :param pulumi.Input[str] custom_data: Custom init script file or text in Base64 encoded format.
        :param pulumi.Input[int] desired_capacity: The desired number of instances the group should have at any time.
        :param pulumi.Input[int] max_size: The maximum number of instances the group should have at any time.
        :param pulumi.Input[int] min_size: The minimum number of instances the group should have at any time.
        :param pulumi.Input[str] name: Name of the Managed Service Identity.
        :param pulumi.Input[Sequence[pulumi.Input[str]]] od_sizes: Available On-Demand sizes
        :param pulumi.Input[str] region: The region your Azure group will be created in.
        :param pulumi.Input[str] resource_group_name: Name of the Azure Resource Group where the Managed Service Identity is located.
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _ElastigroupState.__new__(_ElastigroupState)

        __props__.__dict__["custom_data"] = custom_data
        __props__.__dict__["desired_capacity"] = desired_capacity
        __props__.__dict__["health_check"] = health_check
        __props__.__dict__["images"] = images
        __props__.__dict__["integration_kubernetes"] = integration_kubernetes
        __props__.__dict__["integration_multai_runtime"] = integration_multai_runtime
        __props__.__dict__["load_balancers"] = load_balancers
        __props__.__dict__["login"] = login
        __props__.__dict__["low_priority_sizes"] = low_priority_sizes
        __props__.__dict__["managed_service_identities"] = managed_service_identities
        __props__.__dict__["max_size"] = max_size
        __props__.__dict__["min_size"] = min_size
        __props__.__dict__["name"] = name
        __props__.__dict__["network"] = network
        __props__.__dict__["od_sizes"] = od_sizes
        __props__.__dict__["product"] = product
        __props__.__dict__["region"] = region
        __props__.__dict__["resource_group_name"] = resource_group_name
        __props__.__dict__["scaling_down_policies"] = scaling_down_policies
        __props__.__dict__["scaling_up_policies"] = scaling_up_policies
        __props__.__dict__["scheduled_tasks"] = scheduled_tasks
        __props__.__dict__["shutdown_script"] = shutdown_script
        __props__.__dict__["strategy"] = strategy
        __props__.__dict__["update_policy"] = update_policy
        __props__.__dict__["user_data"] = user_data
        return Elastigroup(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="customData")
    def custom_data(self) -> pulumi.Output[Optional[str]]:
        """
        Custom init script file or text in Base64 encoded format.
        """
        return pulumi.get(self, "custom_data")

    @property
    @pulumi.getter(name="desiredCapacity")
    def desired_capacity(self) -> pulumi.Output[Optional[int]]:
        """
        The desired number of instances the group should have at any time.
        """
        return pulumi.get(self, "desired_capacity")

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

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

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

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

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

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

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

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

    @property
    @pulumi.getter(name="maxSize")
    def max_size(self) -> pulumi.Output[int]:
        """
        The maximum number of instances the group should have at any time.
        """
        return pulumi.get(self, "max_size")

    @property
    @pulumi.getter(name="minSize")
    def min_size(self) -> pulumi.Output[int]:
        """
        The minimum number of instances the group should have at any time.
        """
        return pulumi.get(self, "min_size")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        """
        Name of the Managed Service Identity.
        """
        return pulumi.get(self, "name")

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

    @property
    @pulumi.getter(name="odSizes")
    def od_sizes(self) -> pulumi.Output[Sequence[str]]:
        """
        Available On-Demand sizes
        """
        return pulumi.get(self, "od_sizes")

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

    @property
    @pulumi.getter
    def region(self) -> pulumi.Output[str]:
        """
        The region your Azure group will be created in.
        """
        return pulumi.get(self, "region")

    @property
    @pulumi.getter(name="resourceGroupName")
    def resource_group_name(self) -> pulumi.Output[str]:
        """
        Name of the Azure Resource Group where the Managed Service Identity is located.
        """
        return pulumi.get(self, "resource_group_name")

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

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

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

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

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

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

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

