'Fetch information on a network interface.
:param  ex_href: The href of the NIC you wish to describe.
:type   ex_href: ``str``
:param  ex_datacenter_id: The ID of parent data center
of the NIC you wish to describe.
:type   ex_datacenter_id: ``str``
:param  ex_server_id: The server the NIC is connected to.
:type   ex_server_id: ``str``
:param  ex_nic_id: The ID of the NIC
:type   ex_nic_id: ``str``
:return:    Instance of class ``ProfitBricksNetworkInterface``
:rtype:     :class:`ProfitBricksNetworkInterface`'

def ex_describe_network_interface(self, ex_href=None, ex_datacenter_id=None, ex_server_id=None, ex_nic_id=None):

    use_full_url = True
    if (ex_href is None):
        if ((ex_datacenter_id is None) or (ex_server_id is None) or (ex_nic_id is None)):
            raise ValueError(('IDs    are    required    for    the    data    center', 'server    and    network    interface.'))
        else:
            use_full_url = False
            ex_href = 'datacenters/{datacenter_id}/servers/{server_id}/nics/{nic_id}'.format(datacenter_id=ex_datacenter_id, server_id=ex_server_id, nic_id=ex_nic_id)
    response = self.connection.request(action=ex_href, method='GET', with_full_url=use_full_url)
    return self._to_interface(response.object)
