# 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 warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = ['ProfileTcpArgs', 'ProfileTcp']

@pulumi.input_type
class ProfileTcpArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 close_wait_timeout: Optional[pulumi.Input[int]] = None,
                 defaults_from: Optional[pulumi.Input[str]] = None,
                 deferred_accept: Optional[pulumi.Input[str]] = None,
                 fast_open: Optional[pulumi.Input[str]] = None,
                 finwait2timeout: Optional[pulumi.Input[int]] = None,
                 finwait_timeout: Optional[pulumi.Input[int]] = None,
                 idle_timeout: Optional[pulumi.Input[int]] = None,
                 keepalive_interval: Optional[pulumi.Input[int]] = None,
                 partition: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a ProfileTcp resource.
        :param pulumi.Input[str] name: Name of the profile_tcp
        :param pulumi.Input[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides
        """
        pulumi.set(__self__, "name", name)
        if close_wait_timeout is not None:
            pulumi.set(__self__, "close_wait_timeout", close_wait_timeout)
        if defaults_from is not None:
            pulumi.set(__self__, "defaults_from", defaults_from)
        if deferred_accept is not None:
            pulumi.set(__self__, "deferred_accept", deferred_accept)
        if fast_open is not None:
            pulumi.set(__self__, "fast_open", fast_open)
        if finwait2timeout is not None:
            pulumi.set(__self__, "finwait2timeout", finwait2timeout)
        if finwait_timeout is not None:
            pulumi.set(__self__, "finwait_timeout", finwait_timeout)
        if idle_timeout is not None:
            pulumi.set(__self__, "idle_timeout", idle_timeout)
        if keepalive_interval is not None:
            pulumi.set(__self__, "keepalive_interval", keepalive_interval)
        if partition is not None:
            pulumi.set(__self__, "partition", partition)

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

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

    @property
    @pulumi.getter(name="closeWaitTimeout")
    def close_wait_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        """
        return pulumi.get(self, "close_wait_timeout")

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

    @property
    @pulumi.getter(name="defaultsFrom")
    def defaults_from(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        """
        return pulumi.get(self, "defaults_from")

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

    @property
    @pulumi.getter(name="deferredAccept")
    def deferred_accept(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        """
        return pulumi.get(self, "deferred_accept")

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

    @property
    @pulumi.getter(name="fastOpen")
    def fast_open(self) -> Optional[pulumi.Input[str]]:
        """
        When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        """
        return pulumi.get(self, "fast_open")

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

    @property
    @pulumi.getter
    def finwait2timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        """
        return pulumi.get(self, "finwait2timeout")

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

    @property
    @pulumi.getter(name="finwaitTimeout")
    def finwait_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        """
        return pulumi.get(self, "finwait_timeout")

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

    @property
    @pulumi.getter(name="idleTimeout")
    def idle_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        """
        return pulumi.get(self, "idle_timeout")

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

    @property
    @pulumi.getter(name="keepaliveInterval")
    def keepalive_interval(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        """
        return pulumi.get(self, "keepalive_interval")

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

    @property
    @pulumi.getter
    def partition(self) -> Optional[pulumi.Input[str]]:
        """
        Displays the administrative partition within which this profile resides
        """
        return pulumi.get(self, "partition")

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


@pulumi.input_type
class _ProfileTcpState:
    def __init__(__self__, *,
                 close_wait_timeout: Optional[pulumi.Input[int]] = None,
                 defaults_from: Optional[pulumi.Input[str]] = None,
                 deferred_accept: Optional[pulumi.Input[str]] = None,
                 fast_open: Optional[pulumi.Input[str]] = None,
                 finwait2timeout: Optional[pulumi.Input[int]] = None,
                 finwait_timeout: Optional[pulumi.Input[int]] = None,
                 idle_timeout: Optional[pulumi.Input[int]] = None,
                 keepalive_interval: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 partition: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering ProfileTcp resources.
        :param pulumi.Input[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        :param pulumi.Input[str] name: Name of the profile_tcp
        :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides
        """
        if close_wait_timeout is not None:
            pulumi.set(__self__, "close_wait_timeout", close_wait_timeout)
        if defaults_from is not None:
            pulumi.set(__self__, "defaults_from", defaults_from)
        if deferred_accept is not None:
            pulumi.set(__self__, "deferred_accept", deferred_accept)
        if fast_open is not None:
            pulumi.set(__self__, "fast_open", fast_open)
        if finwait2timeout is not None:
            pulumi.set(__self__, "finwait2timeout", finwait2timeout)
        if finwait_timeout is not None:
            pulumi.set(__self__, "finwait_timeout", finwait_timeout)
        if idle_timeout is not None:
            pulumi.set(__self__, "idle_timeout", idle_timeout)
        if keepalive_interval is not None:
            pulumi.set(__self__, "keepalive_interval", keepalive_interval)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if partition is not None:
            pulumi.set(__self__, "partition", partition)

    @property
    @pulumi.getter(name="closeWaitTimeout")
    def close_wait_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        """
        return pulumi.get(self, "close_wait_timeout")

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

    @property
    @pulumi.getter(name="defaultsFrom")
    def defaults_from(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        """
        return pulumi.get(self, "defaults_from")

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

    @property
    @pulumi.getter(name="deferredAccept")
    def deferred_accept(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        """
        return pulumi.get(self, "deferred_accept")

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

    @property
    @pulumi.getter(name="fastOpen")
    def fast_open(self) -> Optional[pulumi.Input[str]]:
        """
        When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        """
        return pulumi.get(self, "fast_open")

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

    @property
    @pulumi.getter
    def finwait2timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        """
        return pulumi.get(self, "finwait2timeout")

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

    @property
    @pulumi.getter(name="finwaitTimeout")
    def finwait_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        """
        return pulumi.get(self, "finwait_timeout")

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

    @property
    @pulumi.getter(name="idleTimeout")
    def idle_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        """
        return pulumi.get(self, "idle_timeout")

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

    @property
    @pulumi.getter(name="keepaliveInterval")
    def keepalive_interval(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        """
        return pulumi.get(self, "keepalive_interval")

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

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

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

    @property
    @pulumi.getter
    def partition(self) -> Optional[pulumi.Input[str]]:
        """
        Displays the administrative partition within which this profile resides
        """
        return pulumi.get(self, "partition")

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


class ProfileTcp(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 close_wait_timeout: Optional[pulumi.Input[int]] = None,
                 defaults_from: Optional[pulumi.Input[str]] = None,
                 deferred_accept: Optional[pulumi.Input[str]] = None,
                 fast_open: Optional[pulumi.Input[str]] = None,
                 finwait2timeout: Optional[pulumi.Input[int]] = None,
                 finwait_timeout: Optional[pulumi.Input[int]] = None,
                 idle_timeout: Optional[pulumi.Input[int]] = None,
                 keepalive_interval: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 partition: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        `ltm.ProfileTcp` Configures a custom profile_tcp for use by health checks.

        Resources should be named with their "full path". The full path is the combination of the partition + name (example: /Common/my-pool ) or  partition + directory + name of the resource  (example: /Common/test/my-pool )

        ## Example Usage

        ```python
        import pulumi
        import pulumi_f5bigip as f5bigip

        sanjose_tcp_lan_profile = f5bigip.ltm.ProfileTcp("sanjose-tcp-lan-profile",
            close_wait_timeout=5,
            deferred_accept="enabled",
            fast_open="enabled",
            finwait2timeout=5,
            finwait_timeout=300,
            idle_timeout=200,
            keepalive_interval=1700,
            name="/Common/sanjose-tcp-lan-profile")
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        :param pulumi.Input[str] name: Name of the profile_tcp
        :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: ProfileTcpArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        `ltm.ProfileTcp` Configures a custom profile_tcp for use by health checks.

        Resources should be named with their "full path". The full path is the combination of the partition + name (example: /Common/my-pool ) or  partition + directory + name of the resource  (example: /Common/test/my-pool )

        ## Example Usage

        ```python
        import pulumi
        import pulumi_f5bigip as f5bigip

        sanjose_tcp_lan_profile = f5bigip.ltm.ProfileTcp("sanjose-tcp-lan-profile",
            close_wait_timeout=5,
            deferred_accept="enabled",
            fast_open="enabled",
            finwait2timeout=5,
            finwait_timeout=300,
            idle_timeout=200,
            keepalive_interval=1700,
            name="/Common/sanjose-tcp-lan-profile")
        ```

        :param str resource_name: The name of the resource.
        :param ProfileTcpArgs 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(ProfileTcpArgs, 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,
                 close_wait_timeout: Optional[pulumi.Input[int]] = None,
                 defaults_from: Optional[pulumi.Input[str]] = None,
                 deferred_accept: Optional[pulumi.Input[str]] = None,
                 fast_open: Optional[pulumi.Input[str]] = None,
                 finwait2timeout: Optional[pulumi.Input[int]] = None,
                 finwait_timeout: Optional[pulumi.Input[int]] = None,
                 idle_timeout: Optional[pulumi.Input[int]] = None,
                 keepalive_interval: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 partition: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = _utilities.get_version()
        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__ = ProfileTcpArgs.__new__(ProfileTcpArgs)

            __props__.__dict__["close_wait_timeout"] = close_wait_timeout
            __props__.__dict__["defaults_from"] = defaults_from
            __props__.__dict__["deferred_accept"] = deferred_accept
            __props__.__dict__["fast_open"] = fast_open
            __props__.__dict__["finwait2timeout"] = finwait2timeout
            __props__.__dict__["finwait_timeout"] = finwait_timeout
            __props__.__dict__["idle_timeout"] = idle_timeout
            __props__.__dict__["keepalive_interval"] = keepalive_interval
            if name is None and not opts.urn:
                raise TypeError("Missing required property 'name'")
            __props__.__dict__["name"] = name
            __props__.__dict__["partition"] = partition
        super(ProfileTcp, __self__).__init__(
            'f5bigip:ltm/profileTcp:ProfileTcp',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            close_wait_timeout: Optional[pulumi.Input[int]] = None,
            defaults_from: Optional[pulumi.Input[str]] = None,
            deferred_accept: Optional[pulumi.Input[str]] = None,
            fast_open: Optional[pulumi.Input[str]] = None,
            finwait2timeout: Optional[pulumi.Input[int]] = None,
            finwait_timeout: Optional[pulumi.Input[int]] = None,
            idle_timeout: Optional[pulumi.Input[int]] = None,
            keepalive_interval: Optional[pulumi.Input[int]] = None,
            name: Optional[pulumi.Input[str]] = None,
            partition: Optional[pulumi.Input[str]] = None) -> 'ProfileTcp':
        """
        Get an existing ProfileTcp 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[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        :param pulumi.Input[str] name: Name of the profile_tcp
        :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _ProfileTcpState.__new__(_ProfileTcpState)

        __props__.__dict__["close_wait_timeout"] = close_wait_timeout
        __props__.__dict__["defaults_from"] = defaults_from
        __props__.__dict__["deferred_accept"] = deferred_accept
        __props__.__dict__["fast_open"] = fast_open
        __props__.__dict__["finwait2timeout"] = finwait2timeout
        __props__.__dict__["finwait_timeout"] = finwait_timeout
        __props__.__dict__["idle_timeout"] = idle_timeout
        __props__.__dict__["keepalive_interval"] = keepalive_interval
        __props__.__dict__["name"] = name
        __props__.__dict__["partition"] = partition
        return ProfileTcp(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="closeWaitTimeout")
    def close_wait_timeout(self) -> pulumi.Output[int]:
        """
        Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        """
        return pulumi.get(self, "close_wait_timeout")

    @property
    @pulumi.getter(name="defaultsFrom")
    def defaults_from(self) -> pulumi.Output[str]:
        """
        Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        """
        return pulumi.get(self, "defaults_from")

    @property
    @pulumi.getter(name="deferredAccept")
    def deferred_accept(self) -> pulumi.Output[str]:
        """
        Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        """
        return pulumi.get(self, "deferred_accept")

    @property
    @pulumi.getter(name="fastOpen")
    def fast_open(self) -> pulumi.Output[str]:
        """
        When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        """
        return pulumi.get(self, "fast_open")

    @property
    @pulumi.getter
    def finwait2timeout(self) -> pulumi.Output[int]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        """
        return pulumi.get(self, "finwait2timeout")

    @property
    @pulumi.getter(name="finwaitTimeout")
    def finwait_timeout(self) -> pulumi.Output[int]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        """
        return pulumi.get(self, "finwait_timeout")

    @property
    @pulumi.getter(name="idleTimeout")
    def idle_timeout(self) -> pulumi.Output[int]:
        """
        Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        """
        return pulumi.get(self, "idle_timeout")

    @property
    @pulumi.getter(name="keepaliveInterval")
    def keepalive_interval(self) -> pulumi.Output[int]:
        """
        Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        """
        return pulumi.get(self, "keepalive_interval")

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

    @property
    @pulumi.getter
    def partition(self) -> pulumi.Output[Optional[str]]:
        """
        Displays the administrative partition within which this profile resides
        """
        return pulumi.get(self, "partition")


# 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 warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = ['ProfileTcpArgs', 'ProfileTcp']

@pulumi.input_type
class ProfileTcpArgs:
    def __init__(__self__, *,
                 name: pulumi.Input[str],
                 close_wait_timeout: Optional[pulumi.Input[int]] = None,
                 defaults_from: Optional[pulumi.Input[str]] = None,
                 deferred_accept: Optional[pulumi.Input[str]] = None,
                 fast_open: Optional[pulumi.Input[str]] = None,
                 finwait2timeout: Optional[pulumi.Input[int]] = None,
                 finwait_timeout: Optional[pulumi.Input[int]] = None,
                 idle_timeout: Optional[pulumi.Input[int]] = None,
                 keepalive_interval: Optional[pulumi.Input[int]] = None,
                 partition: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a ProfileTcp resource.
        :param pulumi.Input[str] name: Name of the profile_tcp
        :param pulumi.Input[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides
        """
        pulumi.set(__self__, "name", name)
        if close_wait_timeout is not None:
            pulumi.set(__self__, "close_wait_timeout", close_wait_timeout)
        if defaults_from is not None:
            pulumi.set(__self__, "defaults_from", defaults_from)
        if deferred_accept is not None:
            pulumi.set(__self__, "deferred_accept", deferred_accept)
        if fast_open is not None:
            pulumi.set(__self__, "fast_open", fast_open)
        if finwait2timeout is not None:
            pulumi.set(__self__, "finwait2timeout", finwait2timeout)
        if finwait_timeout is not None:
            pulumi.set(__self__, "finwait_timeout", finwait_timeout)
        if idle_timeout is not None:
            pulumi.set(__self__, "idle_timeout", idle_timeout)
        if keepalive_interval is not None:
            pulumi.set(__self__, "keepalive_interval", keepalive_interval)
        if partition is not None:
            pulumi.set(__self__, "partition", partition)

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

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

    @property
    @pulumi.getter(name="closeWaitTimeout")
    def close_wait_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        """
        return pulumi.get(self, "close_wait_timeout")

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

    @property
    @pulumi.getter(name="defaultsFrom")
    def defaults_from(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        """
        return pulumi.get(self, "defaults_from")

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

    @property
    @pulumi.getter(name="deferredAccept")
    def deferred_accept(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        """
        return pulumi.get(self, "deferred_accept")

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

    @property
    @pulumi.getter(name="fastOpen")
    def fast_open(self) -> Optional[pulumi.Input[str]]:
        """
        When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        """
        return pulumi.get(self, "fast_open")

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

    @property
    @pulumi.getter
    def finwait2timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        """
        return pulumi.get(self, "finwait2timeout")

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

    @property
    @pulumi.getter(name="finwaitTimeout")
    def finwait_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        """
        return pulumi.get(self, "finwait_timeout")

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

    @property
    @pulumi.getter(name="idleTimeout")
    def idle_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        """
        return pulumi.get(self, "idle_timeout")

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

    @property
    @pulumi.getter(name="keepaliveInterval")
    def keepalive_interval(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        """
        return pulumi.get(self, "keepalive_interval")

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

    @property
    @pulumi.getter
    def partition(self) -> Optional[pulumi.Input[str]]:
        """
        Displays the administrative partition within which this profile resides
        """
        return pulumi.get(self, "partition")

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


@pulumi.input_type
class _ProfileTcpState:
    def __init__(__self__, *,
                 close_wait_timeout: Optional[pulumi.Input[int]] = None,
                 defaults_from: Optional[pulumi.Input[str]] = None,
                 deferred_accept: Optional[pulumi.Input[str]] = None,
                 fast_open: Optional[pulumi.Input[str]] = None,
                 finwait2timeout: Optional[pulumi.Input[int]] = None,
                 finwait_timeout: Optional[pulumi.Input[int]] = None,
                 idle_timeout: Optional[pulumi.Input[int]] = None,
                 keepalive_interval: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 partition: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering ProfileTcp resources.
        :param pulumi.Input[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        :param pulumi.Input[str] name: Name of the profile_tcp
        :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides
        """
        if close_wait_timeout is not None:
            pulumi.set(__self__, "close_wait_timeout", close_wait_timeout)
        if defaults_from is not None:
            pulumi.set(__self__, "defaults_from", defaults_from)
        if deferred_accept is not None:
            pulumi.set(__self__, "deferred_accept", deferred_accept)
        if fast_open is not None:
            pulumi.set(__self__, "fast_open", fast_open)
        if finwait2timeout is not None:
            pulumi.set(__self__, "finwait2timeout", finwait2timeout)
        if finwait_timeout is not None:
            pulumi.set(__self__, "finwait_timeout", finwait_timeout)
        if idle_timeout is not None:
            pulumi.set(__self__, "idle_timeout", idle_timeout)
        if keepalive_interval is not None:
            pulumi.set(__self__, "keepalive_interval", keepalive_interval)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if partition is not None:
            pulumi.set(__self__, "partition", partition)

    @property
    @pulumi.getter(name="closeWaitTimeout")
    def close_wait_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        """
        return pulumi.get(self, "close_wait_timeout")

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

    @property
    @pulumi.getter(name="defaultsFrom")
    def defaults_from(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        """
        return pulumi.get(self, "defaults_from")

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

    @property
    @pulumi.getter(name="deferredAccept")
    def deferred_accept(self) -> Optional[pulumi.Input[str]]:
        """
        Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        """
        return pulumi.get(self, "deferred_accept")

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

    @property
    @pulumi.getter(name="fastOpen")
    def fast_open(self) -> Optional[pulumi.Input[str]]:
        """
        When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        """
        return pulumi.get(self, "fast_open")

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

    @property
    @pulumi.getter
    def finwait2timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        """
        return pulumi.get(self, "finwait2timeout")

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

    @property
    @pulumi.getter(name="finwaitTimeout")
    def finwait_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        """
        return pulumi.get(self, "finwait_timeout")

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

    @property
    @pulumi.getter(name="idleTimeout")
    def idle_timeout(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        """
        return pulumi.get(self, "idle_timeout")

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

    @property
    @pulumi.getter(name="keepaliveInterval")
    def keepalive_interval(self) -> Optional[pulumi.Input[int]]:
        """
        Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        """
        return pulumi.get(self, "keepalive_interval")

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

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

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

    @property
    @pulumi.getter
    def partition(self) -> Optional[pulumi.Input[str]]:
        """
        Displays the administrative partition within which this profile resides
        """
        return pulumi.get(self, "partition")

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


class ProfileTcp(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 close_wait_timeout: Optional[pulumi.Input[int]] = None,
                 defaults_from: Optional[pulumi.Input[str]] = None,
                 deferred_accept: Optional[pulumi.Input[str]] = None,
                 fast_open: Optional[pulumi.Input[str]] = None,
                 finwait2timeout: Optional[pulumi.Input[int]] = None,
                 finwait_timeout: Optional[pulumi.Input[int]] = None,
                 idle_timeout: Optional[pulumi.Input[int]] = None,
                 keepalive_interval: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 partition: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        `ltm.ProfileTcp` Configures a custom profile_tcp for use by health checks.

        Resources should be named with their "full path". The full path is the combination of the partition + name (example: /Common/my-pool ) or  partition + directory + name of the resource  (example: /Common/test/my-pool )

        ## Example Usage

        ```python
        import pulumi
        import pulumi_f5bigip as f5bigip

        sanjose_tcp_lan_profile = f5bigip.ltm.ProfileTcp("sanjose-tcp-lan-profile",
            close_wait_timeout=5,
            deferred_accept="enabled",
            fast_open="enabled",
            finwait2timeout=5,
            finwait_timeout=300,
            idle_timeout=200,
            keepalive_interval=1700,
            name="/Common/sanjose-tcp-lan-profile")
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        :param pulumi.Input[str] name: Name of the profile_tcp
        :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: ProfileTcpArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        `ltm.ProfileTcp` Configures a custom profile_tcp for use by health checks.

        Resources should be named with their "full path". The full path is the combination of the partition + name (example: /Common/my-pool ) or  partition + directory + name of the resource  (example: /Common/test/my-pool )

        ## Example Usage

        ```python
        import pulumi
        import pulumi_f5bigip as f5bigip

        sanjose_tcp_lan_profile = f5bigip.ltm.ProfileTcp("sanjose-tcp-lan-profile",
            close_wait_timeout=5,
            deferred_accept="enabled",
            fast_open="enabled",
            finwait2timeout=5,
            finwait_timeout=300,
            idle_timeout=200,
            keepalive_interval=1700,
            name="/Common/sanjose-tcp-lan-profile")
        ```

        :param str resource_name: The name of the resource.
        :param ProfileTcpArgs 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(ProfileTcpArgs, 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,
                 close_wait_timeout: Optional[pulumi.Input[int]] = None,
                 defaults_from: Optional[pulumi.Input[str]] = None,
                 deferred_accept: Optional[pulumi.Input[str]] = None,
                 fast_open: Optional[pulumi.Input[str]] = None,
                 finwait2timeout: Optional[pulumi.Input[int]] = None,
                 finwait_timeout: Optional[pulumi.Input[int]] = None,
                 idle_timeout: Optional[pulumi.Input[int]] = None,
                 keepalive_interval: Optional[pulumi.Input[int]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 partition: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = _utilities.get_version()
        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__ = ProfileTcpArgs.__new__(ProfileTcpArgs)

            __props__.__dict__["close_wait_timeout"] = close_wait_timeout
            __props__.__dict__["defaults_from"] = defaults_from
            __props__.__dict__["deferred_accept"] = deferred_accept
            __props__.__dict__["fast_open"] = fast_open
            __props__.__dict__["finwait2timeout"] = finwait2timeout
            __props__.__dict__["finwait_timeout"] = finwait_timeout
            __props__.__dict__["idle_timeout"] = idle_timeout
            __props__.__dict__["keepalive_interval"] = keepalive_interval
            if name is None and not opts.urn:
                raise TypeError("Missing required property 'name'")
            __props__.__dict__["name"] = name
            __props__.__dict__["partition"] = partition
        super(ProfileTcp, __self__).__init__(
            'f5bigip:ltm/profileTcp:ProfileTcp',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            close_wait_timeout: Optional[pulumi.Input[int]] = None,
            defaults_from: Optional[pulumi.Input[str]] = None,
            deferred_accept: Optional[pulumi.Input[str]] = None,
            fast_open: Optional[pulumi.Input[str]] = None,
            finwait2timeout: Optional[pulumi.Input[int]] = None,
            finwait_timeout: Optional[pulumi.Input[int]] = None,
            idle_timeout: Optional[pulumi.Input[int]] = None,
            keepalive_interval: Optional[pulumi.Input[int]] = None,
            name: Optional[pulumi.Input[str]] = None,
            partition: Optional[pulumi.Input[str]] = None) -> 'ProfileTcp':
        """
        Get an existing ProfileTcp 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[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        :param pulumi.Input[str] name: Name of the profile_tcp
        :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _ProfileTcpState.__new__(_ProfileTcpState)

        __props__.__dict__["close_wait_timeout"] = close_wait_timeout
        __props__.__dict__["defaults_from"] = defaults_from
        __props__.__dict__["deferred_accept"] = deferred_accept
        __props__.__dict__["fast_open"] = fast_open
        __props__.__dict__["finwait2timeout"] = finwait2timeout
        __props__.__dict__["finwait_timeout"] = finwait_timeout
        __props__.__dict__["idle_timeout"] = idle_timeout
        __props__.__dict__["keepalive_interval"] = keepalive_interval
        __props__.__dict__["name"] = name
        __props__.__dict__["partition"] = partition
        return ProfileTcp(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="closeWaitTimeout")
    def close_wait_timeout(self) -> pulumi.Output[int]:
        """
        Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.
        """
        return pulumi.get(self, "close_wait_timeout")

    @property
    @pulumi.getter(name="defaultsFrom")
    def defaults_from(self) -> pulumi.Output[str]:
        """
        Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.
        """
        return pulumi.get(self, "defaults_from")

    @property
    @pulumi.getter(name="deferredAccept")
    def deferred_accept(self) -> pulumi.Output[str]:
        """
        Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.
        """
        return pulumi.get(self, "deferred_accept")

    @property
    @pulumi.getter(name="fastOpen")
    def fast_open(self) -> pulumi.Output[str]:
        """
        When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.
        """
        return pulumi.get(self, "fast_open")

    @property
    @pulumi.getter
    def finwait2timeout(self) -> pulumi.Output[int]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).
        """
        return pulumi.get(self, "finwait2timeout")

    @property
    @pulumi.getter(name="finwaitTimeout")
    def finwait_timeout(self) -> pulumi.Output[int]:
        """
        Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.
        """
        return pulumi.get(self, "finwait_timeout")

    @property
    @pulumi.getter(name="idleTimeout")
    def idle_timeout(self) -> pulumi.Output[int]:
        """
        Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.
        """
        return pulumi.get(self, "idle_timeout")

    @property
    @pulumi.getter(name="keepaliveInterval")
    def keepalive_interval(self) -> pulumi.Output[int]:
        """
        Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.
        """
        return pulumi.get(self, "keepalive_interval")

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

    @property
    @pulumi.getter
    def partition(self) -> pulumi.Output[Optional[str]]:
        """
        Displays the administrative partition within which this profile resides
        """
        return pulumi.get(self, "partition")


# 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! *** The set of arguments for constructing a ProfileTcp resource.         :param pulumi.Input[str] name: Name of the profile_tcp         :param pulumi.Input[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.         :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.         :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.         :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.         :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).         :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.         :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.         :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.         :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides Name of the profile_tcp Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds. Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified. Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled. When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet. Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite. Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds. Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds. Displays the administrative partition within which this profile resides Input properties used for looking up and filtering ProfileTcp resources.         :param pulumi.Input[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.         :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.         :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.         :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.         :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).         :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.         :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.         :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.         :param pulumi.Input[str] name: Name of the profile_tcp         :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds. Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified. Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled. When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet. Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite. Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds. Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds. Name of the profile_tcp Displays the administrative partition within which this profile resides `ltm.ProfileTcp` Configures a custom profile_tcp for use by health checks.          Resources should be named with their "full path". The full path is the combination of the partition + name (example: /Common/my-pool ) or  partition + directory + name of the resource  (example: /Common/test/my-pool )          ## Example Usage          ```python         import pulumi         import pulumi_f5bigip as f5bigip          sanjose_tcp_lan_profile = f5bigip.ltm.ProfileTcp("sanjose-tcp-lan-profile",             close_wait_timeout=5,             deferred_accept="enabled",             fast_open="enabled",             finwait2timeout=5,             finwait_timeout=300,             idle_timeout=200,             keepalive_interval=1700,             name="/Common/sanjose-tcp-lan-profile")         ```          :param str resource_name: The name of the resource.         :param pulumi.ResourceOptions opts: Options for the resource.         :param pulumi.Input[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.         :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.         :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.         :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.         :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).         :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.         :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.         :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.         :param pulumi.Input[str] name: Name of the profile_tcp         :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides `ltm.ProfileTcp` Configures a custom profile_tcp for use by health checks.          Resources should be named with their "full path". The full path is the combination of the partition + name (example: /Common/my-pool ) or  partition + directory + name of the resource  (example: /Common/test/my-pool )          ## Example Usage          ```python         import pulumi         import pulumi_f5bigip as f5bigip          sanjose_tcp_lan_profile = f5bigip.ltm.ProfileTcp("sanjose-tcp-lan-profile",             close_wait_timeout=5,             deferred_accept="enabled",             fast_open="enabled",             finwait2timeout=5,             finwait_timeout=300,             idle_timeout=200,             keepalive_interval=1700,             name="/Common/sanjose-tcp-lan-profile")         ```          :param str resource_name: The name of the resource.         :param ProfileTcpArgs args: The arguments to use to populate this resource's properties.         :param pulumi.ResourceOptions opts: Options for the resource. Get an existing ProfileTcp 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[int] close_wait_timeout: Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds.         :param pulumi.Input[str] defaults_from: Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified.         :param pulumi.Input[str] deferred_accept: Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled.         :param pulumi.Input[str] fast_open: When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet.         :param pulumi.Input[int] finwait2timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state).         :param pulumi.Input[int] finwait_timeout: Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite.         :param pulumi.Input[int] idle_timeout: Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds.         :param pulumi.Input[int] keepalive_interval: Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds.         :param pulumi.Input[str] name: Name of the profile_tcp         :param pulumi.Input[str] partition: Displays the administrative partition within which this profile resides Specifies the number of seconds that a connection remains in a LAST-ACK state before quitting. A value of 0 represents a term of forever (or until the maxrtx of the FIN state). The default value is 5 seconds. Specifies the profile that you want to use as the parent profile. Your new profile inherits all settings and values from the parent profile specified. Specifies, when enabled, that the system defers allocation of the connection chain context until the client response is received. This option is useful for dealing with 3-way handshake DOS attacks. The default value is disabled. When enabled, permits TCP Fast Open, allowing properly equipped TCP clients to send data with the SYN packet. Specifies the number of seconds that a connection is in the FIN-WAIT-2 state before quitting. The default value is 300 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). Specifies the number of seconds that a connection is in the FIN-WAIT-1 or closing state before quitting. The default value is 5 seconds. A value of 0 (zero) represents a term of forever (or until the maxrtx of the FIN state). You can also specify immediate or indefinite. Specifies the number of seconds that a connection is idle before the connection is eligible for deletion. The default value is 300 seconds. Specifies the keep alive probe interval, in seconds. The default value is 1800 seconds. Name of the profile_tcp Displays the administrative partition within which this profile resides