Пример #1
0
                def fully_inspected(res):
                    nonlocal got_error
                    try:
                        res = btinspect.stringify_inspect_doc(res)
                        _map = {"results": res}
                        _map["data_provider"] = repr(data_provider)
                        _map["started_at"] = started_at
                        _map["duration"] = timesofar(t0)

                        # when inspecting with "stats" mode, we can get huge number but mongo
                        # can't store more than 2^64, make sure to get rid of big nums there
                        def clean_big_nums(k, v):
                            # TODO: same with float/double? seems mongo handles more there ?
                            if isinstance(v, int) and v > 2**64:
                                return k, math.nan
                            else:
                                return k, v

                        dict_traverse(_map, clean_big_nums)
                        # register begin of inspection (differ slightly depending on type)
                        if "mapping" in mode and "errors" in res[
                                "mapping"] and "pre-mapping" in res["mapping"]:
                            registerer_obj.register_status("failed",
                                                           subkey="inspect",
                                                           inspect=_map)
                            got_error = InspectorError(
                                res["mapping"]["errors"])
                        else:
                            if data_provider_type == "source":
                                registerer_obj.register_status(
                                    "success", subkey="inspect", inspect=_map)
                            elif data_provider_type == "build":
                                registerer_obj.register_status(
                                    "success",
                                    job={"step": "inspect"},
                                    build={"inspect": _map})
                    except Exception as e:
                        self.logger.exception(
                            "Error while inspecting data: %s" % e)
                        got_error = e
                        if data_provider_type == "source":
                            registerer_obj.register_status("failed",
                                                           subkey="inspect",
                                                           err=repr(e))
                        elif data_provider_type == "build":
                            registerer_obj.register_status(
                                "failed", job={"err": repr(e)})
Пример #2
0
 def fully_inspected(res):
     nonlocal got_error
     try:
         res = btinspect.stringify_inspect_doc(res)
         _map = {"results": res}
         _map["data_provider"] = repr(data_provider)
         _map["started_at"] = started_at
         _map["duration"] = timesofar(t0)
         # register begin of inspection (differ slightly depending on type)
         if "mapping" in mode and "errors" in res[
                 "mapping"] and "pre-mapping" in res["mapping"]:
             registerer_obj.register_status("failed",
                                            subkey="inspect",
                                            inspect=_map)
             got_error = InspectorError(
                 res["mapping"]["errors"])
         else:
             if data_provider_type == "source":
                 registerer_obj.register_status(
                     "success", subkey="inspect", inspect=_map)
             elif data_provider_type == "build":
                 registerer_obj.register_status(
                     "success",
                     job={"step": "inspect"},
                     build={"inspect": _map})
     except Exception as e:
         self.logger.exception(
             "Error while inspecting data: %s" % e)
         got_error = e
         if data_provider_type == "source":
             registerer_obj.register_status("failed",
                                            subkey="inspect",
                                            err=repr(e))
         elif data_provider_type == "build":
             registerer_obj.register_status(
                 "failed", job={"err": repr(e)})