code: def find_gate(nid=None):
          
          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
docs: find gate according node ID.
          :param nid: node id
          :return: the gate if found or None if not found