def get_authority(config, metrics, rrset_channel, **kwargs):
    """Get a GCEAuthority client.

    A factory function that validates configuration and creates a
    proper GCEAuthority.

    Args:
        config (dict): GCEAuthority related configuration.
        metrics (obj): :interface:`IMetricRelay` implementation.
        rrset_channel (asyncio.Queue): Queue used for sending messages
            to the reconciler plugin.
        kw (dict): Additional keyword arguments to pass to the
            Authority.
    Returns:
        A :class:`GCEAuthority` instance.
    """
    builder = authority.GCEAuthorityBuilder(
        config, metrics, rrset_channel, **kwargs)
    return builder.build_authority()