Esempio n. 1
0
 def __call__(self):
     self.task.logger.info("Pending")
     response = self._get_response()
     if self.status != "Failed":
         try:
             return self._process_response(response)
         except Exception as e:
             raise MetadataParseError(
                 f"Could not process MDAPI response: {str(e)}",
                 response=response)
Esempio n. 2
0
def test_finalize_result_mdapi_error(job_factory):
    job = job_factory(org_id="00Dxxxxxxxxxxxxxxx")
    response = MagicMock(text="text")
    try:
        with finalize_result(job):
            raise MetadataParseError("MDAPI error", response=response)
    except MetadataParseError:
        pass
    assert job.status == job.Status.failed
    assert job.exception == "MDAPI error\ntext"
Esempio n. 3
0
 def _process_response(self, response):
     metadata = []
     tags = [
         "createdById",
         "createdByName",
         "createdDate",
         "fileName",
         "fullName",
         "id",
         "lastModifiedById",
         "lastModifiedByName",
         "lastModifiedDate",
         "manageableState",
         "namespacePrefix",
         "type",
     ]
     # These tags will be interpreted into dates
     parse_dates = ["createdDate", "lastModifiedDate"]
     for result in parseString(
             response.content).getElementsByTagName("result"):
         result_data = {}
         # Parse fields
         for tag in tags:
             result_data[tag] = self._get_element_value(result, tag)
         # Parse dates
         for key in parse_dates:
             if result_data[key]:
                 try:
                     result_data[key] = parse_api_datetime(result_data[key])
                 except Exception as e:
                     raise MetadataParseError(
                         "Could not parse a datetime in the MDAPI response: {}, {}"
                         .format(str(e), str(result)),
                         response=response,
                     )
         metadata.append(result_data)
     self.metadata[self.metadata_type].extend(metadata)
     return self.metadata
Esempio n. 4
0
def test_finalize_result_mdapi_error(job_factory, caplog):
    job = job_factory(
        org_id="00Dxxxxxxxxxxxxxxx",
        plan__version__product__title="Test Product",
        plan__version__label="1.0",
    )
    response = MagicMock(text="text")
    try:
        with finalize_result(job):
            raise MetadataParseError("MDAPI error", response=response)
    except MetadataParseError:
        pass
    assert job.status == job.Status.failed
    assert "finalize_result" in job.exception  # includes traceback
    assert "MDAPI error\ntext" in job.exception

    log_record = next(r for r in caplog.records if "errored" in r.message)

    assert log_record.message == f"Job {job.id} errored"
    assert log_record.context["event"] == "job"
    assert log_record.context["context"] == "test-product/1.0/sample-plan"
    assert log_record.context["status"] == "error"
    assert "duration" in log_record.context