)]}'
{"cyborg/common/exception.py":[{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"cf11fc65a63ebeec00cd28d7334f2a1811320599","unresolved":false,"context_lines":[{"line_number":224,"context_line":"class DeviceProfileNotFound(NotFound):"},{"line_number":225,"context_line":"    _msg_fmt \u003d _(\"DeviceProfile %(uuid)s could not be found.\")"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"class DeviceProfileNotFoundById(NotFound):"},{"line_number":228,"context_line":"    _msg_fmt \u003d _(\"DeviceProfile %(id)s could not be found.\")"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"class DeviceProfileNotFoundByName(NotFound):"},{"line_number":231,"context_line":"    _msg_fmt \u003d _(\"DeviceProfile %(name)s could not be found.\")"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"class DeployableNotFound(NotFound):"},{"line_number":234,"context_line":"    _msg_fmt \u003d _(\"Deployable %(uuid)s could not be found.\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_e28a5111","line":231,"range":{"start_line":227,"start_character":0,"end_line":231,"end_character":62},"updated":"2019-12-24 14:00:56.000000000","message":"Hi Shaohe. About this exception, please see this patch:\nhttps://review.opendev.org/#/c/700262/","commit_id":"dc28d76229db876d56738c72ddfb217ccc06ebdc"}],"cyborg/objects/ext_arq.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"2858a3a4dae2b63132e4f79c03058ae14db98f24","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                    resource\u003d\u0027attach handle\u0027,"},{"line_number":242,"context_line":"                    msg\u003d\u0027\u0027)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        if db_extarq[\u0027deployable_id\u0027]:"},{"line_number":245,"context_line":"            dep \u003d objects.Deployable.get_by_id(db_extarq[\u0027deployable_id\u0027])"},{"line_number":246,"context_line":"            db_extarq[\u0027deployable_uuid\u0027] \u003d dep.uuid"},{"line_number":247,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_3e1c8063","line":244,"range":{"start_line":244,"start_character":8,"end_line":244,"end_character":38},"updated":"2020-02-17 08:21:46.000000000","message":"The py37 failed looks real, if the \u0027deployable_id\u0027 does not contain in db_extarq, it will raise the KeyError: \u0027deployable_id\u0027. So I think here need to check the \u0027deployable_id\u0027, such as:\n\nif \u0027deployable_id\u0027 in db_extarq and db_extarq[\u0027deployable_id\u0027]:\n    ... ...\n\nTemporary py37 error:https://901249311ab7ecbd3f16-b4ffb63fd72a873cfc8fbd2b6e893a02.ssl.cf2.rackcdn.com/700504/9/check/openstack-tox-py36/4327115/testr_results.html","commit_id":"d92c0b099e1767a7e31405f65ad4a97851182387"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"bdc25313bc303d1d34a7648771356ed5150515c9","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                    resource\u003d\u0027attach handle\u0027,"},{"line_number":242,"context_line":"                    msg\u003d\u0027\u0027)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        if db_extarq[\u0027deployable_id\u0027]:"},{"line_number":245,"context_line":"            dep \u003d objects.Deployable.get_by_id(db_extarq[\u0027deployable_id\u0027])"},{"line_number":246,"context_line":"            db_extarq[\u0027deployable_uuid\u0027] \u003d dep.uuid"},{"line_number":247,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_1ec8a41d","line":244,"range":{"start_line":244,"start_character":8,"end_line":244,"end_character":38},"in_reply_to":"3fa7e38b_3e1c8063","updated":"2020-02-17 09:26:18.000000000","message":"Here is not necessary to add the \"\u0027deployable_id\u0027 in db_extarq check\", the \u0027deployable_id\u0027 key in the ExtArq Object [1], if we can delploy Cyborg successfuly, it will contains in extarq.\n\n[1]https://github.com/openstack/cyborg/blob/master/cyborg/db/sqlalchemy/models.py#L235","commit_id":"d92c0b099e1767a7e31405f65ad4a97851182387"}],"cyborg/objects/extarq/ext_arq_job.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"118f6702a127886392de893e40bcf98296292244","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            LOG.error(\"ARQs(%s) bind status sync error, status is %s. \""},{"line_number":115,"context_line":"                      \"For some ARQs %s are deleted.\","},{"line_number":116,"context_line":"                      arq_uuids, constants.ARQ_BIND_STATUS_FAILED,"},{"line_number":117,"context_line":"                      set(arq_uuids) - set([ea.arq.uuid for ea in extarqs]))"},{"line_number":118,"context_line":"            cls.bind_notify(device_profile_name, instance_uuid,"},{"line_number":119,"context_line":"                            constants.ARQ_BIND_STATUS_FAILED)"},{"line_number":120,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_f7a8e38b","line":117,"updated":"2020-01-18 18:41:19.000000000","message":"Better to separate bug fixes from UT changes. Can you open a separate patch for these and rebase it on top of https://review.opendev.org/700261?","commit_id":"7252701633c2f989d166b20327edae80c6c7144d"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"971139428b9f01932e8ffbdc8f6a4b1adb9b37cf","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            LOG.error(\"ARQs(%s) bind status sync error, status is %s. \""},{"line_number":115,"context_line":"                      \"For some ARQs %s are deleted.\","},{"line_number":116,"context_line":"                      arq_uuids, constants.ARQ_BIND_STATUS_FAILED,"},{"line_number":117,"context_line":"                      set(arq_uuids) - set([ea.arq.uuid for ea in extarqs]))"},{"line_number":118,"context_line":"            cls.bind_notify(device_profile_name, instance_uuid,"},{"line_number":119,"context_line":"                            constants.ARQ_BIND_STATUS_FAILED)"},{"line_number":120,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_7ada9ae6","line":117,"in_reply_to":"3fa7e38b_97d5efba","updated":"2020-01-19 02:48:21.000000000","message":"\u003e Split into https://review.opendev.org/703253\n\nSplit it OK, but the new patch should before this patch. \nOr this patch will failed.","commit_id":"7252701633c2f989d166b20327edae80c6c7144d"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"e00f5f668c0722351a12be94bab91eb9bda07256","unresolved":false,"context_lines":[{"line_number":114,"context_line":"            LOG.error(\"ARQs(%s) bind status sync error, status is %s. \""},{"line_number":115,"context_line":"                      \"For some ARQs %s are deleted.\","},{"line_number":116,"context_line":"                      arq_uuids, constants.ARQ_BIND_STATUS_FAILED,"},{"line_number":117,"context_line":"                      set(arq_uuids) - set([ea.arq.uuid for ea in extarqs]))"},{"line_number":118,"context_line":"            cls.bind_notify(device_profile_name, instance_uuid,"},{"line_number":119,"context_line":"                            constants.ARQ_BIND_STATUS_FAILED)"},{"line_number":120,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_97d5efba","line":117,"in_reply_to":"3fa7e38b_f7a8e38b","updated":"2020-01-18 20:47:45.000000000","message":"Split into https://review.opendev.org/703253","commit_id":"7252701633c2f989d166b20327edae80c6c7144d"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"118f6702a127886392de893e40bcf98296292244","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                      set(arq_uuids) - set([ea.arq.uuid for ea in extarqs]))"},{"line_number":118,"context_line":"            cls.bind_notify(device_profile_name, instance_uuid,"},{"line_number":119,"context_line":"                            constants.ARQ_BIND_STATUS_FAILED)"},{"line_number":120,"context_line":"            return"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        status \u003d constants.ARQ_BIND_STATUS_FINISH"},{"line_number":123,"context_line":"        for extarq in extarqs:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_57c45760","line":120,"updated":"2020-01-18 18:41:19.000000000","message":"This is a bug fix. Better to separate it from UT changes.","commit_id":"7252701633c2f989d166b20327edae80c6c7144d"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"e00f5f668c0722351a12be94bab91eb9bda07256","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                      set(arq_uuids) - set([ea.arq.uuid for ea in extarqs]))"},{"line_number":118,"context_line":"            cls.bind_notify(device_profile_name, instance_uuid,"},{"line_number":119,"context_line":"                            constants.ARQ_BIND_STATUS_FAILED)"},{"line_number":120,"context_line":"            return"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        status \u003d constants.ARQ_BIND_STATUS_FINISH"},{"line_number":123,"context_line":"        for extarq in extarqs:"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_b7d02bc8","line":120,"in_reply_to":"3fa7e38b_57c45760","updated":"2020-01-18 20:47:45.000000000","message":"Split into https://review.opendev.org/703253","commit_id":"7252701633c2f989d166b20327edae80c6c7144d"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"118f6702a127886392de893e40bcf98296292244","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                          uuid, status)"},{"line_number":131,"context_line":"                break"},{"line_number":132,"context_line":"            elif state in constants.ARQ_OUFOF_BIND_FLOW + ["},{"line_number":133,"context_line":"                constants.ARQ_BIND_FAILED]:"},{"line_number":134,"context_line":"                # OPEN ignore ARQ_OUFOF_BIND_FLOW?"},{"line_number":135,"context_line":"                status \u003d constants.ARQ_BIND_STATUS_FAILED"},{"line_number":136,"context_line":"                LOG.error(\"ARQs(%s) bind status sync error, status is %s.\","}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_179c9f6e","line":133,"updated":"2020-01-18 18:41:19.000000000","message":"Same here.","commit_id":"7252701633c2f989d166b20327edae80c6c7144d"},{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"e00f5f668c0722351a12be94bab91eb9bda07256","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                          uuid, status)"},{"line_number":131,"context_line":"                break"},{"line_number":132,"context_line":"            elif state in constants.ARQ_OUFOF_BIND_FLOW + ["},{"line_number":133,"context_line":"                constants.ARQ_BIND_FAILED]:"},{"line_number":134,"context_line":"                # OPEN ignore ARQ_OUFOF_BIND_FLOW?"},{"line_number":135,"context_line":"                status \u003d constants.ARQ_BIND_STATUS_FAILED"},{"line_number":136,"context_line":"                LOG.error(\"ARQs(%s) bind status sync error, status is %s.\","}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_57df77d6","line":133,"in_reply_to":"3fa7e38b_179c9f6e","updated":"2020-01-18 20:47:45.000000000","message":"Split into https://review.opendev.org/703253","commit_id":"7252701633c2f989d166b20327edae80c6c7144d"}],"cyborg/tests/unit/api/controllers/v2/test_arqs.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"2858a3a4dae2b63132e4f79c03058ae14db98f24","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        for in_extarq, out_arq in zip(self.fake_extarqs, out_arqs):"},{"line_number":102,"context_line":"            self._validate_arq(in_extarq.arq, out_arq)"},{"line_number":103,"context_line":"        for idx, out_arq in enumerate(out_arqs):"},{"line_number":104,"context_line":"            dp_group_id \u003d idx"},{"line_number":105,"context_line":"            self.assertEqual(dp_group_id, out_arq[\u0027device_profile_group_id\u0027])"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    @mock.patch(\u0027cyborg.objects.DeviceProfile.get_by_name\u0027)"},{"line_number":108,"context_line":"    @mock.patch(\u0027cyborg.objects.ExtARQ.create\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_83c51f0b","line":105,"range":{"start_line":104,"start_character":12,"end_line":105,"end_character":77},"updated":"2020-02-17 08:21:46.000000000","message":"How about remove the \"dp_group_id\", only use \"idx\" to assert. or use \"dp_group_id\" instead of \"idx\" in for cycle?\n\nThe middle parameter \u0027idx\u0027 is not do anything.","commit_id":"d92c0b099e1767a7e31405f65ad4a97851182387"}],"cyborg/tests/unit/fake_extarq.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"118f6702a127886392de893e40bcf98296292244","unresolved":false,"context_lines":[{"line_number":65,"context_line":"         \"device_rp_uuid\": \"a1ec17f2-0051-4737-bac4-f074d8a01a9c\","},{"line_number":66,"context_line":"         },"},{"line_number":67,"context_line":"        {\"uuid\": \"292b2fa2-0831-484c-aeac-09c794428a5d\","},{"line_number":68,"context_line":"         \"device_profile_group_id\": 2,"},{"line_number":69,"context_line":"         \"device_rp_uuid\": \"a1ec17f2-0051-4737-bac4-f074d8a01a9c\","},{"line_number":70,"context_line":"         },"},{"line_number":71,"context_line":"        {\"uuid\": \"3049ad04-a2b1-40a3-b9c8-480a5e661645\","}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_978f2f2e","line":68,"updated":"2020-01-18 18:41:19.000000000","message":"Two ARQs may have same device profile group id. We want to test that scenario too.","commit_id":"7252701633c2f989d166b20327edae80c6c7144d"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"1b9877a6efb35a64870130d21a6802c46befd875","unresolved":false,"context_lines":[{"line_number":65,"context_line":"         \"device_rp_uuid\": \"a1ec17f2-0051-4737-bac4-f074d8a01a9c\","},{"line_number":66,"context_line":"         },"},{"line_number":67,"context_line":"        {\"uuid\": \"292b2fa2-0831-484c-aeac-09c794428a5d\","},{"line_number":68,"context_line":"         \"device_profile_group_id\": 2,"},{"line_number":69,"context_line":"         \"device_rp_uuid\": \"a1ec17f2-0051-4737-bac4-f074d8a01a9c\","},{"line_number":70,"context_line":"         },"},{"line_number":71,"context_line":"        {\"uuid\": \"3049ad04-a2b1-40a3-b9c8-480a5e661645\","}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_7af37a6e","line":68,"in_reply_to":"3fa7e38b_978f2f2e","updated":"2020-01-19 02:51:51.000000000","message":"\u003e Two ARQs may have same device profile group id. We want to test\n \u003e that scenario too.\nbut currently the UT can not cover this corner. \nmaybe we should test this corner in DB API. we can setup a sqlit DB to test this corner to make sure we allow different ARQ ref same DP id.","commit_id":"7252701633c2f989d166b20327edae80c6c7144d"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"bdc25313bc303d1d34a7648771356ed5150515c9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            \"accel:bitstream_id\": \"b069d97a-010a-4057-b70d-eca2b337fc9c\","},{"line_number":56,"context_line":"            \"accel:function_id\": \"25453786-03e0-4ee7-a640-969eb5a5aa44\"}},"},{"line_number":57,"context_line":"    ]"},{"line_number":58,"context_line":"    arqs \u003d [  # Corresponds to 1st device profile in fake_device)profile.py"},{"line_number":59,"context_line":"        {\"uuid\": \"a097fefa-da62-4630-8e8b-424c0e3426dc\","},{"line_number":60,"context_line":"         \"device_profile_group_id\": 0,"},{"line_number":61,"context_line":"         \"device_rp_uuid\": \"8787595e-9954-49f8-b5c1-cdb55b59062f\","},{"line_number":62,"context_line":"         },"},{"line_number":63,"context_line":"        {\"uuid\": \"aa140114-4869-45ea-8213-45f530804b0f\","},{"line_number":64,"context_line":"         \"device_profile_group_id\": 1,"},{"line_number":65,"context_line":"         \"device_rp_uuid\": \"a1ec17f2-0051-4737-bac4-f074d8a01a9c\","},{"line_number":66,"context_line":"         },"},{"line_number":67,"context_line":"        {\"uuid\": \"292b2fa2-0831-484c-aeac-09c794428a5d\","},{"line_number":68,"context_line":"         \"device_profile_group_id\": 2,"},{"line_number":69,"context_line":"         \"device_rp_uuid\": \"a1ec17f2-0051-4737-bac4-f074d8a01a9c\","},{"line_number":70,"context_line":"         },"},{"line_number":71,"context_line":"        {\"uuid\": \"3049ad04-a2b1-40a3-b9c8-480a5e661645\","},{"line_number":72,"context_line":"         \"device_profile_group_id\": 3,"},{"line_number":73,"context_line":"         \"device_rp_uuid\": \"57455a49-bde4-490e-9179-9aa84a3870bb\","},{"line_number":74,"context_line":"         },"},{"line_number":75,"context_line":"        {\"uuid\": \"3a9a07e7-d126-47a5-bf11-dcc04f9e60ff\","},{"line_number":76,"context_line":"         \"device_profile_group_id\": 4,"},{"line_number":77,"context_line":"         \"device_rp_uuid\": \"fbd485e1-40b1-4a7e-84b9-f6b6959114a4\","},{"line_number":78,"context_line":"         },"},{"line_number":79,"context_line":"    ]"},{"line_number":80,"context_line":"    new_arqs \u003d []"},{"line_number":81,"context_line":"    for idx, new_arq in enumerate(arqs):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_de676c51","line":78,"range":{"start_line":58,"start_character":4,"end_line":78,"end_character":11},"updated":"2020-02-17 09:26:18.000000000","message":"In ExtArq model [1], there are so many attribute in, and this fake arqs not contains more (such as \u0027deployable_id\u0027), can you add the lost attribute key, otherwise, it will be raise the exception when you use this fake data to call some functions in [2].\n\n[1]https://github.com/openstack/cyborg/blob/master/cyborg/db/sqlalchemy/models.py#L196-L237\n\n[2]https://github.com/openstack/cyborg/blob/master/cyborg/objects/ext_arq.py\n\nThat\u0027s why the py36 failed, raise the \" KeyError: \u0027deployable_id\u0027\".","commit_id":"d92c0b099e1767a7e31405f65ad4a97851182387"}],"cyborg/tests/unit/objects/test_ext_arq_job.py":[{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"d274f2888863e83b25d84ccfd16f79964af9e7cf","unresolved":false,"context_lines":[{"line_number":271,"context_line":"    @mock.patch(\u0027cyborg.objects.ext_arq.ExtARQJobMixin.check_bindings_result\u0027)"},{"line_number":272,"context_line":"    def test_job_monitor_with_job_exception(self, mock_result):"},{"line_number":273,"context_line":"        works \u003d utils.ThreadWorks()"},{"line_number":274,"context_line":"        err_job \u003d works.spawn(lambda x: x / 0, 1)"},{"line_number":275,"context_line":"        good_job \u003d works.spawn(lambda x: x, 1)"},{"line_number":276,"context_line":"        works_generator \u003d works.get_workers_result("},{"line_number":277,"context_line":"            [err_job, good_job], timeout\u003dCONF.bind_timeout)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_7e47fc53","line":274,"range":{"start_line":274,"start_character":30,"end_line":274,"end_character":45},"updated":"2020-01-17 11:34:45.000000000","message":"This will raise a ZeroDivisionError exception. \nI add an err_job here to cover https://review.opendev.org/#/c/700261","commit_id":"baa744a2ce2e81b43aeea90a2db804bf9e57cdd6"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"2858a3a4dae2b63132e4f79c03058ae14db98f24","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        obj_extarq.arq.state \u003d constants.ARQ_UNBOUND"},{"line_number":118,"context_line":"        instance_uuid \u003d obj_extarq.arq.instance_uuid"},{"line_number":119,"context_line":"        uuid \u003d obj_extarq.arq.uuid"},{"line_number":120,"context_line":"        # mock_job_get_ext_arq.side_effect \u003d obj_extarq"},{"line_number":121,"context_line":"        dep_uuid \u003d self.deployable_uuids[0]"},{"line_number":122,"context_line":"        fake_dep \u003d fake_deployable.fake_deployable_obj(self.context,"},{"line_number":123,"context_line":"                                                       uuid\u003ddep_uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"3fa7e38b_4335e7f3","line":120,"range":{"start_line":120,"start_character":8,"end_line":120,"end_character":55},"updated":"2020-02-17 08:21:46.000000000","message":"Did you need this? if not, I think it can be removed.","commit_id":"d92c0b099e1767a7e31405f65ad4a97851182387"}]}
