find gate according node ID.
        :param nid: node id
        :return: the gate if found or None if not found

def find_gate(nid=None):
        """
        find gate according node ID.
        :param nid: node id
        :return: the gate if found or None if not found
        """
        LOGGER.debug("GateService.find_gate")
        ret = None
        if nid is None or not nid:
            raise exceptions.ArianeCallParametersError('id')
        params = SessionService.complete_transactional_req({'ID': nid})

        if MappingService.driver_type != DriverFactory.DRIVER_REST:
            params['OPERATION'] = 'getGate'
            args = {'properties': params}
        else:
            args = {'http_operation': 'GET', 'operation_path': 'get', 'parameters': params}

        response = GateService.requester.call(args)

        if MappingService.driver_type != DriverFactory.DRIVER_REST:
            response = response.get()

        if response.rc == 0:
            ret = Gate.json_2_gate(response.response_content)
        elif response.rc != 404:
            err_msg = 'GateService.find_gate - Problem while searching gate (id:' + str(nid) + ' ). ' + \
                      '. Reason: ' + str(response.response_content) + ' - ' + str(response.error_message) + \
                      " (" + str(response.rc) + ")"
            LOGGER.warning(err_msg)
            if response.rc == 500 and ArianeMappingOverloadError.ERROR_MSG in response.error_message:
                raise ArianeMappingOverloadError("GateService.find_gate",
                                                 ArianeMappingOverloadError.ERROR_MSG)
            # traceback.print_stack()
        return ret