Checks status of ACL replication

        Parameters:
            dc (str): Specify datacenter that will be used.
                      Defaults to the agent's local datacenter.
        Returns:
            Object: Replication information

        Returns the status of the ACL replication process in the datacenter.
        This is intended to be used by operators, or by automation checking
        the health of ACL replication.

        By default, the datacenter of the agent is queried; however, the dc
        can be provided using the "dc" parameter.

        It returns a body like this::

            {
                "Enabled": True,
                "Running": True,
                "SourceDatacenter": "dc1",
                "ReplicatedIndex": 1976,
                "LastSuccess": datetime(2016, 8, 5, 6, 28, 58, tzinfo=tzutc()),
                "LastError": datetime(2016, 8, 5, 6, 28, 58, tzinfo=tzutc())
            }

        **Enabled** reports whether ACL replication is enabled for the
        datacenter.

        **Running** reports whether the ACL replication process is running.
        The process may take approximately 60 seconds to begin running after
        a leader election occurs.

        **SourceDatacenter** is the authoritative ACL datacenter that ACLs
        are being replicated from, and will match the acl_datacenter
        configuration.

        **ReplicatedIndex** is the last index that was successfully replicated.
        You can compare this to the Index meta returned by the items() endpoint
        to determine if the replication process has gotten all available ACLs.
        Note that replication runs as a background process approximately every
        30 seconds, and that local updates are rate limited to 100
        updates/second, so so it may take several minutes to perform the
        initial sync of a large set of ACLs. After the initial sync, replica
        lag should be on the order of about 30 seconds.

        **LastSuccess** is the UTC time of the last successful sync operation.
        Note that since ACL replication is done with a blocking query, this
        may not update for up to 5 minutes if there have been no ACL changes
        to replicate. A zero value of "0001-01-01T00:00:00Z" will be present
        if no sync has been successful.

        **LastError** is the UTC time of the last error encountered during a
        sync operation. If this time is later than LastSuccess, you can assume
        the replication process is not in a good state. A zero value of
        "0001-01-01T00:00:00Z" will be present if no sync has resulted in an
        error.

async def replication(self, *, dc=None):
        """Checks status of ACL replication

        Parameters:
            dc (str): Specify datacenter that will be used.
                      Defaults to the agent's local datacenter.
        Returns:
            Object: Replication information

        Returns the status of the ACL replication process in the datacenter.
        This is intended to be used by operators, or by automation checking
        the health of ACL replication.

        By default, the datacenter of the agent is queried; however, the dc
        can be provided using the "dc" parameter.

        It returns a body like this::

            {
                "Enabled": True,
                "Running": True,
                "SourceDatacenter": "dc1",
                "ReplicatedIndex": 1976,
                "LastSuccess": datetime(2016, 8, 5, 6, 28, 58, tzinfo=tzutc()),
                "LastError": datetime(2016, 8, 5, 6, 28, 58, tzinfo=tzutc())
            }

        **Enabled** reports whether ACL replication is enabled for the
        datacenter.

        **Running** reports whether the ACL replication process is running.
        The process may take approximately 60 seconds to begin running after
        a leader election occurs.

        **SourceDatacenter** is the authoritative ACL datacenter that ACLs
        are being replicated from, and will match the acl_datacenter
        configuration.

        **ReplicatedIndex** is the last index that was successfully replicated.
        You can compare this to the Index meta returned by the items() endpoint
        to determine if the replication process has gotten all available ACLs.
        Note that replication runs as a background process approximately every
        30 seconds, and that local updates are rate limited to 100
        updates/second, so so it may take several minutes to perform the
        initial sync of a large set of ACLs. After the initial sync, replica
        lag should be on the order of about 30 seconds.

        **LastSuccess** is the UTC time of the last successful sync operation.
        Note that since ACL replication is done with a blocking query, this
        may not update for up to 5 minutes if there have been no ACL changes
        to replicate. A zero value of "0001-01-01T00:00:00Z" will be present
        if no sync has been successful.

        **LastError** is the UTC time of the last error encountered during a
        sync operation. If this time is later than LastSuccess, you can assume
        the replication process is not in a good state. A zero value of
        "0001-01-01T00:00:00Z" will be present if no sync has resulted in an
        error.
        """
        params = {"dc": dc}
        response = await self._api.get("/v1/acl/replication", params=params)
        return response.body