)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"162fdca5698c7d217e2c688ecfc8e6c465b8059e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Huawei driver now support multi REST-URLs, which means user can"},{"line_number":10,"context_line":"write more than one REST-URLs in the config file(seperated by \";\")"},{"line_number":11,"context_line":"and driver can choose the usable one to set up a connection(see"},{"line_number":12,"context_line":"function \"login\" in rest_client.py of huawei driver)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"But if the choosed REST-URL have some failures, huawei driver can"},{"line_number":15,"context_line":"not change to another REST-URL automaticlly."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa1b9901_8751a938","line":12,"updated":"2015-08-19 18:16:02.000000000","message":"Capitalize \u0027huawei\u0027.","commit_id":"273a1db1c42f8f942f28e8e389d0ff6f15b834f0"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"27912a2f0405f259e2e389caf6bd3ed34081644e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Huawei driver now support multi REST-URLs, which means user can"},{"line_number":10,"context_line":"write more than one REST-URLs in the config file(seperated by \";\")"},{"line_number":11,"context_line":"and driver can choose the usable one to set up a connection(see"},{"line_number":12,"context_line":"function \"login\" in rest_client.py of huawei driver)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"But if the choosed REST-URL have some failures, huawei driver can"},{"line_number":15,"context_line":"not change to another REST-URL automaticlly."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa1b9901_bb3e2f89","line":12,"in_reply_to":"fa1b9901_8751a938","updated":"2015-08-20 09:37:28.000000000","message":"Done","commit_id":"273a1db1c42f8f942f28e8e389d0ff6f15b834f0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"162fdca5698c7d217e2c688ecfc8e6c465b8059e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and driver can choose the usable one to set up a connection(see"},{"line_number":12,"context_line":"function \"login\" in rest_client.py of huawei driver)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"But if the choosed REST-URL have some failures, huawei driver can"},{"line_number":15,"context_line":"not change to another REST-URL automaticlly."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To resolve this, rewrite the \"call\" function in rest_client.py of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa1b9901_e756655b","line":14,"updated":"2015-08-19 18:16:02.000000000","message":"choosed -\u003e chosen\n\nCapitalize \u0027huawei\u0027.","commit_id":"273a1db1c42f8f942f28e8e389d0ff6f15b834f0"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"27912a2f0405f259e2e389caf6bd3ed34081644e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and driver can choose the usable one to set up a connection(see"},{"line_number":12,"context_line":"function \"login\" in rest_client.py of huawei driver)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"But if the choosed REST-URL have some failures, huawei driver can"},{"line_number":15,"context_line":"not change to another REST-URL automaticlly."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To resolve this, rewrite the \"call\" function in rest_client.py of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa1b9901_1b0cfbeb","line":14,"in_reply_to":"fa1b9901_e756655b","updated":"2015-08-20 09:37:28.000000000","message":"Done","commit_id":"273a1db1c42f8f942f28e8e389d0ff6f15b834f0"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"162fdca5698c7d217e2c688ecfc8e6c465b8059e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"not change to another REST-URL automaticlly."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To resolve this, rewrite the \"call\" function in rest_client.py of"},{"line_number":18,"context_line":"huawei driver. If REST command failed to send, driver will do a"},{"line_number":19,"context_line":"\"login\" process to set up another connection, and send the failed"},{"line_number":20,"context_line":"command to a new REST-URL again."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa1b9901_473e31db","line":18,"updated":"2015-08-19 18:16:02.000000000","message":"Capitalize \u0027huawei\u0027.","commit_id":"273a1db1c42f8f942f28e8e389d0ff6f15b834f0"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"27912a2f0405f259e2e389caf6bd3ed34081644e","unresolved":false,"context_lines":[{"line_number":15,"context_line":"not change to another REST-URL automaticlly."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To resolve this, rewrite the \"call\" function in rest_client.py of"},{"line_number":18,"context_line":"huawei driver. If REST command failed to send, driver will do a"},{"line_number":19,"context_line":"\"login\" process to set up another connection, and send the failed"},{"line_number":20,"context_line":"command to a new REST-URL again."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"fa1b9901_bb0cefec","line":18,"in_reply_to":"fa1b9901_473e31db","updated":"2015-08-20 09:37:28.000000000","message":"Done","commit_id":"273a1db1c42f8f942f28e8e389d0ff6f15b834f0"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"e0811ec90561e704eaa2a30776db8043c1f1cbd6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Huawei: fix multi REST-URLs bug"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Huawei driver now support multi REST-URLs, which means user can"},{"line_number":10,"context_line":"write more than one REST-URLs in the config file(seperated by \";\")"},{"line_number":11,"context_line":"and driver can choose the usable one to set up a connection(see"},{"line_number":12,"context_line":"function \"login\" in rest_client.py of Huawei driver)."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa1b9901_e0593936","line":9,"updated":"2015-08-20 15:28:53.000000000","message":"support -\u003e supports\n\nuser -\u003e users","commit_id":"52b395d51e6b62bf327a15ff7d0f55ff594c9e6c"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"73c105b7f7516166fcd68fc80e2f68a722f67d7a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Huawei: fix multi REST-URLs bug"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Huawei driver now support multi REST-URLs, which means user can"},{"line_number":10,"context_line":"write more than one REST-URLs in the config file(seperated by \";\")"},{"line_number":11,"context_line":"and driver can choose the usable one to set up a connection(see"},{"line_number":12,"context_line":"function \"login\" in rest_client.py of Huawei driver)."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa1b9901_0a7b12c2","line":9,"in_reply_to":"fa1b9901_e0593936","updated":"2015-08-21 02:48:27.000000000","message":"Done","commit_id":"52b395d51e6b62bf327a15ff7d0f55ff594c9e6c"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"e829f382d3b71cf27f06b162be2c7d1ebf7fa5b5","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and driver can choose the usable one to set up a connection(see"},{"line_number":12,"context_line":"function \"login\" in rest_client.py of Huawei driver)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"But if the chosen REST-URL have some failures, Huawei driver can"},{"line_number":15,"context_line":"not change to another REST-URL automaticlly."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To resolve this, rewrite the \"call\" function in rest_client.py of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da20952f_e0f08693","line":14,"updated":"2015-08-29 02:54:52.000000000","message":"s/have/has","commit_id":"e36becf09668d42191a3d0d809397263fdefdc9a"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"b4d08b377d93fa3de0885ff3c8fdf18f28486c66","unresolved":false,"context_lines":[{"line_number":11,"context_line":"and driver can choose the usable one to set up a connection(see"},{"line_number":12,"context_line":"function \"login\" in rest_client.py of Huawei driver)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"But if the chosen REST-URL have some failures, Huawei driver can"},{"line_number":15,"context_line":"not change to another REST-URL automaticlly."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To resolve this, rewrite the \"call\" function in rest_client.py of"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da20952f_46338a62","line":14,"in_reply_to":"da20952f_e0f08693","updated":"2015-08-31 06:40:52.000000000","message":"Done","commit_id":"e36becf09668d42191a3d0d809397263fdefdc9a"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"e829f382d3b71cf27f06b162be2c7d1ebf7fa5b5","unresolved":false,"context_lines":[{"line_number":12,"context_line":"function \"login\" in rest_client.py of Huawei driver)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"But if the chosen REST-URL have some failures, Huawei driver can"},{"line_number":15,"context_line":"not change to another REST-URL automaticlly."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To resolve this, rewrite the \"call\" function in rest_client.py of"},{"line_number":18,"context_line":"Huawei driver. If REST command failed to send, driver will do a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da20952f_c032225f","line":15,"updated":"2015-08-29 02:54:52.000000000","message":"s/automaticlly/automatically","commit_id":"e36becf09668d42191a3d0d809397263fdefdc9a"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"b4d08b377d93fa3de0885ff3c8fdf18f28486c66","unresolved":false,"context_lines":[{"line_number":12,"context_line":"function \"login\" in rest_client.py of Huawei driver)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"But if the chosen REST-URL have some failures, Huawei driver can"},{"line_number":15,"context_line":"not change to another REST-URL automaticlly."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To resolve this, rewrite the \"call\" function in rest_client.py of"},{"line_number":18,"context_line":"Huawei driver. If REST command failed to send, driver will do a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"da20952f_66380e3e","line":15,"in_reply_to":"da20952f_c032225f","updated":"2015-08-31 06:40:52.000000000","message":"Done","commit_id":"e36becf09668d42191a3d0d809397263fdefdc9a"}],"cinder/volume/drivers/huawei/constants.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"19e2af15fc6ea9586f1a3b422ded62867c1cdbda","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"ERROR_CONNECT_TO_SERVER \u003d -403"},{"line_number":41,"context_line":"ERROR_UNAUTHORIZED_TO_SERVER \u003d -401"},{"line_number":42,"context_line":"SOCKET_TIMEOUT \u003d 52"},{"line_number":43,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"THICK_LUNTYPE \u003d 0"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_c48368a8","line":42,"updated":"2015-09-09 14:48:10.000000000","message":"Are these in seconds? Please add a comment.\nThere is no mentioning about this change in the commit message.","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"58ff92b648f5a6da96e9eb4ff6e0c38bdfc1da55","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"ERROR_CONNECT_TO_SERVER \u003d -403"},{"line_number":41,"context_line":"ERROR_UNAUTHORIZED_TO_SERVER \u003d -401"},{"line_number":42,"context_line":"SOCKET_TIMEOUT \u003d 52"},{"line_number":43,"context_line":"LOGIN_SOCKET_TIMEOUT \u003d 4"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"THICK_LUNTYPE \u003d 0"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_26b0038b","line":42,"in_reply_to":"da20952f_c48368a8","updated":"2015-09-10 11:24:46.000000000","message":"I add a description for this change in the commit message","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"162fdca5698c7d217e2c688ecfc8e6c465b8059e","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                      \u0027New URL: %(new_url)s\\n\u0027,"},{"line_number":152,"context_line":"                      {\u0027old_url\u0027: old_url,"},{"line_number":153,"context_line":"                       \u0027new_url\u0027: self.url})"},{"line_number":154,"context_line":"            result \u003d self.do_call(url, data, method)"},{"line_number":155,"context_line":"        return result"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _assert_rest_result(self, result, err_str):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_ca5008d7","line":154,"updated":"2015-08-19 18:16:02.000000000","message":"There should be unit tests to go with these if statements.","commit_id":"273a1db1c42f8f942f28e8e389d0ff6f15b834f0"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"27912a2f0405f259e2e389caf6bd3ed34081644e","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                      \u0027New URL: %(new_url)s\\n\u0027,"},{"line_number":152,"context_line":"                      {\u0027old_url\u0027: old_url,"},{"line_number":153,"context_line":"                       \u0027new_url\u0027: self.url})"},{"line_number":154,"context_line":"            result \u003d self.do_call(url, data, method)"},{"line_number":155,"context_line":"        return result"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def _assert_rest_result(self, result, err_str):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_e6cde731","line":154,"in_reply_to":"fa1b9901_ca5008d7","updated":"2015-08-20 09:37:28.000000000","message":"Done","commit_id":"273a1db1c42f8f942f28e8e389d0ff6f15b834f0"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"e0811ec90561e704eaa2a30776db8043c1f1cbd6","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            break"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        if device_id is None:"},{"line_number":126,"context_line":"            msg \u003d _(\"Login Error: Can\u0027t connect server.\")"},{"line_number":127,"context_line":"            LOG.error(msg)"},{"line_number":128,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_a0126155","line":126,"updated":"2015-08-20 15:28:53.000000000","message":"Might be a good idea to add to this error message and say that it can\u0027t connect because there is no device id.","commit_id":"52b395d51e6b62bf327a15ff7d0f55ff594c9e6c"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"73c105b7f7516166fcd68fc80e2f68a722f67d7a","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            break"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        if device_id is None:"},{"line_number":126,"context_line":"            msg \u003d _(\"Login Error: Can\u0027t connect server.\")"},{"line_number":127,"context_line":"            LOG.error(msg)"},{"line_number":128,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":129,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_3d40a206","line":126,"in_reply_to":"fa1b9901_a0126155","updated":"2015-08-21 02:48:27.000000000","message":"add \"All RestURL Login fail\"","commit_id":"52b395d51e6b62bf327a15ff7d0f55ff594c9e6c"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"e84913d33d0f715359f366689525591e4fddf943","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder import utils"},{"line_number":27,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":28,"context_line":"from cinder.volume.drivers.huawei import constants"},{"line_number":29,"context_line":"from cinder.volume.drivers.huawei import huawei_utils"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_c26bb6b5","line":27,"updated":"2015-08-21 07:42:09.000000000","message":"from cinder import utils should be put under this line.","commit_id":"e2d19afb3c70d0f81e9c1595ed4809e89601af63"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"1816a35cda84ccf63fd3e375304bae4dc3da9738","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from cinder import exception"},{"line_number":26,"context_line":"from cinder import utils"},{"line_number":27,"context_line":"from cinder.i18n import _, _LE, _LI, _LW"},{"line_number":28,"context_line":"from cinder.volume.drivers.huawei import constants"},{"line_number":29,"context_line":"from cinder.volume.drivers.huawei import huawei_utils"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_044bb05a","line":27,"in_reply_to":"fa1b9901_c26bb6b5","updated":"2015-08-24 03:25:25.000000000","message":"Done","commit_id":"e2d19afb3c70d0f81e9c1595ed4809e89601af63"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"e84913d33d0f715359f366689525591e4fddf943","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        if device_id is not None:"},{"line_number":149,"context_line":"            LOG.debug(\u0027Replace URL: \\n\u0027"},{"line_number":150,"context_line":"                      \u0027Old URL: %(old_url)s\\n\u0027"},{"line_number":151,"context_line":"                      \u0027New URL: %(new_url)s\\n\u0027,"},{"line_number":152,"context_line":"                      {\u0027old_url\u0027: old_url,"},{"line_number":153,"context_line":"                       \u0027new_url\u0027: self.url})"},{"line_number":154,"context_line":"            result \u003d self.do_call(url, data, method)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_a2ec82bb","line":151,"updated":"2015-08-21 07:42:09.000000000","message":"Put a stop \u0027.\u0027 in the end.","commit_id":"e2d19afb3c70d0f81e9c1595ed4809e89601af63"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"1816a35cda84ccf63fd3e375304bae4dc3da9738","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        if device_id is not None:"},{"line_number":149,"context_line":"            LOG.debug(\u0027Replace URL: \\n\u0027"},{"line_number":150,"context_line":"                      \u0027Old URL: %(old_url)s\\n\u0027"},{"line_number":151,"context_line":"                      \u0027New URL: %(new_url)s\\n\u0027,"},{"line_number":152,"context_line":"                      {\u0027old_url\u0027: old_url,"},{"line_number":153,"context_line":"                       \u0027new_url\u0027: self.url})"},{"line_number":154,"context_line":"            result \u003d self.do_call(url, data, method)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_64aceced","line":151,"in_reply_to":"fa1b9901_a2ec82bb","updated":"2015-08-24 03:25:25.000000000","message":"Done","commit_id":"e2d19afb3c70d0f81e9c1595ed4809e89601af63"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8ccfa58903793b78ad85806d878bc377c87c6180","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            data \u003d json.dumps({\"username\": login_info[\u0027UserName\u0027],"},{"line_number":107,"context_line":"                               \"password\": login_info[\u0027UserPassword\u0027],"},{"line_number":108,"context_line":"                               \"scope\": \"0\"})"},{"line_number":109,"context_line":"            self.init_http_head()"},{"line_number":110,"context_line":"            result \u003d self.do_call(url, data,"},{"line_number":111,"context_line":"                                  calltimeout\u003dconstants.LOGIN_SOCKET_TIMEOUT)"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_fb5f6273","line":109,"updated":"2015-08-26 19:31:15.000000000","message":"Do we need it here and in __init__ method too?","commit_id":"e36becf09668d42191a3d0d809397263fdefdc9a"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"b4d08b377d93fa3de0885ff3c8fdf18f28486c66","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            data \u003d json.dumps({\"username\": login_info[\u0027UserName\u0027],"},{"line_number":107,"context_line":"                               \"password\": login_info[\u0027UserPassword\u0027],"},{"line_number":108,"context_line":"                               \"scope\": \"0\"})"},{"line_number":109,"context_line":"            self.init_http_head()"},{"line_number":110,"context_line":"            result \u003d self.do_call(url, data,"},{"line_number":111,"context_line":"                                  calltimeout\u003dconstants.LOGIN_SOCKET_TIMEOUT)"},{"line_number":112,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_c7dc5875","line":109,"in_reply_to":"da20952f_fb5f6273","updated":"2015-08-31 06:40:52.000000000","message":"Here is necessary. I delete it from \"__init__\"","commit_id":"e36becf09668d42191a3d0d809397263fdefdc9a"},{"author":{"_account_id":17444,"name":"Jay.Shen","email":"shenhong09@huawei.com","username":"Jay.Shen"},"change_message_id":"e829f382d3b71cf27f06b162be2c7d1ebf7fa5b5","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"            if (result[\u0027error\u0027][\u0027code\u0027] !\u003d 0) or (\"data\" not in result):"},{"line_number":114,"context_line":"                msg \u003d (_(\"Login error, reason is: %s.\") % result)"},{"line_number":115,"context_line":"                LOG.error(msg)"},{"line_number":116,"context_line":"                continue"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"            LOG.debug(\u0027Login success: %(url)s\u0027 % {\u0027url\u0027: item_url})"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_c067824b","line":115,"updated":"2015-08-29 02:54:52.000000000","message":"Please, use _LE marker","commit_id":"e36becf09668d42191a3d0d809397263fdefdc9a"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"b4d08b377d93fa3de0885ff3c8fdf18f28486c66","unresolved":false,"context_lines":[{"line_number":112,"context_line":""},{"line_number":113,"context_line":"            if (result[\u0027error\u0027][\u0027code\u0027] !\u003d 0) or (\"data\" not in result):"},{"line_number":114,"context_line":"                msg \u003d (_(\"Login error, reason is: %s.\") % result)"},{"line_number":115,"context_line":"                LOG.error(msg)"},{"line_number":116,"context_line":"                continue"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"            LOG.debug(\u0027Login success: %(url)s\u0027 % {\u0027url\u0027: item_url})"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_861442a0","line":115,"in_reply_to":"da20952f_c067824b","updated":"2015-08-31 06:40:52.000000000","message":"Done","commit_id":"e36becf09668d42191a3d0d809397263fdefdc9a"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8ccfa58903793b78ad85806d878bc377c87c6180","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":143,"context_line":"                or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":144,"context_line":"            err_msg \u003d (_(\"Can\u0027t open the recent url, relogin.\"))"},{"line_number":145,"context_line":"            LOG.error(err_msg)"},{"line_number":146,"context_line":"            device_id \u003d self.login()"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        if device_id is not None:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_bbfd6a70","line":145,"updated":"2015-08-26 19:31:15.000000000","message":"Please, use _LE marker","commit_id":"e36becf09668d42191a3d0d809397263fdefdc9a"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"b4d08b377d93fa3de0885ff3c8fdf18f28486c66","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":143,"context_line":"                or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":144,"context_line":"            err_msg \u003d (_(\"Can\u0027t open the recent url, relogin.\"))"},{"line_number":145,"context_line":"            LOG.error(err_msg)"},{"line_number":146,"context_line":"            device_id \u003d self.login()"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        if device_id is not None:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_bc0e1b39","line":145,"in_reply_to":"da20952f_bbfd6a70","updated":"2015-08-31 06:40:52.000000000","message":"Done","commit_id":"e36becf09668d42191a3d0d809397263fdefdc9a"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"97b83257cbeb325bc44f7dcb7e58370465f4c619","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                LOG.error(_LE(\"Login error, reason is: %s.\"), result)"},{"line_number":114,"context_line":"                continue"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"            LOG.debug(\u0027Login success: %(url)s\u0027 % {\u0027url\u0027: item_url})"},{"line_number":117,"context_line":"            device_id \u003d result[\u0027data\u0027][\u0027deviceid\u0027]"},{"line_number":118,"context_line":"            self.device_id \u003d device_id"},{"line_number":119,"context_line":"            self.url \u003d item_url + device_id"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_a891d5f2","line":116,"updated":"2015-09-07 02:05:05.000000000","message":"Change % to , to pass formatting args into the logger.","commit_id":"ce789be18a4254b27b4c2c323cf818fedd8fbf04"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"7ad119fd18869e46288e089379bc48ccaf3cd6e3","unresolved":false,"context_lines":[{"line_number":113,"context_line":"                LOG.error(_LE(\"Login error, reason is: %s.\"), result)"},{"line_number":114,"context_line":"                continue"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"            LOG.debug(\u0027Login success: %(url)s\u0027 % {\u0027url\u0027: item_url})"},{"line_number":117,"context_line":"            device_id \u003d result[\u0027data\u0027][\u0027deviceid\u0027]"},{"line_number":118,"context_line":"            self.device_id \u003d device_id"},{"line_number":119,"context_line":"            self.url \u003d item_url + device_id"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_28cf0057","line":116,"in_reply_to":"da20952f_a891d5f2","updated":"2015-09-07 06:47:56.000000000","message":"Done","commit_id":"ce789be18a4254b27b4c2c323cf818fedd8fbf04"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"e750a0644544b96ebfe15b439b0ea4f9604c8b3d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    def call(self, url, data\u003dNone, method\u003dNone):"},{"line_number":132,"context_line":"        \"\"\"Send requests to server."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        if fail, try another RestURL"},{"line_number":135,"context_line":"        \"\"\""},{"line_number":136,"context_line":"        device_id \u003d None"},{"line_number":137,"context_line":"        old_url \u003d self.url"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_d3fabe74","line":134,"updated":"2015-09-07 02:54:59.000000000","message":"Should be \"If fail, try another RestURL.\"","commit_id":"ce789be18a4254b27b4c2c323cf818fedd8fbf04"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"7ad119fd18869e46288e089379bc48ccaf3cd6e3","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    def call(self, url, data\u003dNone, method\u003dNone):"},{"line_number":132,"context_line":"        \"\"\"Send requests to server."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        if fail, try another RestURL"},{"line_number":135,"context_line":"        \"\"\""},{"line_number":136,"context_line":"        device_id \u003d None"},{"line_number":137,"context_line":"        old_url \u003d self.url"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_08fb1c7a","line":134,"in_reply_to":"da20952f_d3fabe74","updated":"2015-09-07 06:47:56.000000000","message":"Done","commit_id":"ce789be18a4254b27b4c2c323cf818fedd8fbf04"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"02f5045bc50e4b3ee4577d8aed252b6a20692c4e","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        Send HTTPS call, get response in JSON."},{"line_number":56,"context_line":"        Convert response into Python Object and return it."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        if self.url:"},{"line_number":59,"context_line":"            url \u003d self.url + url"},{"line_number":60,"context_line":"        handler \u003d urllib.request.HTTPCookieProcessor(self.cookie)"},{"line_number":61,"context_line":"        opener \u003d urllib.request.build_opener(handler)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_fbdba74d","line":58,"updated":"2015-09-09 16:14:49.000000000","message":"Vipin has a point. Maybe check `if self.url and url:` so you don\u0027t run into the case where you append to a Boolean.","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"58ff92b648f5a6da96e9eb4ff6e0c38bdfc1da55","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        Send HTTPS call, get response in JSON."},{"line_number":56,"context_line":"        Convert response into Python Object and return it."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        if self.url:"},{"line_number":59,"context_line":"            url \u003d self.url + url"},{"line_number":60,"context_line":"        handler \u003d urllib.request.HTTPCookieProcessor(self.cookie)"},{"line_number":61,"context_line":"        opener \u003d urllib.request.build_opener(handler)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_e6768b05","line":58,"in_reply_to":"da20952f_fbdba74d","updated":"2015-09-10 11:24:46.000000000","message":"I change the default value to \"None\", the url can\u0027t be a Boolean","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"19e2af15fc6ea9586f1a3b422ded62867c1cdbda","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        Convert response into Python Object and return it."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        if self.url:"},{"line_number":59,"context_line":"            url \u003d self.url + url"},{"line_number":60,"context_line":"        handler \u003d urllib.request.HTTPCookieProcessor(self.cookie)"},{"line_number":61,"context_line":"        opener \u003d urllib.request.build_opener(handler)"},{"line_number":62,"context_line":"        urllib.request.install_opener(opener)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_a47bd428","line":59,"updated":"2015-09-09 14:48:10.000000000","message":"Why the default value of url is False?\nHow can you apply + on a Boolean?","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"58ff92b648f5a6da96e9eb4ff6e0c38bdfc1da55","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        Convert response into Python Object and return it."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        if self.url:"},{"line_number":59,"context_line":"            url \u003d self.url + url"},{"line_number":60,"context_line":"        handler \u003d urllib.request.HTTPCookieProcessor(self.cookie)"},{"line_number":61,"context_line":"        opener \u003d urllib.request.build_opener(handler)"},{"line_number":62,"context_line":"        urllib.request.install_opener(opener)"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_26f8037c","line":59,"in_reply_to":"da20952f_a47bd428","updated":"2015-09-10 11:24:46.000000000","message":"The default value is wrong, should be \"None\"","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"19e2af15fc6ea9586f1a3b422ded62867c1cdbda","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            break"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        if device_id is None:"},{"line_number":124,"context_line":"            msg \u003d _(\"Login error: All RestURL Login fail.\")"},{"line_number":125,"context_line":"            LOG.error(msg)"},{"line_number":126,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_a43e7427","line":124,"updated":"2015-09-09 14:48:10.000000000","message":"How about \"Failed to login with all rest URLs\"?","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"58ff92b648f5a6da96e9eb4ff6e0c38bdfc1da55","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            break"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        if device_id is None:"},{"line_number":124,"context_line":"            msg \u003d _(\"Login error: All RestURL Login fail.\")"},{"line_number":125,"context_line":"            LOG.error(msg)"},{"line_number":126,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":127,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_26ca4350","line":124,"in_reply_to":"da20952f_a43e7427","updated":"2015-09-10 11:24:46.000000000","message":"Done","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"19e2af15fc6ea9586f1a3b422ded62867c1cdbda","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":141,"context_line":"                or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":142,"context_line":"            LOG.error(_LE(\"Can\u0027t open the recent url, relogin.\"))"},{"line_number":143,"context_line":"            device_id \u003d self.login()"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        if device_id is not None:"},{"line_number":146,"context_line":"            LOG.debug(\u0027Replace URL: \\n\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_4465181b","line":143,"updated":"2015-09-09 14:48:10.000000000","message":"I couldn\u0027t find a unit test for this case.","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"58ff92b648f5a6da96e9eb4ff6e0c38bdfc1da55","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":141,"context_line":"                or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":142,"context_line":"            LOG.error(_LE(\"Can\u0027t open the recent url, relogin.\"))"},{"line_number":143,"context_line":"            device_id \u003d self.login()"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        if device_id is not None:"},{"line_number":146,"context_line":"            LOG.debug(\u0027Replace URL: \\n\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_86b6aff7","line":143,"in_reply_to":"da20952f_4465181b","updated":"2015-09-10 11:24:46.000000000","message":"There is a unit test \"test_multi_resturls_success\" in test_huawei_drivers.py","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"032c97cf6c8af36e5523bf179ccc01701a11c814","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":141,"context_line":"                or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":142,"context_line":"            LOG.error(_LE(\"Can\u0027t open the recent url, relogin.\"))"},{"line_number":143,"context_line":"            device_id \u003d self.login()"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        if device_id is not None:"},{"line_number":146,"context_line":"            LOG.debug(\u0027Replace URL: \\n\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_dc755832","line":143,"in_reply_to":"da20952f_86b6aff7","updated":"2015-09-10 12:06:06.000000000","message":"But this line will be executed in the case of a failure and I couldn\u0027t find that in test_multi_resturls_success.","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":16652,"name":"zhaohua","email":"nk-zh@163.com","username":"zhaohua"},"change_message_id":"6f28cf4fb843d2c10cb969929f877622c286847b","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":141,"context_line":"                or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":142,"context_line":"            LOG.error(_LE(\"Can\u0027t open the recent url, relogin.\"))"},{"line_number":143,"context_line":"            device_id \u003d self.login()"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        if device_id is not None:"},{"line_number":146,"context_line":"            LOG.debug(\u0027Replace URL: \\n\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_f26869bc","line":143,"in_reply_to":"da20952f_dc755832","updated":"2015-09-11 02:06:25.000000000","message":"You can try \"run_test -c\", and see this line in the coverage report","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"5d96c0f9cf3fa0b91d989369b2eb8eaac68a238d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        if (error_code \u003d\u003d constants.ERROR_CONNECT_TO_SERVER"},{"line_number":141,"context_line":"                or error_code \u003d\u003d constants.ERROR_UNAUTHORIZED_TO_SERVER):"},{"line_number":142,"context_line":"            LOG.error(_LE(\"Can\u0027t open the recent url, relogin.\"))"},{"line_number":143,"context_line":"            device_id \u003d self.login()"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        if device_id is not None:"},{"line_number":146,"context_line":"            LOG.debug(\u0027Replace URL: \\n\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"da20952f_dcff7400","line":143,"in_reply_to":"da20952f_f26869bc","updated":"2015-09-11 07:47:05.000000000","message":"It is difficult to understand your test code. I had to read it couple times to understand how this case was tested. Instead of replying \"There is a unit test \"test_multi_resturls_success\" \" it is better to explain the test flow because your logic is scattered in different test methods and this case is enabled using a boolean. If I were you I wouldn\u0027t ask someone to verify it from the coverage report.","commit_id":"0bb3659371c926097b138de96a51f41fed3eb170"}]}
