(self, op_name, dist_id = None, request_id = None, body = None, headers = None, retries = None)
| 527 | ## -------------------------------------------------- |
| 528 | |
| 529 | def send_request(self, op_name, dist_id = None, request_id = None, body = None, headers = None, retries = None): |
| 530 | if retries is None: |
| 531 | retries = self.config.max_retries |
| 532 | if headers is None: |
| 533 | headers = SortedDict(ignore_case = True) |
| 534 | operation = self.operations[op_name] |
| 535 | if body: |
| 536 | headers['content-type'] = 'text/plain' |
| 537 | request = self.create_request(operation, dist_id, request_id, headers) |
| 538 | conn = self.get_connection() |
| 539 | debug("send_request(): %s %s" % (request['method'], request['resource'])) |
| 540 | conn.c.request(request['method'], request['resource'], body, request['headers']) |
| 541 | http_response = conn.c.getresponse() |
| 542 | response = {} |
| 543 | response["status"] = http_response.status |
| 544 | response["reason"] = http_response.reason |
| 545 | response["headers"] = convertHeaderTupleListToDict(http_response.getheaders()) |
| 546 | response["data"] = http_response.read() |
| 547 | ConnMan.put(conn) |
| 548 | |
| 549 | debug("CloudFront: response: %r" % response) |
| 550 | |
| 551 | if response["status"] >= 500: |
| 552 | e = CloudFrontError(response) |
| 553 | if retries: |
| 554 | warning(u"Retrying failed request: %s (%s)" % (op_name, e)) |
| 555 | warning("Waiting %d sec..." % self._fail_wait(retries)) |
| 556 | time.sleep(self._fail_wait(retries)) |
| 557 | return self.send_request(op_name, dist_id, body = body, retries = retries - 1) |
| 558 | else: |
| 559 | raise e |
| 560 | |
| 561 | if response["status"] < 200 or response["status"] > 299: |
| 562 | raise CloudFrontError(response) |
| 563 | |
| 564 | return response |
| 565 | |
| 566 | def create_request(self, operation, dist_id = None, request_id = None, headers = None): |
| 567 | resource = cloudfront_resource + ( |
no test coverage detected