# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from . import _utilities

__all__ = ['GtmDatacenterArgs', 'GtmDatacenter']

@pulumi.input_type
class GtmDatacenterArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[_builtins.str],
                 contact: Optional[pulumi.Input[_builtins.str]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 location: Optional[pulumi.Input[_builtins.str]] = None,
                 partition: Optional[pulumi.Input[_builtins.str]] = None,
                 prober_fallback: Optional[pulumi.Input[_builtins.str]] = None,
                 prober_preference: Optional[pulumi.Input[_builtins.str]] = None):
        """
        The set of arguments for constructing a GtmDatacenter resource.

        :param pulumi.Input[_builtins.str] name: Name of the GTM datacenter. Cannot be changed after creation.
        :param pulumi.Input[_builtins.str] contact: Contact information for the datacenter administrator.
        :param pulumi.Input[_builtins.str] description: Description of the datacenter.
        :param pulumi.Input[_builtins.bool] enabled: Enable or disable the datacenter. Default is `true`. When set to `false`, the datacenter is disabled and will not be used for load balancing decisions.
        :param pulumi.Input[_builtins.str] location: Physical location of the datacenter. This is a free-form text field.
        :param pulumi.Input[_builtins.str] partition: Partition in which to create the datacenter. Default is `Common`. Cannot be changed after creation.
        :param pulumi.Input[_builtins.str] prober_fallback: Specifies the type of prober to use as fallback when the preferred prober is unavailable. Default is `any-available`. Valid options are:
               - `any-available` - Use any available prober
               - `inside-datacenter` - Fallback to probers inside this datacenter
               - `outside-datacenter` - Fallback to probers outside this datacenter
        :param pulumi.Input[_builtins.str] prober_preference: Specifies the type of prober to prefer when monitoring resources in this datacenter. Default is `inside-datacenter`. Valid options are:
               - `inside-datacenter` - Prefer probers inside this datacenter
               - `outside-datacenter` - Prefer probers outside this datacenter
        """
        pulumi.set(__self__, "name", name)
        if contact is not None:
            pulumi.set(__self__, "contact", contact)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if location is not None:
            pulumi.set(__self__, "location", location)
        if partition is not None:
            pulumi.set(__self__, "partition", partition)
        if prober_fallback is not None:
            pulumi.set(__self__, "prober_fallback", prober_fallback)
        if prober_preference is not None:
            pulumi.set(__self__, "prober_preference", prober_preference)

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Input[_builtins.str]:
        """
        Name of the GTM datacenter. Cannot be changed after creation.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter
    def contact(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Contact information for the datacenter administrator.
        """
        return pulumi.get(self, "contact")

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

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

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

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Enable or disable the datacenter. Default is `true`. When set to `false`, the datacenter is disabled and will not be used for load balancing decisions.
        """
        return pulumi.get(self, "enabled")

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

    @_builtins.property
    @pulumi.getter
    def location(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Physical location of the datacenter. This is a free-form text field.
        """
        return pulumi.get(self, "location")

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

    @_builtins.property
    @pulumi.getter
    def partition(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Partition in which to create the datacenter. Default is `Common`. Cannot be changed after creation.
        """
        return pulumi.get(self, "partition")

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

    @_builtins.property
    @pulumi.getter(name="proberFallback")
    def prober_fallback(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the type of prober to use as fallback when the preferred prober is unavailable. Default is `any-available`. Valid options are:
        - `any-available` - Use any available prober
        - `inside-datacenter` - Fallback to probers inside this datacenter
        - `outside-datacenter` - Fallback to probers outside this datacenter
        """
        return pulumi.get(self, "prober_fallback")

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

    @_builtins.property
    @pulumi.getter(name="proberPreference")
    def prober_preference(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the type of prober to prefer when monitoring resources in this datacenter. Default is `inside-datacenter`. Valid options are:
        - `inside-datacenter` - Prefer probers inside this datacenter
        - `outside-datacenter` - Prefer probers outside this datacenter
        """
        return pulumi.get(self, "prober_preference")

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


@pulumi.input_type
class _GtmDatacenterState:
    def __init__(__self__, *,
                 contact: Optional[pulumi.Input[_builtins.str]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 location: Optional[pulumi.Input[_builtins.str]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 partition: Optional[pulumi.Input[_builtins.str]] = None,
                 prober_fallback: Optional[pulumi.Input[_builtins.str]] = None,
                 prober_preference: Optional[pulumi.Input[_builtins.str]] = None):
        """
        Input properties used for looking up and filtering GtmDatacenter resources.

        :param pulumi.Input[_builtins.str] contact: Contact information for the datacenter administrator.
        :param pulumi.Input[_builtins.str] description: Description of the datacenter.
        :param pulumi.Input[_builtins.bool] enabled: Enable or disable the datacenter. Default is `true`. When set to `false`, the datacenter is disabled and will not be used for load balancing decisions.
        :param pulumi.Input[_builtins.str] location: Physical location of the datacenter. This is a free-form text field.
        :param pulumi.Input[_builtins.str] name: Name of the GTM datacenter. Cannot be changed after creation.
        :param pulumi.Input[_builtins.str] partition: Partition in which to create the datacenter. Default is `Common`. Cannot be changed after creation.
        :param pulumi.Input[_builtins.str] prober_fallback: Specifies the type of prober to use as fallback when the preferred prober is unavailable. Default is `any-available`. Valid options are:
               - `any-available` - Use any available prober
               - `inside-datacenter` - Fallback to probers inside this datacenter
               - `outside-datacenter` - Fallback to probers outside this datacenter
        :param pulumi.Input[_builtins.str] prober_preference: Specifies the type of prober to prefer when monitoring resources in this datacenter. Default is `inside-datacenter`. Valid options are:
               - `inside-datacenter` - Prefer probers inside this datacenter
               - `outside-datacenter` - Prefer probers outside this datacenter
        """
        if contact is not None:
            pulumi.set(__self__, "contact", contact)
        if description is not None:
            pulumi.set(__self__, "description", description)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if location is not None:
            pulumi.set(__self__, "location", location)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if partition is not None:
            pulumi.set(__self__, "partition", partition)
        if prober_fallback is not None:
            pulumi.set(__self__, "prober_fallback", prober_fallback)
        if prober_preference is not None:
            pulumi.set(__self__, "prober_preference", prober_preference)

    @_builtins.property
    @pulumi.getter
    def contact(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Contact information for the datacenter administrator.
        """
        return pulumi.get(self, "contact")

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

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

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

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Enable or disable the datacenter. Default is `true`. When set to `false`, the datacenter is disabled and will not be used for load balancing decisions.
        """
        return pulumi.get(self, "enabled")

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

    @_builtins.property
    @pulumi.getter
    def location(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Physical location of the datacenter. This is a free-form text field.
        """
        return pulumi.get(self, "location")

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

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Name of the GTM datacenter. Cannot be changed after creation.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter
    def partition(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Partition in which to create the datacenter. Default is `Common`. Cannot be changed after creation.
        """
        return pulumi.get(self, "partition")

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

    @_builtins.property
    @pulumi.getter(name="proberFallback")
    def prober_fallback(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the type of prober to use as fallback when the preferred prober is unavailable. Default is `any-available`. Valid options are:
        - `any-available` - Use any available prober
        - `inside-datacenter` - Fallback to probers inside this datacenter
        - `outside-datacenter` - Fallback to probers outside this datacenter
        """
        return pulumi.get(self, "prober_fallback")

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

    @_builtins.property
    @pulumi.getter(name="proberPreference")
    def prober_preference(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Specifies the type of prober to prefer when monitoring resources in this datacenter. Default is `inside-datacenter`. Valid options are:
        - `inside-datacenter` - Prefer probers inside this datacenter
        - `outside-datacenter` - Prefer probers outside this datacenter
        """
        return pulumi.get(self, "prober_preference")

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


@pulumi.type_token("f5bigip:index/gtmDatacenter:GtmDatacenter")
class GtmDatacenter(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 contact: Optional[pulumi.Input[_builtins.str]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 location: Optional[pulumi.Input[_builtins.str]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 partition: Optional[pulumi.Input[_builtins.str]] = None,
                 prober_fallback: Optional[pulumi.Input[_builtins.str]] = None,
                 prober_preference: Optional[pulumi.Input[_builtins.str]] = None,
                 __props__=None):
        """
        ## # GtmDatacenter

        Manages F5 BIG-IP GTM (Global Traffic Manager) Datacenter resources.

        A GTM datacenter is a logical representation of a physical location where servers reside. Datacenters are fundamental building blocks in GTM topology and are used for geographic load balancing and disaster recovery.

        ## Example Usage

        ### Basic Datacenter

        ```python
        import pulumi
        import pulumi_f5bigip as f5bigip

        example = f5bigip.GtmDatacenter("example",
            name="example_datacenter",
            partition="Common",
            location="Seattle, WA",
            contact="admin@example.com",
            description="Primary datacenter for west coast operations",
            enabled=True,
            prober_preference="inside-datacenter",
            prober_fallback="any-available")
        ```

        ### Datacenter with Custom Prober Settings

        ```python
        import pulumi
        import pulumi_f5bigip as f5bigip

        custom_prober = f5bigip.GtmDatacenter("custom_prober",
            name="custom_datacenter",
            partition="Common",
            location="New York, NY",
            contact="ops@example.com",
            description="East coast datacenter with custom prober configuration",
            enabled=True,
            prober_preference="pool",
            prober_fallback="outside-datacenter")
        ```

        ### Disabled Datacenter

        ```python
        import pulumi
        import pulumi_f5bigip as f5bigip

        maintenance = f5bigip.GtmDatacenter("maintenance",
            name="maintenance_dc",
            partition="Common",
            location="Chicago, IL",
            contact="maintenance@example.com",
            description="Datacenter currently under maintenance",
            enabled=False,
            prober_preference="inside-datacenter",
            prober_fallback="any-available")
        ```

        ## Notes

        * Datacenters are required before you can create GTM servers and pools.
        * The `name` and `partition` cannot be changed after creation. You must destroy and recreate the resource to change these values.
        * Disabling a datacenter (`enabled = false`) removes it from load balancing decisions but preserves its configuration.
        * Prober settings control how BIG-IP monitors the health of resources in this datacenter.

        ## Import

        GTM datacenters can be imported using the full path, e.g.

        ```sh
        $ pulumi import f5bigip:index/gtmDatacenter:GtmDatacenter example /Common/example_datacenter
        ```


        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[_builtins.str] contact: Contact information for the datacenter administrator.
        :param pulumi.Input[_builtins.str] description: Description of the datacenter.
        :param pulumi.Input[_builtins.bool] enabled: Enable or disable the datacenter. Default is `true`. When set to `false`, the datacenter is disabled and will not be used for load balancing decisions.
        :param pulumi.Input[_builtins.str] location: Physical location of the datacenter. This is a free-form text field.
        :param pulumi.Input[_builtins.str] name: Name of the GTM datacenter. Cannot be changed after creation.
        :param pulumi.Input[_builtins.str] partition: Partition in which to create the datacenter. Default is `Common`. Cannot be changed after creation.
        :param pulumi.Input[_builtins.str] prober_fallback: Specifies the type of prober to use as fallback when the preferred prober is unavailable. Default is `any-available`. Valid options are:
               - `any-available` - Use any available prober
               - `inside-datacenter` - Fallback to probers inside this datacenter
               - `outside-datacenter` - Fallback to probers outside this datacenter
        :param pulumi.Input[_builtins.str] prober_preference: Specifies the type of prober to prefer when monitoring resources in this datacenter. Default is `inside-datacenter`. Valid options are:
               - `inside-datacenter` - Prefer probers inside this datacenter
               - `outside-datacenter` - Prefer probers outside this datacenter
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: GtmDatacenterArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        ## # GtmDatacenter

        Manages F5 BIG-IP GTM (Global Traffic Manager) Datacenter resources.

        A GTM datacenter is a logical representation of a physical location where servers reside. Datacenters are fundamental building blocks in GTM topology and are used for geographic load balancing and disaster recovery.

        ## Example Usage

        ### Basic Datacenter

        ```python
        import pulumi
        import pulumi_f5bigip as f5bigip

        example = f5bigip.GtmDatacenter("example",
            name="example_datacenter",
            partition="Common",
            location="Seattle, WA",
            contact="admin@example.com",
            description="Primary datacenter for west coast operations",
            enabled=True,
            prober_preference="inside-datacenter",
            prober_fallback="any-available")
        ```

        ### Datacenter with Custom Prober Settings

        ```python
        import pulumi
        import pulumi_f5bigip as f5bigip

        custom_prober = f5bigip.GtmDatacenter("custom_prober",
            name="custom_datacenter",
            partition="Common",
            location="New York, NY",
            contact="ops@example.com",
            description="East coast datacenter with custom prober configuration",
            enabled=True,
            prober_preference="pool",
            prober_fallback="outside-datacenter")
        ```

        ### Disabled Datacenter

        ```python
        import pulumi
        import pulumi_f5bigip as f5bigip

        maintenance = f5bigip.GtmDatacenter("maintenance",
            name="maintenance_dc",
            partition="Common",
            location="Chicago, IL",
            contact="maintenance@example.com",
            description="Datacenter currently under maintenance",
            enabled=False,
            prober_preference="inside-datacenter",
            prober_fallback="any-available")
        ```

        ## Notes

        * Datacenters are required before you can create GTM servers and pools.
        * The `name` and `partition` cannot be changed after creation. You must destroy and recreate the resource to change these values.
        * Disabling a datacenter (`enabled = false`) removes it from load balancing decisions but preserves its configuration.
        * Prober settings control how BIG-IP monitors the health of resources in this datacenter.

        ## Import

        GTM datacenters can be imported using the full path, e.g.

        ```sh
        $ pulumi import f5bigip:index/gtmDatacenter:GtmDatacenter example /Common/example_datacenter
        ```


        :param str resource_name: The name of the resource.
        :param GtmDatacenterArgs 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(GtmDatacenterArgs, 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,
                 contact: Optional[pulumi.Input[_builtins.str]] = None,
                 description: Optional[pulumi.Input[_builtins.str]] = None,
                 enabled: Optional[pulumi.Input[_builtins.bool]] = None,
                 location: Optional[pulumi.Input[_builtins.str]] = None,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 partition: Optional[pulumi.Input[_builtins.str]] = None,
                 prober_fallback: Optional[pulumi.Input[_builtins.str]] = None,
                 prober_preference: Optional[pulumi.Input[_builtins.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__ = GtmDatacenterArgs.__new__(GtmDatacenterArgs)

            __props__.__dict__["contact"] = contact
            __props__.__dict__["description"] = description
            __props__.__dict__["enabled"] = enabled
            __props__.__dict__["location"] = location
            if name is None and not opts.urn:
                raise TypeError("Missing required property 'name'")
            __props__.__dict__["name"] = name
            __props__.__dict__["partition"] = partition
            __props__.__dict__["prober_fallback"] = prober_fallback
            __props__.__dict__["prober_preference"] = prober_preference
        super(GtmDatacenter, __self__).__init__(
            'f5bigip:index/gtmDatacenter:GtmDatacenter',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            contact: Optional[pulumi.Input[_builtins.str]] = None,
            description: Optional[pulumi.Input[_builtins.str]] = None,
            enabled: Optional[pulumi.Input[_builtins.bool]] = None,
            location: Optional[pulumi.Input[_builtins.str]] = None,
            name: Optional[pulumi.Input[_builtins.str]] = None,
            partition: Optional[pulumi.Input[_builtins.str]] = None,
            prober_fallback: Optional[pulumi.Input[_builtins.str]] = None,
            prober_preference: Optional[pulumi.Input[_builtins.str]] = None) -> 'GtmDatacenter':
        """
        Get an existing GtmDatacenter 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[_builtins.str] contact: Contact information for the datacenter administrator.
        :param pulumi.Input[_builtins.str] description: Description of the datacenter.
        :param pulumi.Input[_builtins.bool] enabled: Enable or disable the datacenter. Default is `true`. When set to `false`, the datacenter is disabled and will not be used for load balancing decisions.
        :param pulumi.Input[_builtins.str] location: Physical location of the datacenter. This is a free-form text field.
        :param pulumi.Input[_builtins.str] name: Name of the GTM datacenter. Cannot be changed after creation.
        :param pulumi.Input[_builtins.str] partition: Partition in which to create the datacenter. Default is `Common`. Cannot be changed after creation.
        :param pulumi.Input[_builtins.str] prober_fallback: Specifies the type of prober to use as fallback when the preferred prober is unavailable. Default is `any-available`. Valid options are:
               - `any-available` - Use any available prober
               - `inside-datacenter` - Fallback to probers inside this datacenter
               - `outside-datacenter` - Fallback to probers outside this datacenter
        :param pulumi.Input[_builtins.str] prober_preference: Specifies the type of prober to prefer when monitoring resources in this datacenter. Default is `inside-datacenter`. Valid options are:
               - `inside-datacenter` - Prefer probers inside this datacenter
               - `outside-datacenter` - Prefer probers outside this datacenter
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _GtmDatacenterState.__new__(_GtmDatacenterState)

        __props__.__dict__["contact"] = contact
        __props__.__dict__["description"] = description
        __props__.__dict__["enabled"] = enabled
        __props__.__dict__["location"] = location
        __props__.__dict__["name"] = name
        __props__.__dict__["partition"] = partition
        __props__.__dict__["prober_fallback"] = prober_fallback
        __props__.__dict__["prober_preference"] = prober_preference
        return GtmDatacenter(resource_name, opts=opts, __props__=__props__)

    @_builtins.property
    @pulumi.getter
    def contact(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        Contact information for the datacenter administrator.
        """
        return pulumi.get(self, "contact")

    @_builtins.property
    @pulumi.getter
    def description(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        Description of the datacenter.
        """
        return pulumi.get(self, "description")

    @_builtins.property
    @pulumi.getter
    def enabled(self) -> pulumi.Output[Optional[_builtins.bool]]:
        """
        Enable or disable the datacenter. Default is `true`. When set to `false`, the datacenter is disabled and will not be used for load balancing decisions.
        """
        return pulumi.get(self, "enabled")

    @_builtins.property
    @pulumi.getter
    def location(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        Physical location of the datacenter. This is a free-form text field.
        """
        return pulumi.get(self, "location")

    @_builtins.property
    @pulumi.getter
    def name(self) -> pulumi.Output[_builtins.str]:
        """
        Name of the GTM datacenter. Cannot be changed after creation.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def partition(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        Partition in which to create the datacenter. Default is `Common`. Cannot be changed after creation.
        """
        return pulumi.get(self, "partition")

    @_builtins.property
    @pulumi.getter(name="proberFallback")
    def prober_fallback(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        Specifies the type of prober to use as fallback when the preferred prober is unavailable. Default is `any-available`. Valid options are:
        - `any-available` - Use any available prober
        - `inside-datacenter` - Fallback to probers inside this datacenter
        - `outside-datacenter` - Fallback to probers outside this datacenter
        """
        return pulumi.get(self, "prober_fallback")

    @_builtins.property
    @pulumi.getter(name="proberPreference")
    def prober_preference(self) -> pulumi.Output[Optional[_builtins.str]]:
        """
        Specifies the type of prober to prefer when monitoring resources in this datacenter. Default is `inside-datacenter`. Valid options are:
        - `inside-datacenter` - Prefer probers inside this datacenter
        - `outside-datacenter` - Prefer probers outside this datacenter
        """
        return pulumi.get(self, "prober_preference")

