• Home
  • History
  • Annotate
  • Raw
  • Download

Lines Matching full:request

85 # Request Handlers: Used in conjunction with requests in rdb_utils, these
86 # handlers acquire hosts for a request and record the acquisition in
87 # an response_map dictionary keyed on the request itself, with the host/hosts
100 def update_response_map(self, request, response, append=False): argument
101 """Record a response for a request.
105 against a request. If the rdb hit an exception processing a request, the
108 @param response: A response for the request.
109 @param request: The request that has reserved these hosts.
111 |response| for existing request.
119 'valid responses. Request %s, response %s is invalid.' %
120 (request, response))
121 exist_response = self.response_map.setdefault(request, [])
123 raise rdb_utils.RDBException('Request %s already has response %s '
125 'responses for the same request.' %
126 (request, response))
140 for request, response in self.response_map.iteritems():
147 'hosts %s, request %s, response_map: %s' %
148 (response, request, self.response_map))
153 def _record_exceptions(self, request, exceptions): argument
154 """Record a list of exceptions for a request.
156 @param request: The request for which the exceptions were hit.
157 @param exceptions: The exceptions hit while processing the request.
160 self.update_response_map(request, rdb_exceptions)
171 for request, response in self.response_map.iteritems():
172 self.response_map[request] = [reply.wire_format()
185 for request in update_requests:
186 if unique_host_requests.get(request.host_id):
187 unique_host_requests[request.host_id].update(request.payload)
189 unique_host_requests[request.host_id] = request.payload
206 # to the same key as the original request.
207 request = rdb_requests.UpdateHostRequest(
209 self._record_exceptions(request, [e])
221 host_ids = set([request.host_id for request in host_requests])
228 for request in host_requests:
229 if request.host_id in host_map:
230 self.update_response_map(request, [host_map[request.host_id]])
232 logging.warning('rdb could not get host for request: %s, it '
233 'is already leased or locked', request)
275 def valid_host_assignment(cls, request, host): argument
276 """Check if a host, request pairing is valid.
278 @param request: The request to match against the host.
281 @return: True if the host, request assignment is valid.
283 @raises RDBException: If the request already has another host_ids
286 if request.host_id and request.host_id != host.id:
288 'Cannot assign a different host for request: %s, it '
289 'already has one: %s ' % (request, host.id))
297 acl_match = (request.acls.intersection(host.acls) or host.invalid)
298 label_match = (request.deps.intersection(host.labels) == request.deps)
307 for a request. One important use case is including cros-version as
326 def _acquire_hosts(self, request, hosts_required, is_acquire_min_duts=False, argument
334 2. If all matching hosts are not leased for this request, the remaining
337 @param hosts_required: Number of hosts required to satisfy request.
338 @param request: The request for hosts.
348 request.deps, request.acls)
352 # --used this request---used by earlier request----------unused--------
354 hosts, request.preferred_deps)
360 self.update_response_map(request, leased_hosts, append=True)
370 # leased by a previous request, ergo, we can only get here
378 request, hosts_required, leased_host_count)
380 # Cache the unleased matching hosts against the request.
389 that match the parameters of a request. Each acquired host is added
403 for request in self.request_accountant.requests:
404 to_acquire = self.request_accountant.get_min_duts(request)
406 self._acquire_hosts(request, to_acquire,
411 for request in self.request_accountant.requests:
412 to_acquire = self.request_accountant.get_duts(request)
414 self._acquire_hosts(request, to_acquire,
428 request-host pairings. Lease the remaining hsots.
442 # higher priority request r1, will lease h1. The
445 # The matching request will lease h1. The other host
448 # These all have the same request hash, so the response map will
452 for request in sorted(self.response_map.keys(),
453 key=lambda request: request.priority, reverse=True):
454 hosts = self.response_map[request]
457 'request. Hosts: %s, request %s.' % (hosts, request))
462 # As such, on master, if a request asks for multiple hosts and
464 # would also be on the same shard. We can safely drop this request.
468 (self.valid_host_assignment(request, hosts[0]) and
471 del self.response_map[request]
472 logging.warning('Request %s was not able to lease host %s',
473 request, hosts[0])
476 # Request dispatchers: Create the appropriate request handler, send a list
477 # of requests to one of its methods. The corresponding request handler in
478 # rdb_lib must understand how to match each request with a response from a
480 # attribute of the request handler, after making the appropriate requests.
485 @return: A dictionary mapping each request to a list of hosts.
508 @return: A dictionary mapping each request to a list of hosts, or
509 an empty list if none could satisfy the request. Eg:
517 # match the parameters of the host against the request. Acquisition
519 # to find hosts matching the parameters of the request.
520 for request in host_requests:
521 if request.host_id:
522 validation_requests.append(request)
524 require_hosts_requests.append(request)