def slugify_interface(interface=None, device_hostname=None, name=None, **kwargs
    ):
    """
    Return a slug (natural key) representation of an Interface.

    If ``interface`` is not provided, ``device_hostname`` and ``name`` are
    required. If all are provided, ``interface`` will take precedence.

    :param interface:
        Interface dict

    :param device_hostname:
        Device hostname

    :param name:
        Interface name

    :rtype: str
    """
    if not (interface or device_hostname and name):
        raise RuntimeError('Either interface or device_hostname/name required')
    if interface is None:
        interface = dict(device_hostname=device_hostname, name=name)
    slug = '{device_hostname}:{name}'.format(**interface)
    return slug
