)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b12496417126daef6741a647d734c8cbf12b8f7e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Huawei manila driver support multi RestURLs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Add support for multi RestURLs"},{"line_number":10,"context_line":"- Add multi RestURLs unit tests"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint huawei-manila-driver-support-multi-resturls"},{"line_number":13,"context_line":"Change-Id: Iaecdd4761e388255af833a3e5b0bd1e1d42a0e22"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba3cc151_4b763fd8","line":10,"updated":"2015-07-08 10:25:07.000000000","message":"Please, add more details on that update. How can it be used?","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"9c3bc36c03bac06b751864281ed4aa96aa01f1bb","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Huawei manila driver support multi RestURLs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Add support for multi RestURLs"},{"line_number":10,"context_line":"- Add multi RestURLs unit tests"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint huawei-manila-driver-support-multi-resturls"},{"line_number":13,"context_line":"Change-Id: Iaecdd4761e388255af833a3e5b0bd1e1d42a0e22"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba3cc151_9d0777c9","line":10,"in_reply_to":"ba3cc151_4b763fd8","updated":"2015-07-09 10:56:01.000000000","message":"Done","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"de5cdf5bdef2af4c3dff272e6021ed937105c42a","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"RestURL is an access address of the REST interface."},{"line_number":13,"context_line":"Multi RestURLs can be configured in manila_huawei_conf.xml(separated by \";\")"},{"line_number":14,"context_line":"When one of the RestURL failed to connect, driver will retry another automaticly."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint huawei-manila-driver-support-multi-resturls"},{"line_number":17,"context_line":"Change-Id: Iaecdd4761e388255af833a3e5b0bd1e1d42a0e22"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ba3cc151_f456d528","line":14,"updated":"2015-07-09 08:17:31.000000000","message":"s/automaticly/automatically/","commit_id":"ddc488ab784defed6477e3766d547229eb882dae"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"4a166458d93a89d3d71859b1b616443341c223d8","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"RestURL is an access address of the REST interface."},{"line_number":13,"context_line":"Multi RestURLs can be configured in manila_huawei_conf.xml(separated by \";\")"},{"line_number":14,"context_line":"When one of the RestURL failed to connect, driver will retry another automaticly."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements: blueprint huawei-manila-driver-support-multi-resturls"},{"line_number":17,"context_line":"Change-Id: Iaecdd4761e388255af833a3e5b0bd1e1d42a0e22"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ba3cc151_897f2faa","line":14,"in_reply_to":"ba3cc151_f456d528","updated":"2015-07-09 10:56:17.000000000","message":"Done","commit_id":"ddc488ab784defed6477e3766d547229eb882dae"}],"manila/share/drivers/huawei/v3/helper.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"dac3b76f0a9f7cb435c33540923b37d51571a851","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %(url)s.\u0027"},{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \"{\u0027error\u0027:{\u0027code\u0027:-403,\\"},{"line_number":76,"context_line":"                       \u0027description\u0027:\u0027Connet server error\u0027}}\""},{"line_number":77,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"},{"line_number":78,"context_line":"            return res_json"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_2a85a758","line":76,"updated":"2015-07-03 02:11:15.000000000","message":"Connet -\u003e Connect","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"f03a5a79138a5faab1a9062a0f50d55e5ab29f33","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %(url)s.\u0027"},{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \"{\u0027error\u0027:{\u0027code\u0027:-403,\\"},{"line_number":76,"context_line":"                       \u0027description\u0027:\u0027Connet server error\u0027}}\""},{"line_number":77,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"},{"line_number":78,"context_line":"            return res_json"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_adb31197","line":76,"in_reply_to":"ba3cc151_2a85a758","updated":"2015-07-09 10:56:27.000000000","message":"Done","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"dac3b76f0a9f7cb435c33540923b37d51571a851","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        except Exception as err:"},{"line_number":83,"context_line":"            err_msg \u003d (_(\u0027JSON transfer error: %s.\u0027) % err)"},{"line_number":84,"context_line":"            LOG.error(err_msg)"},{"line_number":85,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        return res_json"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_aa99b7c5","line":85,"updated":"2015-07-03 02:11:15.000000000","message":"InvalidShare -\u003e InvalidInput","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"f03a5a79138a5faab1a9062a0f50d55e5ab29f33","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        except Exception as err:"},{"line_number":83,"context_line":"            err_msg \u003d (_(\u0027JSON transfer error: %s.\u0027) % err)"},{"line_number":84,"context_line":"            LOG.error(err_msg)"},{"line_number":85,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        return res_json"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_6da98923","line":85,"in_reply_to":"ba3cc151_aa99b7c5","updated":"2015-07-09 10:56:27.000000000","message":"Done","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"dac3b76f0a9f7cb435c33540923b37d51571a851","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        url_list \u003d urlstr.split(\";\")"},{"line_number":94,"context_line":"        deviceid \u003d None"},{"line_number":95,"context_line":"        for item_url in url_list:"},{"line_number":96,"context_line":"            url \u003d item_url + \"xx/sessions\""},{"line_number":97,"context_line":"            data \u003d jsonutils.dumps({\"username\": login_info[\u0027UserName\u0027],"},{"line_number":98,"context_line":"                                    \"password\": login_info[\u0027UserPassword\u0027],"},{"line_number":99,"context_line":"                                    \"scope\": \"0\"})"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_2ad36761","line":96,"updated":"2015-07-03 02:11:15.000000000","message":"Filter out Spaces and press enter.\nurl \u003d item_url.strip(\u0027\u0027).strip(\u0027\\n\u0027) + \"xx/sessions\"","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"f03a5a79138a5faab1a9062a0f50d55e5ab29f33","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        url_list \u003d urlstr.split(\";\")"},{"line_number":94,"context_line":"        deviceid \u003d None"},{"line_number":95,"context_line":"        for item_url in url_list:"},{"line_number":96,"context_line":"            url \u003d item_url + \"xx/sessions\""},{"line_number":97,"context_line":"            data \u003d jsonutils.dumps({\"username\": login_info[\u0027UserName\u0027],"},{"line_number":98,"context_line":"                                    \"password\": login_info[\u0027UserPassword\u0027],"},{"line_number":99,"context_line":"                                    \"scope\": \"0\"})"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_4d6925f8","line":96,"in_reply_to":"ba3cc151_2ad36761","updated":"2015-07-09 10:56:27.000000000","message":"Done","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"dac3b76f0a9f7cb435c33540923b37d51571a851","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                    \"scope\": \"0\"})"},{"line_number":100,"context_line":"            result \u003d self.do_call(url, data)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"            if result[\u0027error\u0027][\u0027code\u0027] \u003d\u003d constants.ERROR_CONNECT_TO_SERVER:"},{"line_number":103,"context_line":"                err_msg \u003d (_(\"Login to %s faild, try another\") % item_url)"},{"line_number":104,"context_line":"                LOG.error(err_msg)"},{"line_number":105,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_8abe33ac","line":102,"updated":"2015-07-03 02:11:15.000000000","message":"If error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER， Cannot transfer to another url.\n\nPlease add result[\u0027error\u0027][\u0027code\u0027] \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"f03a5a79138a5faab1a9062a0f50d55e5ab29f33","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                                    \"scope\": \"0\"})"},{"line_number":100,"context_line":"            result \u003d self.do_call(url, data)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"            if result[\u0027error\u0027][\u0027code\u0027] \u003d\u003d constants.ERROR_CONNECT_TO_SERVER:"},{"line_number":103,"context_line":"                err_msg \u003d (_(\"Login to %s faild, try another\") % item_url)"},{"line_number":104,"context_line":"                LOG.error(err_msg)"},{"line_number":105,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_ad7a31bb","line":102,"in_reply_to":"ba3cc151_8abe33ac","updated":"2015-07-09 10:56:27.000000000","message":"Done","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"dac3b76f0a9f7cb435c33540923b37d51571a851","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            if (result[\u0027error\u0027][\u0027code\u0027] !\u003d 0) or (\"data\" not in result):"},{"line_number":108,"context_line":"                err_msg \u003d (_(\"Login error, reason is %s.\") % result)"},{"line_number":109,"context_line":"                LOG.error(err_msg)"},{"line_number":110,"context_line":"                raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"            LOG.debug(\u0027Login success: %(url)s\\n\u0027,"},{"line_number":113,"context_line":"                      {\u0027url\u0027: item_url})"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_0a7ea369","line":110,"updated":"2015-07-03 02:11:15.000000000","message":"InvalidShare -\u003e InvalidInput","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"f03a5a79138a5faab1a9062a0f50d55e5ab29f33","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            if (result[\u0027error\u0027][\u0027code\u0027] !\u003d 0) or (\"data\" not in result):"},{"line_number":108,"context_line":"                err_msg \u003d (_(\"Login error, reason is %s.\") % result)"},{"line_number":109,"context_line":"                LOG.error(err_msg)"},{"line_number":110,"context_line":"                raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"            LOG.debug(\u0027Login success: %(url)s\\n\u0027,"},{"line_number":113,"context_line":"                      {\u0027url\u0027: item_url})"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_8d7badbd","line":110,"in_reply_to":"ba3cc151_0a7ea369","updated":"2015-07-09 10:56:27.000000000","message":"Done","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"dac3b76f0a9f7cb435c33540923b37d51571a851","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        if deviceid is None:"},{"line_number":120,"context_line":"            err_msg \u003d (_(\"All url Login fail\"))"},{"line_number":121,"context_line":"            LOG.error(err_msg)"},{"line_number":122,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        return deviceid"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_4aefcb1d","line":122,"updated":"2015-07-03 02:11:15.000000000","message":"InvalidShare -\u003e InvalidInput","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"f03a5a79138a5faab1a9062a0f50d55e5ab29f33","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        if deviceid is None:"},{"line_number":120,"context_line":"            err_msg \u003d (_(\"All url Login fail\"))"},{"line_number":121,"context_line":"            LOG.error(err_msg)"},{"line_number":122,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        return deviceid"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_ad61d106","line":122,"in_reply_to":"ba3cc151_4aefcb1d","updated":"2015-07-09 10:56:27.000000000","message":"Done","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b12496417126daef6741a647d734c8cbf12b8f7e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            \"Content-Type\": \"application/json\","},{"line_number":44,"context_line":"        }"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def do_call(self, url, data\u003dNone, method\u003dNone):"},{"line_number":47,"context_line":"        \"\"\"Send requests to server."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        Send HTTPS call, get response in JSON."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_4b0b9f2a","line":46,"updated":"2015-07-08 10:25:07.000000000","message":"How rename of this func is related to the goal of commit?","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"9c3bc36c03bac06b751864281ed4aa96aa01f1bb","unresolved":false,"context_lines":[{"line_number":43,"context_line":"            \"Content-Type\": \"application/json\","},{"line_number":44,"context_line":"        }"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def do_call(self, url, data\u003dNone, method\u003dNone):"},{"line_number":47,"context_line":"        \"\"\"Send requests to server."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        Send HTTPS call, get response in JSON."}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_770df28d","line":46,"in_reply_to":"ba3cc151_4b0b9f2a","updated":"2015-07-09 10:56:01.000000000","message":"I definde another func named \"call\"","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b12496417126daef6741a647d734c8cbf12b8f7e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        except Exception as err:"},{"line_number":73,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %(url)s.\u0027"},{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \"{\u0027error\u0027:{\u0027code\u0027:constants.ERROR_CONNECT_TO_SERVER,\\"},{"line_number":76,"context_line":"                       \u0027description\u0027:\u0027Connect server error\u0027}}\""},{"line_number":77,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"},{"line_number":78,"context_line":"            return res_json"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_0b011706","line":75,"updated":"2015-07-08 10:25:07.000000000","message":"Here you define string.","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"9c3bc36c03bac06b751864281ed4aa96aa01f1bb","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        except Exception as err:"},{"line_number":73,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %(url)s.\u0027"},{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \"{\u0027error\u0027:{\u0027code\u0027:constants.ERROR_CONNECT_TO_SERVER,\\"},{"line_number":76,"context_line":"                       \u0027description\u0027:\u0027Connect server error\u0027}}\""},{"line_number":77,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"},{"line_number":78,"context_line":"            return res_json"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_17b34699","line":75,"in_reply_to":"ba3cc151_0b011706","updated":"2015-07-09 10:56:01.000000000","message":"I will fix it:\njson_msg \u003d \u0027{\"error\":{\"code\":%s,\u0027 \\\n           \u0027\"description\":\"Connet server error\"}}\u0027 \\\n           % constants.ERROR_CONNECT_TO_SERVER","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b12496417126daef6741a647d734c8cbf12b8f7e","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \"{\u0027error\u0027:{\u0027code\u0027:constants.ERROR_CONNECT_TO_SERVER,\\"},{"line_number":76,"context_line":"                       \u0027description\u0027:\u0027Connect server error\u0027}}\""},{"line_number":77,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"},{"line_number":78,"context_line":"            return res_json"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_b62c0e9a","line":77,"updated":"2015-07-08 10:25:07.000000000","message":"Here you transform this string to dict. Why? Why not using dict at once?","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"285de44714668d56e9b5d51bd8671e0cf63e56f2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \"{\u0027error\u0027:{\u0027code\u0027:constants.ERROR_CONNECT_TO_SERVER,\\"},{"line_number":76,"context_line":"                       \u0027description\u0027:\u0027Connect server error\u0027}}\""},{"line_number":77,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"},{"line_number":78,"context_line":"            return res_json"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ba490c62","line":77,"in_reply_to":"ba3cc151_577d396b","updated":"2015-07-09 12:02:56.000000000","message":"I think it\u0027s better to make it consistent with line81","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b67127563ccdd6568e41f88ce783ab76675d0f06","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \"{\u0027error\u0027:{\u0027code\u0027:constants.ERROR_CONNECT_TO_SERVER,\\"},{"line_number":76,"context_line":"                       \u0027description\u0027:\u0027Connect server error\u0027}}\""},{"line_number":77,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"},{"line_number":78,"context_line":"            return res_json"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_577d396b","line":77,"in_reply_to":"ba3cc151_7de873b3","updated":"2015-07-09 11:14:38.000000000","message":"This is not testing module. It should not perform redundant actions.","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"9c3bc36c03bac06b751864281ed4aa96aa01f1bb","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \"{\u0027error\u0027:{\u0027code\u0027:constants.ERROR_CONNECT_TO_SERVER,\\"},{"line_number":76,"context_line":"                       \u0027description\u0027:\u0027Connect server error\u0027}}\""},{"line_number":77,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"},{"line_number":78,"context_line":"            return res_json"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_7de873b3","line":77,"in_reply_to":"ba3cc151_b62c0e9a","updated":"2015-07-09 10:56:01.000000000","message":"I want to simulate a socket response,which is a string.","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b67127563ccdd6568e41f88ce783ab76675d0f06","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            result \u003d self.do_call(url, data)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"            if (result[\u0027error\u0027][\u0027code\u0027] !\u003d 0) or (\"data\" not in result):"},{"line_number":103,"context_line":"                err_msg \u003d (_(\"Login to %s faild, try another\") % item_url)"},{"line_number":104,"context_line":"                LOG.error(err_msg)"},{"line_number":105,"context_line":"                continue"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_d7986977","line":103,"updated":"2015-07-09 11:14:38.000000000","message":"s/faild/failed/","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"285de44714668d56e9b5d51bd8671e0cf63e56f2","unresolved":false,"context_lines":[{"line_number":100,"context_line":"            result \u003d self.do_call(url, data)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"            if (result[\u0027error\u0027][\u0027code\u0027] !\u003d 0) or (\"data\" not in result):"},{"line_number":103,"context_line":"                err_msg \u003d (_(\"Login to %s faild, try another\") % item_url)"},{"line_number":104,"context_line":"                LOG.error(err_msg)"},{"line_number":105,"context_line":"                continue"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_fa223451","line":103,"in_reply_to":"ba3cc151_d7986977","updated":"2015-07-09 12:02:56.000000000","message":"Done","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b12496417126daef6741a647d734c8cbf12b8f7e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            self.headers[\u0027iBaseToken\u0027] \u003d result[\u0027data\u0027][\u0027iBaseToken\u0027]"},{"line_number":112,"context_line":"            break"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if deviceid is None:"},{"line_number":115,"context_line":"            err_msg \u003d (_(\"All url Login fail\"))"},{"line_number":116,"context_line":"            LOG.error(err_msg)"},{"line_number":117,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_16437a43","line":114,"updated":"2015-07-08 10:25:07.000000000","message":"Here you verify only last \"deviceid\" from all from previous loop. I guess, all of them should be verified.","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"9c3bc36c03bac06b751864281ed4aa96aa01f1bb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            self.headers[\u0027iBaseToken\u0027] \u003d result[\u0027data\u0027][\u0027iBaseToken\u0027]"},{"line_number":112,"context_line":"            break"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if deviceid is None:"},{"line_number":115,"context_line":"            err_msg \u003d (_(\"All url Login fail\"))"},{"line_number":116,"context_line":"            LOG.error(err_msg)"},{"line_number":117,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_f7510231","line":114,"in_reply_to":"ba3cc151_16437a43","updated":"2015-07-09 10:56:01.000000000","message":"When one of the \"deviceid\" is valid,the loop will break.","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"285de44714668d56e9b5d51bd8671e0cf63e56f2","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            self.headers[\u0027iBaseToken\u0027] \u003d result[\u0027data\u0027][\u0027iBaseToken\u0027]"},{"line_number":112,"context_line":"            break"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if deviceid is None:"},{"line_number":115,"context_line":"            err_msg \u003d (_(\"All url Login fail\"))"},{"line_number":116,"context_line":"            LOG.error(err_msg)"},{"line_number":117,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_55421110","line":114,"in_reply_to":"ba3cc151_f7432d40","updated":"2015-07-09 12:02:56.000000000","message":"I will add \"result[\u0027data\u0027][\u0027deviceid\u0027] is None\" to the condition of line 102. \nIt will make sure the deviceid is valid when the loop break.","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b67127563ccdd6568e41f88ce783ab76675d0f06","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            self.headers[\u0027iBaseToken\u0027] \u003d result[\u0027data\u0027][\u0027iBaseToken\u0027]"},{"line_number":112,"context_line":"            break"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        if deviceid is None:"},{"line_number":115,"context_line":"            err_msg \u003d (_(\"All url Login fail\"))"},{"line_number":116,"context_line":"            LOG.error(err_msg)"},{"line_number":117,"context_line":"            raise exception.InvalidShare(reason\u003derr_msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_f7432d40","line":114,"in_reply_to":"ba3cc151_f7510231","updated":"2015-07-09 11:14:38.000000000","message":"Actually loop will be broken after first element if condition on line 102 is False. So, I propose to perform validation of deviceid after line 109. And if it is None, then continue loop. And after loop raise error expecting successful return from a loop with a proper deviceid.","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":8851,"name":"Valeriy Ponomaryov","email":"kiparis.kh@gmail.com","username":"vponomaryov"},"change_message_id":"b12496417126daef6741a647d734c8cbf12b8f7e","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        old_url \u003d self.url"},{"line_number":128,"context_line":"        result \u003d self.do_call(url, data, method)"},{"line_number":129,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":130,"context_line":"        if error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER \\"},{"line_number":131,"context_line":"           or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER:"},{"line_number":132,"context_line":"            err_msg \u003d (_(\"Cant\u0027t open the recent url, relogin.\"))"},{"line_number":133,"context_line":"            LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_6b38e3ee","line":130,"updated":"2015-07-08 10:25:07.000000000","message":"Please, use parenthesis instead of backslashes.","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"9c3bc36c03bac06b751864281ed4aa96aa01f1bb","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        old_url \u003d self.url"},{"line_number":128,"context_line":"        result \u003d self.do_call(url, data, method)"},{"line_number":129,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":130,"context_line":"        if error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER \\"},{"line_number":131,"context_line":"           or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER:"},{"line_number":132,"context_line":"            err_msg \u003d (_(\"Cant\u0027t open the recent url, relogin.\"))"},{"line_number":133,"context_line":"            LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_971af67b","line":130,"in_reply_to":"ba3cc151_6b38e3ee","updated":"2015-07-09 10:56:01.000000000","message":"Done","commit_id":"cab092e04c2a975573a5d7879ef029fad1a5d60f"},{"author":{"_account_id":7652,"name":"Luis Pabón","email":"lpabon@gmail.com","username":"lpabon"},"change_message_id":"6cc100d14e374bd7cc7acb4129cbde296922dcc8","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                       \u0027data\u0027: data})"},{"line_number":59,"context_line":"        opener \u003d urlreq.build_opener(urlreq.HTTPCookieProcessor(self.cookie))"},{"line_number":60,"context_line":"        urlreq.install_opener(opener)"},{"line_number":61,"context_line":"        res_json \u003d None"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            req \u003d urlreq.Request(url, data, self.headers)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_78e385a4","line":61,"updated":"2015-07-09 14:22:19.000000000","message":"The comment says that it returns a Python object.  Should this variable be called something other than res_json?  That seems to be saying that JSON is returned, which does not seem to be the case.","commit_id":"fdbac2cf1459107dab46bb6b24a9d6ef4d02b546"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"af378a755612449b7e9370ae122062f84afd8b1f","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                       \u0027data\u0027: data})"},{"line_number":59,"context_line":"        opener \u003d urlreq.build_opener(urlreq.HTTPCookieProcessor(self.cookie))"},{"line_number":60,"context_line":"        urlreq.install_opener(opener)"},{"line_number":61,"context_line":"        res_json \u003d None"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            req \u003d urlreq.Request(url, data, self.headers)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_8f0e2131","line":61,"in_reply_to":"ba3cc151_78e385a4","updated":"2015-07-10 02:17:31.000000000","message":"I will rename it to \"result\"","commit_id":"fdbac2cf1459107dab46bb6b24a9d6ef4d02b546"},{"author":{"_account_id":7652,"name":"Luis Pabón","email":"lpabon@gmail.com","username":"lpabon"},"change_message_id":"6cc100d14e374bd7cc7acb4129cbde296922dcc8","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        except Exception as err:"},{"line_number":73,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %(url)s.\u0027"},{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \u0027{\"error\":{\"code\":%s,\u0027 \\"},{"line_number":76,"context_line":"                       \u0027\"description\":\"Connet server error\"}}\u0027 \\"},{"line_number":77,"context_line":"                       % constants.ERROR_CONNECT_TO_SERVER"},{"line_number":78,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_185b5987","line":75,"updated":"2015-07-09 14:22:19.000000000","message":"What is the purpose of json_msg?  Why not just add the python data to the res_json dict?","commit_id":"fdbac2cf1459107dab46bb6b24a9d6ef4d02b546"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"af378a755612449b7e9370ae122062f84afd8b1f","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        except Exception as err:"},{"line_number":73,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %(url)s.\u0027"},{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \u0027{\"error\":{\"code\":%s,\u0027 \\"},{"line_number":76,"context_line":"                       \u0027\"description\":\"Connet server error\"}}\u0027 \\"},{"line_number":77,"context_line":"                       % constants.ERROR_CONNECT_TO_SERVER"},{"line_number":78,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_6faddde9","line":75,"in_reply_to":"ba3cc151_185b5987","updated":"2015-07-10 02:17:31.000000000","message":"just to make it consistent with line82.\nI think delete line78 and line 79 will be better.","commit_id":"fdbac2cf1459107dab46bb6b24a9d6ef4d02b546"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b4b4552ae4cfad0f782f128756f538a46c2f2c00","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %(url)s.\u0027"},{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \u0027{\"error\":{\"code\":%s,\u0027 \\"},{"line_number":76,"context_line":"                       \u0027\"description\":\"Connet server error\"}}\u0027 \\"},{"line_number":77,"context_line":"                       % constants.ERROR_CONNECT_TO_SERVER"},{"line_number":78,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"},{"line_number":79,"context_line":"            return res_json"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_54442cb6","line":76,"updated":"2015-07-10 01:47:01.000000000","message":"Connet -\u003e Connect","commit_id":"fdbac2cf1459107dab46bb6b24a9d6ef4d02b546"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"af378a755612449b7e9370ae122062f84afd8b1f","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            LOG.error(_LE(\u0027\\nBad response from server: %(url)s.\u0027"},{"line_number":74,"context_line":"                          \u0027 Error: %(err)s\u0027), {\u0027url\u0027: url, \u0027err\u0027: err})"},{"line_number":75,"context_line":"            json_msg \u003d \u0027{\"error\":{\"code\":%s,\u0027 \\"},{"line_number":76,"context_line":"                       \u0027\"description\":\"Connet server error\"}}\u0027 \\"},{"line_number":77,"context_line":"                       % constants.ERROR_CONNECT_TO_SERVER"},{"line_number":78,"context_line":"            res_json \u003d jsonutils.loads(json_msg)"},{"line_number":79,"context_line":"            return res_json"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_af79a584","line":76,"in_reply_to":"ba3cc151_54442cb6","updated":"2015-07-10 02:17:31.000000000","message":"Done","commit_id":"fdbac2cf1459107dab46bb6b24a9d6ef4d02b546"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b4b4552ae4cfad0f782f128756f538a46c2f2c00","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":133,"context_line":"        if(error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":134,"context_line":"           or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":135,"context_line":"            err_msg \u003d (_(\"Cant\u0027t open the recent url, relogin.\"))"},{"line_number":136,"context_line":"            LOG.error(err_msg)"},{"line_number":137,"context_line":"            deviceid \u003d self.login()"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_b4fb387b","line":135,"updated":"2015-07-10 01:47:01.000000000","message":"Cant\u0027t -\u003e Can\u0027t","commit_id":"fdbac2cf1459107dab46bb6b24a9d6ef4d02b546"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"af378a755612449b7e9370ae122062f84afd8b1f","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":133,"context_line":"        if(error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":134,"context_line":"           or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":135,"context_line":"            err_msg \u003d (_(\"Cant\u0027t open the recent url, relogin.\"))"},{"line_number":136,"context_line":"            LOG.error(err_msg)"},{"line_number":137,"context_line":"            deviceid \u003d self.login()"},{"line_number":138,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_0f853158","line":135,"in_reply_to":"ba3cc151_b4fb387b","updated":"2015-07-10 02:17:31.000000000","message":"Done","commit_id":"fdbac2cf1459107dab46bb6b24a9d6ef4d02b546"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"d7ea9e75db2151d4683cb6084284da421da03579","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return result"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def login(self):"},{"line_number":89,"context_line":"        \"\"\"Log in huawei array.\"\"\""},{"line_number":90,"context_line":"        login_info \u003d self._get_login_info()"},{"line_number":91,"context_line":"        urlstr \u003d login_info[\u0027RestURL\u0027]"},{"line_number":92,"context_line":"        url_list \u003d urlstr.split(\";\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_1c3b113a","line":89,"updated":"2015-07-10 14:49:13.000000000","message":"Log in -\u003e Login, keep consistent with other discription about \"login\".","commit_id":"7f521939e32f693f2a24dc1393334d1b80964bd2"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"ebf51e54c821a971529fdc0218fe2d9f789ec786","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        return result"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def login(self):"},{"line_number":89,"context_line":"        \"\"\"Log in huawei array.\"\"\""},{"line_number":90,"context_line":"        login_info \u003d self._get_login_info()"},{"line_number":91,"context_line":"        urlstr \u003d login_info[\u0027RestURL\u0027]"},{"line_number":92,"context_line":"        url_list \u003d urlstr.split(\";\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_9ae71840","line":89,"in_reply_to":"ba3cc151_1c3b113a","updated":"2015-07-13 02:59:33.000000000","message":"Done","commit_id":"7f521939e32f693f2a24dc1393334d1b80964bd2"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"d7ea9e75db2151d4683cb6084284da421da03579","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":131,"context_line":"        if(error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":132,"context_line":"           or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":133,"context_line":"            err_msg \u003d (_(\"Can\u0027t open the recent url, relogin.\"))"},{"line_number":134,"context_line":"            LOG.error(err_msg)"},{"line_number":135,"context_line":"            deviceid \u003d self.login()"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_3c97f53b","line":133,"updated":"2015-07-10 14:49:13.000000000","message":"relogin -\u003e re-login","commit_id":"7f521939e32f693f2a24dc1393334d1b80964bd2"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"ebf51e54c821a971529fdc0218fe2d9f789ec786","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"},{"line_number":131,"context_line":"        if(error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":132,"context_line":"           or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":133,"context_line":"            err_msg \u003d (_(\"Can\u0027t open the recent url, relogin.\"))"},{"line_number":134,"context_line":"            LOG.error(err_msg)"},{"line_number":135,"context_line":"            deviceid \u003d self.login()"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9a41bdd9_1aca28a2","line":133,"in_reply_to":"ba3cc151_3c97f53b","updated":"2015-07-13 02:59:33.000000000","message":"Done","commit_id":"7f521939e32f693f2a24dc1393334d1b80964bd2"}],"manila/tests/share/drivers/huawei/test_huawei_nas.py":[{"author":{"_account_id":15100,"name":"zhongjun","email":"jun.zhongjun2@gmail.com","username":"zhongjun2"},"change_message_id":"dac3b76f0a9f7cb435c33540923b37d51571a851","unresolved":false,"context_lines":[{"line_number":1062,"context_line":"                                          \u0027http://100.115.10.70:8082/\u0027"},{"line_number":1063,"context_line":"                                          \u0027deviceManager/rest/\u0027)"},{"line_number":1064,"context_line":"        else:"},{"line_number":1065,"context_line":"            url_text \u003d doc.createTextNode(\u0027http://100.115.10.69:8082/\u0027"},{"line_number":1066,"context_line":"                                          \u0027deviceManager/rest/\u0027)"},{"line_number":1067,"context_line":"        url.appendChild(url_text)"},{"line_number":1068,"context_line":"        storage.appendChild(url)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_0a430314","line":1065,"updated":"2015-07-03 02:11:15.000000000","message":"Suggest to add url is empty test.","commit_id":"908ccea4d0b3c7b8747203585e5ded1f898ed995"}]}
