)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"9f2466e370d390be89adfc2d85e7319c9adfe324","unresolved":false,"context_lines":[{"line_number":14,"context_line":"This patch also adds dependency package cursive which is used"},{"line_number":15,"context_line":"in [1]."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"[1]. https://github.com/openstack/cyborg/blob/6740c3c0c50280f09ab0e32c9e033240fc65c8d7/cyborg/image/glance.py#L30"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I9e80dcfed54147c942f90c696e483fa6db842dde"},{"line_number":20,"context_line":"Story: 2007045"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_45457a43","line":17,"updated":"2020-01-20 10:27:19.000000000","message":"nit: I think we can use the import context instead of this link， maybe the link in invalid, the reviewers will benot get the correct info.  Or add some related info.","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"80c096e03b4abb64a38ae5f9355c92a4b2779bae","unresolved":false,"context_lines":[{"line_number":14,"context_line":"This patch also adds dependency package cursive which is used"},{"line_number":15,"context_line":"in [1]."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"[1]. https://github.com/openstack/cyborg/blob/6740c3c0c50280f09ab0e32c9e033240fc65c8d7/cyborg/image/glance.py#L30"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I9e80dcfed54147c942f90c696e483fa6db842dde"},{"line_number":20,"context_line":"Story: 2007045"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_b71ed25b","line":17,"in_reply_to":"3fa7e38b_45457a43","updated":"2020-01-21 07:32:27.000000000","message":"I think it is ok to put this link here as a supplement. :) cursive is already mentioned in the commit message.","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"221c2a47ede65de9a8590fcc6c3414cbabd86e95","unresolved":false,"context_lines":[{"line_number":14,"context_line":"This patch also adds dependency package cursive which is used"},{"line_number":15,"context_line":"in [1]."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"[1]. https://github.com/openstack/cyborg/blob/6740c3c0c50280f09ab0e32c9e033240fc65c8d7/cyborg/image/glance.py#L30"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I9e80dcfed54147c942f90c696e483fa6db842dde"},{"line_number":20,"context_line":"Story: 2007045"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_2bb60fdd","line":17,"in_reply_to":"3fa7e38b_45457a43","updated":"2020-01-20 13:10:31.000000000","message":"Thanks for your worry. This link is a tag. It does not point to the master branch, and it will not fail unless it is in special circumstances.","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"}],"cyborg/common/exception.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"22dfb8218b0de2017fa390aa3dbe9835aaaabcc5","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    msg_fmt \u003d _(\"Service %(service_id)s could not be found.\")"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"class ControlpathIDNotFound(NotFound):"},{"line_number":204,"context_line":"    _msg_fmt \u003d _(\"ControlpathID %(uuid)s could not be found.\")"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_e693534d","side":"PARENT","line":203,"range":{"start_line":203,"start_character":6,"end_line":203,"end_character":27},"updated":"2020-01-20 01:43:23.000000000","message":"How about this one? IMO, it\u0027s the resource same as Image, device etc.","commit_id":"a39f816b554235027ef786f57f2eec00f885bcb1"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f8d3ffff05e7befa29692d26e985a2d73a877012","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    msg_fmt \u003d _(\"Service %(service_id)s could not be found.\")"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"class ControlpathIDNotFound(NotFound):"},{"line_number":204,"context_line":"    _msg_fmt \u003d _(\"ControlpathID %(uuid)s could not be found.\")"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_260f2b8c","side":"PARENT","line":203,"range":{"start_line":203,"start_character":6,"end_line":203,"end_character":27},"in_reply_to":"3fa7e38b_e693534d","updated":"2020-01-20 01:56:28.000000000","message":"Ye. Will update it in the future.","commit_id":"a39f816b554235027ef786f57f2eec00f885bcb1"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0c2737774fd29eec11ada56edb60d4b0ecb2df2d","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                 \"Expected: %(expected)s\")"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"# TODO() Merge other NotFound in this generic one?"},{"line_number":411,"context_line":"class ResourceNotFound(NotFound):"},{"line_number":412,"context_line":"    _msg_fmt \u003d _(\"%(resource)s not found %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_461267b5","side":"PARENT","line":410,"range":{"start_line":410,"start_character":9,"end_line":410,"end_character":50},"updated":"2020-01-20 01:51:51.000000000","message":"I think we cannot unify all NotFound exception, such as the Placement, Quota, Service etc. each exception need a suited message to the target resource. So，we can only reduce the generation of NotFound exception classes as much as possible.\nTherefor, I think this combine is make sense.","commit_id":"a39f816b554235027ef786f57f2eec00f885bcb1"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6d09ee44f6ede5c7904dbdf43ee3d1b3a1032443","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                 \"Expected: %(expected)s\")"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"# TODO() Merge other NotFound in this generic one?"},{"line_number":403,"context_line":"class ResourceNotFound(NotFound):"},{"line_number":404,"context_line":"    _msg_fmt \u003d _(\"%(resource)s not found %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_e26a5cea","line":402,"range":{"start_line":402,"start_character":0,"end_line":402,"end_character":50},"updated":"2020-01-20 10:13:57.000000000","message":"should we remove this comment now?","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"9f2466e370d390be89adfc2d85e7319c9adfe324","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                 \"Expected: %(expected)s\")"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"# TODO() Merge other NotFound in this generic one?"},{"line_number":403,"context_line":"class ResourceNotFound(NotFound):"},{"line_number":404,"context_line":"    _msg_fmt \u003d _(\"%(resource)s not found %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_4517ba47","line":402,"range":{"start_line":402,"start_character":0,"end_line":402,"end_character":50},"in_reply_to":"3fa7e38b_e26a5cea","updated":"2020-01-20 10:27:19.000000000","message":"I would like the ControlpathIDNotFound exception can be replace too，I think it’s sample. \n\nAnd then, I think this TODO can be removed.","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"221c2a47ede65de9a8590fcc6c3414cbabd86e95","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                 \"Expected: %(expected)s\")"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"# TODO() Merge other NotFound in this generic one?"},{"line_number":403,"context_line":"class ResourceNotFound(NotFound):"},{"line_number":404,"context_line":"    _msg_fmt \u003d _(\"%(resource)s not found %(msg)s\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_0bd8f321","line":402,"range":{"start_line":402,"start_character":0,"end_line":402,"end_character":50},"in_reply_to":"3fa7e38b_e26a5cea","updated":"2020-01-20 13:10:31.000000000","message":"Thanks xinran,bailin. Will use another patch to modify ControlpathIDNotFound and add related UT, then will consider remove this hint.","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"}],"cyborg/tests/unit/image/test_glance.py":[{"author":{"_account_id":21672,"name":"Sundar Nadathur","email":"sundar.nadathur@intel.com","username":"nsundar"},"change_message_id":"30cf6df828c2a4aa4f3e3c630ea8c4ff603e798f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from cyborg.tests.unit.db import base"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestExceptionTranslations(base.DbTestCase):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_client_notfound_converts_to_imagenotfound(self):"},{"line_number":26,"context_line":"        in_exc \u003d glanceclient.exc.NotFound(\u0027123\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_0eb65add","line":23,"updated":"2020-01-08 22:11:04.000000000","message":"Better name: TestImageClient","commit_id":"4fdf142a1985cac699e50ab89d7d091d2239fa07"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"d12f9d437ec0e99c7ab082d4bdcffafbc29f17d0","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from cyborg.tests.unit.db import base"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestExceptionTranslations(base.DbTestCase):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def test_client_notfound_converts_to_imagenotfound(self):"},{"line_number":26,"context_line":"        in_exc \u003d glanceclient.exc.NotFound(\u0027123\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_e49bdd12","line":23,"in_reply_to":"3fa7e38b_0eb65add","updated":"2020-01-09 01:58:08.000000000","message":"Hi Sundar. Thanks for your advice.For this part, it is just used for testing translation exception. For client testing, we can add a separate class later, like nova\u0027s[1][2].\n[1]. https://github.com/openstack/nova/blob/master/nova/tests/unit/image/test_glance.py#L298-L301\n[2]. https://github.com/openstack/nova/blob/master/nova/tests/unit/image/test_glance.py#L359","commit_id":"4fdf142a1985cac699e50ab89d7d091d2239fa07"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"22dfb8218b0de2017fa390aa3dbe9835aaaabcc5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2020 ZTE Corporation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_66a763aa","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":33},"updated":"2020-01-20 01:43:23.000000000","message":"nit: if not necessary, I think we can avoid add this tag.","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"80c096e03b4abb64a38ae5f9355c92a4b2779bae","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2020 ZTE Corporation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_14f56452","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":33},"in_reply_to":"3fa7e38b_66a763aa","updated":"2020-01-21 07:32:27.000000000","message":"Agree with Xinran.\nThis has impliedly consented in OpenStack.","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"6d09ee44f6ede5c7904dbdf43ee3d1b3a1032443","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2020 ZTE Corporation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_0247787c","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":33},"in_reply_to":"3fa7e38b_66a763aa","updated":"2020-01-20 10:13:57.000000000","message":"I think it is ok, the first one who create the file can add this. ;)","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f8d3ffff05e7befa29692d26e985a2d73a877012","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2020 ZTE Corporation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_c634174a","line":1,"range":{"start_line":1,"start_character":2,"end_line":1,"end_character":33},"in_reply_to":"3fa7e38b_66a763aa","updated":"2020-01-20 01:56:28.000000000","message":"Why not?","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"}],"requirements.txt":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"22dfb8218b0de2017fa390aa3dbe9835aaaabcc5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"mock\u003e\u003d2.0.0 # BSD"},{"line_number":30,"context_line":"python-glanceclient\u003e\u003d2.3.0 # Apache-2.0"},{"line_number":31,"context_line":"oslo.privsep\u003e\u003d1.32.0 # Apache-2.0"},{"line_number":32,"context_line":"cursive\u003e\u003d0.2.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"3fa7e38b_e6e113d1","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":14},"updated":"2020-01-20 01:43:23.000000000","message":"I think we need use the latest version of cursive(\u003e\u003d0.2.2).\nhttps://github.com/openstack/requirements/blob/master/upper-constraints.txt","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"0dc71bb349deb21eb75643db25d80c5d6cb566d8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"mock\u003e\u003d2.0.0 # BSD"},{"line_number":30,"context_line":"python-glanceclient\u003e\u003d2.3.0 # Apache-2.0"},{"line_number":31,"context_line":"oslo.privsep\u003e\u003d1.32.0 # Apache-2.0"},{"line_number":32,"context_line":"cursive\u003e\u003d0.2.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"3fa7e38b_26908bf3","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":14},"in_reply_to":"3fa7e38b_0681cfc2","updated":"2020-01-20 02:29:05.000000000","message":"I am okay. https://github.com/openstack/cyborg/blob/master/cyborg/image/glance.py#L30-L31 depends-on this, it is safe to bump to Cyborg. Cursive implements OpenStack-specific validation of digital signatures.","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f8d3ffff05e7befa29692d26e985a2d73a877012","unresolved":false,"context_lines":[{"line_number":29,"context_line":"mock\u003e\u003d2.0.0 # BSD"},{"line_number":30,"context_line":"python-glanceclient\u003e\u003d2.3.0 # Apache-2.0"},{"line_number":31,"context_line":"oslo.privsep\u003e\u003d1.32.0 # Apache-2.0"},{"line_number":32,"context_line":"cursive\u003e\u003d0.2.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"3fa7e38b_0681cfc2","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":14},"in_reply_to":"3fa7e38b_e6e113d1","updated":"2020-01-20 01:56:28.000000000","message":"This part code comes from nova[1]. This version has met the conditions. At the same time, we should be consistent with Nova, I don\u0027t think it is necessary to use the latest.\n[1]. https://github.com/openstack/nova/blob/master/requirements.txt#L65","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"}],"test-requirements.txt":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"22dfb8218b0de2017fa390aa3dbe9835aaaabcc5","unresolved":false,"context_lines":[{"line_number":19,"context_line":"pycodestyle\u003e\u003d2.0.0 # MIT License"},{"line_number":20,"context_line":"Pygments\u003e\u003d2.2.0 # BSD license"},{"line_number":21,"context_line":"os-resource-classes\u003e\u003d0.5.0 # Apache-2.0"},{"line_number":22,"context_line":"cursive\u003e\u003d0.2.1 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"3fa7e38b_a6cb1b49","line":22,"range":{"start_line":22,"start_character":0,"end_line":22,"end_character":14},"updated":"2020-01-20 01:43:23.000000000","message":"ditto","commit_id":"4bf582a849955d863fd0615af834c750397bb10d"}]}
