)]}'
{"cinder/tests/unit/test_huawei_drivers.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"93d43ffb7177f6b9f413cecf4f2289d82e5d79ff","unresolved":false,"context_lines":[{"line_number":1078,"context_line":"        (iscsi_iqns, target_ips, portgroup_id) \u003d \\"},{"line_number":1079,"context_line":"            self.driver.restclient.get_iscsi_params(self.xml_file_path,"},{"line_number":1080,"context_line":"                                                    FakeConnector)"},{"line_number":1081,"context_line":"        self.assertEqual(iscsi_iqns, self.iscsi_iqns)"},{"line_number":1082,"context_line":"        self.assertEqual(target_ips, self.target_ips)"},{"line_number":1083,"context_line":"        self.assertEqual(portgroup_id, self.portgroup_id)"},{"line_number":1084,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_cc706da7","line":1081,"updated":"2015-07-26 17:50:13.000000000","message":"Please switch all instances of assertEqual to have the argument order of (expected_value, actual_value).","commit_id":"1dacf20756371f0e30a887179d1b63af228e2fe5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b4f66cb7e20c9662c58434f475e7a78501c7e281","unresolved":false,"context_lines":[{"line_number":1078,"context_line":"        (iscsi_iqns, target_ips, portgroup_id) \u003d \\"},{"line_number":1079,"context_line":"            self.driver.restclient.get_iscsi_params(self.xml_file_path,"},{"line_number":1080,"context_line":"                                                    FakeConnector)"},{"line_number":1081,"context_line":"        self.assertEqual(iscsi_iqns, self.iscsi_iqns)"},{"line_number":1082,"context_line":"        self.assertEqual(target_ips, self.target_ips)"},{"line_number":1083,"context_line":"        self.assertEqual(portgroup_id, self.portgroup_id)"},{"line_number":1084,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_3544b0b5","line":1081,"in_reply_to":"3a50d1a3_cc706da7","updated":"2015-07-27 01:37:14.000000000","message":"Done","commit_id":"1dacf20756371f0e30a887179d1b63af228e2fe5"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c8e2a579c85c016b7fb0b48f48cc71e0ce7bebee","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        \"code\": 0"},{"line_number":381,"context_line":"    },"},{"line_number":382,"context_line":"    \"data\": [{"},{"line_number":383,"context_line":"        \"CMO_ISCSI_DEVICE_NAME\": \\"},{"line_number":384,"context_line":"        \"iqn.2006-08.com.huawei:oceanstor:21000022a10a1643:\""},{"line_number":385,"context_line":"    }]"},{"line_number":386,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_2fdf553b","line":383,"updated":"2015-07-27 19:00:56.000000000","message":"I think if you indent the following line 4 spaces, you don\u0027t need a \\.","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"cc69413a8e1bddb77cb53283b26e437f4764bbd5","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        \"code\": 0"},{"line_number":381,"context_line":"    },"},{"line_number":382,"context_line":"    \"data\": [{"},{"line_number":383,"context_line":"        \"CMO_ISCSI_DEVICE_NAME\": \\"},{"line_number":384,"context_line":"        \"iqn.2006-08.com.huawei:oceanstor:21000022a10a1643:\""},{"line_number":385,"context_line":"    }]"},{"line_number":386,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_c466c450","line":383,"in_reply_to":"3a50d1a3_2fdf553b","updated":"2015-07-28 06:51:34.000000000","message":"Thanks, \u0027\\\u0027 can be removed.","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"}],"cinder/volume/drivers/huawei/huawei_driver.py":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"db62462f8eeb38f3f3c63269cbffec37be7c761f","unresolved":false,"context_lines":[{"line_number":318,"context_line":"        return info"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"    @utils.synchronized(\u0027huawei\u0027, external\u003dTrue)"},{"line_number":321,"context_line":"    def initialize_connection_iscsi(self, volume, connector):"},{"line_number":322,"context_line":"        \"\"\"Map a volume to a host and return target iSCSI information.\"\"\""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        LOG.info(_LI(\u0027Enter initialize_connection_iscsi.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_bf168053","line":321,"updated":"2015-06-05 02:13:08.000000000","message":"It is better to have tests covering this method.","commit_id":"45c42beb257bc385ba3bd526aae78399432ab4a7"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"db62462f8eeb38f3f3c63269cbffec37be7c761f","unresolved":false,"context_lines":[{"line_number":369,"context_line":"                 multipath)"},{"line_number":370,"context_line":"        if not multipath:"},{"line_number":371,"context_line":"            properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":372,"context_line":"            properties[\u0027target_portal\u0027] \u003d (\u0027%s:%s\u0027 % (target_ips[0], \u00273260\u0027))"},{"line_number":373,"context_line":"            properties[\u0027target_iqn\u0027] \u003d iscsi_iqns[0]"},{"line_number":374,"context_line":"            properties[\u0027target_lun\u0027] \u003d lun"},{"line_number":375,"context_line":"            properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_df6c9c0a","line":372,"updated":"2015-06-05 02:13:08.000000000","message":"Suggest you put 3260 in a constant or configurable option","commit_id":"45c42beb257bc385ba3bd526aae78399432ab4a7"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"db62462f8eeb38f3f3c63269cbffec37be7c761f","unresolved":false,"context_lines":[{"line_number":377,"context_line":"            properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":378,"context_line":"            properties[\u0027target_iqns\u0027] \u003d [iqn for iqn in iscsi_iqns]"},{"line_number":379,"context_line":"            properties[\u0027target_portals\u0027] \u003d ["},{"line_number":380,"context_line":"                \"%s:3260\" % ip for ip in target_ips]"},{"line_number":381,"context_line":"            properties[\u0027target_luns\u0027] \u003d [lun] * len(target_ips)"},{"line_number":382,"context_line":"            properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":383,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_1f4a3484","line":380,"updated":"2015-06-05 02:13:08.000000000","message":"The same for 3260","commit_id":"45c42beb257bc385ba3bd526aae78399432ab4a7"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"57d869ea34b5bdb7a36b95928fdd7f898e094ead","unresolved":false,"context_lines":[{"line_number":379,"context_line":"            properties[\u0027target_portals\u0027] \u003d ["},{"line_number":380,"context_line":"                \"%s:3260\" % ip for ip in target_ips]"},{"line_number":381,"context_line":"            properties[\u0027target_luns\u0027] \u003d [lun] * len(target_ips)"},{"line_number":382,"context_line":"            properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        LOG.info(_LI(\"initialize_connection_iscsi success. Return data: %s.\"),"},{"line_number":385,"context_line":"                 properties)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_dfaffc7b","line":382,"updated":"2015-06-05 01:58:46.000000000","message":"Currently, Nova doesn\u0027t support target_portals as a key.  So, you will need to support a fallback until Nova uses os-brick or gets a new patch to support target_portals.","commit_id":"45c42beb257bc385ba3bd526aae78399432ab4a7"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"3ff0dc8ccaaaa1d2b87f8d014ef6217cb676bcf2","unresolved":false,"context_lines":[{"line_number":379,"context_line":"            properties[\u0027target_portals\u0027] \u003d ["},{"line_number":380,"context_line":"                \"%s:3260\" % ip for ip in target_ips]"},{"line_number":381,"context_line":"            properties[\u0027target_luns\u0027] \u003d [lun] * len(target_ips)"},{"line_number":382,"context_line":"            properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        LOG.info(_LI(\"initialize_connection_iscsi success. Return data: %s.\"),"},{"line_number":385,"context_line":"                 properties)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_22ae42e6","line":382,"in_reply_to":"3afb71cf_dfaffc7b","updated":"2015-06-10 10:02:26.000000000","message":"Thanks, I will confirm as soon as possible.","commit_id":"45c42beb257bc385ba3bd526aae78399432ab4a7"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"5d85c540e8a3382562a3c043c27c6479c5f15dae","unresolved":false,"context_lines":[{"line_number":372,"context_line":"            properties[\u0027target_portal\u0027] \u003d (\u0027%s:%s\u0027 % (target_ips[0], \u00273260\u0027))"},{"line_number":373,"context_line":"            properties[\u0027target_iqn\u0027] \u003d iscsi_iqns[0]"},{"line_number":374,"context_line":"            properties[\u0027target_lun\u0027] \u003d lun"},{"line_number":375,"context_line":"            properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":376,"context_line":"        else:"},{"line_number":377,"context_line":"            properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":378,"context_line":"            properties[\u0027target_iqns\u0027] \u003d [iqn for iqn in iscsi_iqns]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_d726ed15","line":375,"updated":"2015-06-14 19:20:40.000000000","message":"For better readability you can take following statements out of \"if else\" block.\nThey seem to be common for both the cases.\n\nproperties[\u0027target_discovered\u0027] \u003d False\n\nproperties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]","commit_id":"6909adb3aa0100ae3a0f4c650351310997fa1487"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"b45fdfc5849021a32219cf0c5a58c95b9fe3de0a","unresolved":false,"context_lines":[{"line_number":372,"context_line":"            properties[\u0027target_portal\u0027] \u003d (\u0027%s:%s\u0027 % (target_ips[0], \u00273260\u0027))"},{"line_number":373,"context_line":"            properties[\u0027target_iqn\u0027] \u003d iscsi_iqns[0]"},{"line_number":374,"context_line":"            properties[\u0027target_lun\u0027] \u003d lun"},{"line_number":375,"context_line":"            properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":376,"context_line":"        else:"},{"line_number":377,"context_line":"            properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":378,"context_line":"            properties[\u0027target_iqns\u0027] \u003d [iqn for iqn in iscsi_iqns]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_1777383b","line":375,"in_reply_to":"fa32b979_d726ed15","updated":"2015-06-16 08:25:08.000000000","message":"thanks for your comments.:)","commit_id":"6909adb3aa0100ae3a0f4c650351310997fa1487"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"224a6032c19fad2dde526bbec15631a3d549543b","unresolved":false,"context_lines":[{"line_number":335,"context_line":"            {\u0027initiator_name\u0027: initiator_name,"},{"line_number":336,"context_line":"             \u0027volume\u0027: volume_name})"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"\t\t portgroup_id) \u003d self.restclient.get_iscsi_params(self.xml_file_path,"},{"line_number":339,"context_line":"\t\t                                                   connector)"},{"line_number":340,"context_line":"        LOG.info(_LI(\u0027initialize_connection_iscsi,iscsi_iqn: %(iscsi_iqn)s, \u0027"},{"line_number":341,"context_line":"                     \u0027target_ip: %(target_ip)s, \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"9a41bdd9_beaa3084","line":338,"updated":"2015-07-11 13:10:54.000000000","message":"338 and 339 are obvious wrong.","commit_id":"5ad30e452d28b2a33dcc3eff3a1991dc0727fcd7"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"079026ceba4f702958a85f5907e4738b2c277e3c","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                \"%s:3260\" % ip for ip in target_ips]"},{"line_number":390,"context_line":"            properties[\u0027target_luns\u0027] \u003d [lun] * len(target_ips)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        # If use CHAP, return CHAP info."},{"line_number":393,"context_line":"        if chapinfo:"},{"line_number":394,"context_line":"            chap_username, chap_password \u003d chapinfo.split(\u0027;\u0027)"},{"line_number":395,"context_line":"            properties[\u0027auth_method\u0027] \u003d \u0027CHAP\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a50d1a3_0c256a07","line":392,"updated":"2015-07-23 10:06:12.000000000","message":"line 392 to 397 is same as line 399 to 404.","commit_id":"f7d2c7be949d1ef6969ce2ed6dd709859d53213b"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"80fd58997579ff9bbdbca3e8b208f04ba75ae21f","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                \"%s:3260\" % ip for ip in target_ips]"},{"line_number":390,"context_line":"            properties[\u0027target_luns\u0027] \u003d [lun] * len(target_ips)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        # If use CHAP, return CHAP info."},{"line_number":393,"context_line":"        if chapinfo:"},{"line_number":394,"context_line":"            chap_username, chap_password \u003d chapinfo.split(\u0027;\u0027)"},{"line_number":395,"context_line":"            properties[\u0027auth_method\u0027] \u003d \u0027CHAP\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a50d1a3_4fc7da63","line":392,"in_reply_to":"3a50d1a3_0c256a07","updated":"2015-07-23 13:10:02.000000000","message":"This is technique error when doing rebase, I will rebase again this patch, thanks!","commit_id":"f7d2c7be949d1ef6969ce2ed6dd709859d53213b"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"2a95d0670110fab4e81c402afdc7cf64520bb9a8","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                \"%s:3260\" % ip for ip in target_ips]"},{"line_number":390,"context_line":"            properties[\u0027target_luns\u0027] \u003d [lun] * len(target_ips)"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"        # If use CHAP, return CHAP info."},{"line_number":393,"context_line":"        if chapinfo:"},{"line_number":394,"context_line":"            chap_username, chap_password \u003d chapinfo.split(\u0027;\u0027)"},{"line_number":395,"context_line":"            properties[\u0027auth_method\u0027] \u003d \u0027CHAP\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a50d1a3_87e393d8","line":392,"in_reply_to":"3a50d1a3_0c256a07","updated":"2015-07-23 10:16:59.000000000","message":"good catch","commit_id":"f7d2c7be949d1ef6969ce2ed6dd709859d53213b"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"93d43ffb7177f6b9f413cecf4f2289d82e5d79ff","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":381,"context_line":"        multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":382,"context_line":"        if not multipath:"},{"line_number":383,"context_line":"            properties[\u0027target_portal\u0027] \u003d (\u0027%s:%s\u0027 % (target_ips[0], \u00273260\u0027))"},{"line_number":384,"context_line":"            properties[\u0027target_iqn\u0027] \u003d iscsi_iqns[0]"},{"line_number":385,"context_line":"            properties[\u0027target_lun\u0027] \u003d lun"},{"line_number":386,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_4c5d3d14","line":383,"updated":"2015-07-26 17:50:13.000000000","message":"Just put \"3260\" in the format string. No need have to perform that operation at runtime.","commit_id":"1dacf20756371f0e30a887179d1b63af228e2fe5"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"b4f66cb7e20c9662c58434f475e7a78501c7e281","unresolved":false,"context_lines":[{"line_number":380,"context_line":"        properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":381,"context_line":"        multipath \u003d connector.get(\u0027multipath\u0027, False)"},{"line_number":382,"context_line":"        if not multipath:"},{"line_number":383,"context_line":"            properties[\u0027target_portal\u0027] \u003d (\u0027%s:%s\u0027 % (target_ips[0], \u00273260\u0027))"},{"line_number":384,"context_line":"            properties[\u0027target_iqn\u0027] \u003d iscsi_iqns[0]"},{"line_number":385,"context_line":"            properties[\u0027target_lun\u0027] \u003d lun"},{"line_number":386,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3a50d1a3_b55c407e","line":383,"in_reply_to":"3a50d1a3_4c5d3d14","updated":"2015-07-27 01:37:14.000000000","message":"Done","commit_id":"1dacf20756371f0e30a887179d1b63af228e2fe5"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2a8e435c7edef5683c85ac07905e9b98cffedb98","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        volume_size \u003d huawei_utils.get_volume_size(volume)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        LOG.info(_LI("},{"line_number":78,"context_line":"            \"Create volume: %(volume)s, size: %(size)s.\"),"},{"line_number":79,"context_line":"            {\u0027volume\u0027: volume_name,"},{"line_number":80,"context_line":"             \u0027size\u0027: volume_size})"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_dec1b330","line":78,"updated":"2015-07-28 04:01:30.000000000","message":"Keep \"\" and \u0027\u0027 consistent.","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"cc69413a8e1bddb77cb53283b26e437f4764bbd5","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        volume_size \u003d huawei_utils.get_volume_size(volume)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        LOG.info(_LI("},{"line_number":78,"context_line":"            \"Create volume: %(volume)s, size: %(size)s.\"),"},{"line_number":79,"context_line":"            {\u0027volume\u0027: volume_name,"},{"line_number":80,"context_line":"             \u0027size\u0027: volume_size})"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_6457b05a","line":78,"in_reply_to":"3a50d1a3_dec1b330","updated":"2015-07-28 06:51:34.000000000","message":"Done","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"9c1d090793023f0fcbd81f5e6547b55a77bde600","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        volume_size \u003d huawei_utils.get_volume_size(volume)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        LOG.info(_LI("},{"line_number":78,"context_line":"            \"Create volume: %(volume)s, size: %(size)s.\"),"},{"line_number":79,"context_line":"            {\u0027volume\u0027: volume_name,"},{"line_number":80,"context_line":"             \u0027size\u0027: volume_size})"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_2365c51c","line":78,"in_reply_to":"3a50d1a3_dec1b330","updated":"2015-07-29 15:58:14.000000000","message":"There is no difference between \"this\" and \u0027this\u0027, so unless one or the other is needed to allow having quotes in the string without escaping, it really doesn\u0027t make any difference.\n\nPlease don\u0027t update files to change this. It is not necessary and just causes reviews to show extra changed lines of code that have no value.","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2a8e435c7edef5683c85ac07905e9b98cffedb98","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            if self.restclient.check_lun_exist(lun_id):"},{"line_number":113,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":114,"context_line":"        else:"},{"line_number":115,"context_line":"            LOG.warning(_LW(\u0027Cannot find %s on the array.\u0027), lun_id)"},{"line_number":116,"context_line":"            return False"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_9edecb0f","line":115,"updated":"2015-07-28 04:01:30.000000000","message":"Maybe add \"lun\" before \"%s on the array\" is better.","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"cc69413a8e1bddb77cb53283b26e437f4764bbd5","unresolved":false,"context_lines":[{"line_number":112,"context_line":"            if self.restclient.check_lun_exist(lun_id):"},{"line_number":113,"context_line":"                self.restclient.delete_lun(lun_id)"},{"line_number":114,"context_line":"        else:"},{"line_number":115,"context_line":"            LOG.warning(_LW(\u0027Cannot find %s on the array.\u0027), lun_id)"},{"line_number":116,"context_line":"            return False"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_845c3c7e","line":115,"in_reply_to":"3a50d1a3_9edecb0f","updated":"2015-07-28 06:51:34.000000000","message":"Done","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"2a8e435c7edef5683c85ac07905e9b98cffedb98","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                                                  initiator_name)"},{"line_number":376,"context_line":"        # Return iSCSI properties."},{"line_number":377,"context_line":"        properties \u003d {}"},{"line_number":378,"context_line":"        lun \u003d int(hostlun_id)"},{"line_number":379,"context_line":"        properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":380,"context_line":"        properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":381,"context_line":"        multipath \u003d connector.get(\u0027multipath\u0027, False)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_fea7cfa4","line":378,"updated":"2015-07-28 04:01:30.000000000","message":"Replace (int, long) with six.integer_types","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"cc69413a8e1bddb77cb53283b26e437f4764bbd5","unresolved":false,"context_lines":[{"line_number":375,"context_line":"                                                  initiator_name)"},{"line_number":376,"context_line":"        # Return iSCSI properties."},{"line_number":377,"context_line":"        properties \u003d {}"},{"line_number":378,"context_line":"        lun \u003d int(hostlun_id)"},{"line_number":379,"context_line":"        properties[\u0027target_discovered\u0027] \u003d False"},{"line_number":380,"context_line":"        properties[\u0027volume_id\u0027] \u003d volume[\u0027id\u0027]"},{"line_number":381,"context_line":"        multipath \u003d connector.get(\u0027multipath\u0027, False)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_e47e60ae","line":378,"in_reply_to":"3a50d1a3_fea7cfa4","updated":"2015-07-28 06:51:34.000000000","message":"Done","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"bb78d10360c465793740c749f06a9adc26ea8e76","unresolved":false,"context_lines":[{"line_number":624,"context_line":""},{"line_number":625,"context_line":"    Version history:"},{"line_number":626,"context_line":"        1.0.0 - Initial driver"},{"line_number":627,"context_line":"        1.1.0 - Provide Huawei OceanStor 18000 storage volume driver."},{"line_number":628,"context_line":"    \"\"\""},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    VERSION \u003d \u00271.1.1\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_044048a4","line":627,"updated":"2015-07-27 15:37:15.000000000","message":"Want to update version history for 1.1.1?","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2b393034885e979ef09f7f9e872818a3238d57b1","unresolved":false,"context_lines":[{"line_number":624,"context_line":""},{"line_number":625,"context_line":"    Version history:"},{"line_number":626,"context_line":"        1.0.0 - Initial driver"},{"line_number":627,"context_line":"        1.1.0 - Provide Huawei OceanStor 18000 storage volume driver."},{"line_number":628,"context_line":"    \"\"\""},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    VERSION \u003d \u00271.1.1\u0027"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_31ca61a2","line":627,"in_reply_to":"3a50d1a3_044048a4","updated":"2015-07-27 15:59:27.000000000","message":"Sure, I will update the version history in the latter patch, thanks!","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"c25f0e95f4451f681cbd1ecc07f7302fe0528628","unresolved":false,"context_lines":[{"line_number":607,"context_line":"                SmartX support"},{"line_number":608,"context_line":"                Volume migration support"},{"line_number":609,"context_line":"                Volume retype support"},{"line_number":610,"context_line":"                Hypermetro support"},{"line_number":611,"context_line":"    \"\"\""},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"    VERSION \u003d \u00271.1.1\u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a50d1a3_79e883b3","line":610,"updated":"2015-07-29 01:09:45.000000000","message":"This patch only adds \"iSCSI multipath support\", so you shouldn\u0027t add all other new features in this version history.  You can keep 1.1.1 and add only features implemented in a particular patch in the version history of that patch.","commit_id":"40f77196a78d6de95f51f3f020048d898a3e995f"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"35067464d2e54842fd4a96f88d8163d4417aa1ad","unresolved":false,"context_lines":[{"line_number":607,"context_line":"                SmartX support"},{"line_number":608,"context_line":"                Volume migration support"},{"line_number":609,"context_line":"                Volume retype support"},{"line_number":610,"context_line":"                Hypermetro support"},{"line_number":611,"context_line":"    \"\"\""},{"line_number":612,"context_line":""},{"line_number":613,"context_line":"    VERSION \u003d \u00271.1.1\u0027"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a50d1a3_41f7cdd2","line":610,"in_reply_to":"3a50d1a3_79e883b3","updated":"2015-07-29 04:58:18.000000000","message":"Done","commit_id":"40f77196a78d6de95f51f3f020048d898a3e995f"}],"cinder/volume/drivers/huawei/rest_client.py":[{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"db62462f8eeb38f3f3c63269cbffec37be7c761f","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":973,"context_line":"        self._assert_rest_result(result, \u0027Update QoS policy error.\u0027)"},{"line_number":974,"context_line":""},{"line_number":975,"context_line":"    def _get_tgt_ip_from_portgroup(self, portgroup_id):"},{"line_number":976,"context_line":"        target_ips \u003d []"},{"line_number":977,"context_line":"        url \u003d self.url + (\"/eth_port/associate?TYPE\u003d213\u0026ASSOCIATEOBJTYPE\u003d257\""},{"line_number":978,"context_line":"                          \"\u0026ASSOCIATEOBJID\u003d%s\" % portgroup_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_9f0ce443","line":975,"updated":"2015-06-05 02:13:08.000000000","message":"It is better to have tests covering this method.","commit_id":"45c42beb257bc385ba3bd526aae78399432ab4a7"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"3ff0dc8ccaaaa1d2b87f8d014ef6217cb676bcf2","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        result \u003d self.call(url, data, \"PUT\")"},{"line_number":973,"context_line":"        self._assert_rest_result(result, \u0027Update QoS policy error.\u0027)"},{"line_number":974,"context_line":""},{"line_number":975,"context_line":"    def _get_tgt_ip_from_portgroup(self, portgroup_id):"},{"line_number":976,"context_line":"        target_ips \u003d []"},{"line_number":977,"context_line":"        url \u003d self.url + (\"/eth_port/associate?TYPE\u003d213\u0026ASSOCIATEOBJTYPE\u003d257\""},{"line_number":978,"context_line":"                          \"\u0026ASSOCIATEOBJID\u003d%s\" % portgroup_id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_5f00f765","line":975,"in_reply_to":"3afb71cf_9f0ce443","updated":"2015-06-10 10:02:26.000000000","message":"Done","commit_id":"45c42beb257bc385ba3bd526aae78399432ab4a7"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"db62462f8eeb38f3f3c63269cbffec37be7c761f","unresolved":false,"context_lines":[{"line_number":995,"context_line":""},{"line_number":996,"context_line":"        return target_ips"},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"    def _get_iscsi_params(self, conf, connector):"},{"line_number":999,"context_line":"        \"\"\"Get target iSCSI params, including iqn, IP.\"\"\""},{"line_number":1000,"context_line":"        initiator \u003d connector[\u0027initiator\u0027]"},{"line_number":1001,"context_line":"        iscsi_conf \u003d huawei_utils._get_iscsi_conf(conf)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_5f066c21","line":998,"updated":"2015-06-05 02:13:08.000000000","message":"It is better to have tests covering this method.","commit_id":"45c42beb257bc385ba3bd526aae78399432ab4a7"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"3ff0dc8ccaaaa1d2b87f8d014ef6217cb676bcf2","unresolved":false,"context_lines":[{"line_number":995,"context_line":""},{"line_number":996,"context_line":"        return target_ips"},{"line_number":997,"context_line":""},{"line_number":998,"context_line":"    def _get_iscsi_params(self, conf, connector):"},{"line_number":999,"context_line":"        \"\"\"Get target iSCSI params, including iqn, IP.\"\"\""},{"line_number":1000,"context_line":"        initiator \u003d connector[\u0027initiator\u0027]"},{"line_number":1001,"context_line":"        iscsi_conf \u003d huawei_utils._get_iscsi_conf(conf)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_7ffdf36c","line":998,"in_reply_to":"3afb71cf_5f066c21","updated":"2015-06-10 10:02:26.000000000","message":"Done","commit_id":"45c42beb257bc385ba3bd526aae78399432ab4a7"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"5d85c540e8a3382562a3c043c27c6479c5f15dae","unresolved":false,"context_lines":[{"line_number":991,"context_line":"                    target_ip \u003d item[\u0027IPV4ADDR\u0027]"},{"line_number":992,"context_line":"                    LOG.info(_LI(\u0027_get_tgt_ip_from_portgroup: Get ip: %s.\u0027),"},{"line_number":993,"context_line":"                             target_ip)"},{"line_number":994,"context_line":"                target_ips.append(target_ip)"},{"line_number":995,"context_line":""},{"line_number":996,"context_line":"        return target_ips"},{"line_number":997,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_d76d8d33","line":994,"updated":"2015-06-14 19:20:40.000000000","message":"Shouldn\u0027t this be part of if block?","commit_id":"6909adb3aa0100ae3a0f4c650351310997fa1487"},{"author":{"_account_id":8202,"name":"chenzongliang","email":"chenzongliang@huawei.com","username":"zongliang"},"change_message_id":"b45fdfc5849021a32219cf0c5a58c95b9fe3de0a","unresolved":false,"context_lines":[{"line_number":991,"context_line":"                    target_ip \u003d item[\u0027IPV4ADDR\u0027]"},{"line_number":992,"context_line":"                    LOG.info(_LI(\u0027_get_tgt_ip_from_portgroup: Get ip: %s.\u0027),"},{"line_number":993,"context_line":"                             target_ip)"},{"line_number":994,"context_line":"                target_ips.append(target_ip)"},{"line_number":995,"context_line":""},{"line_number":996,"context_line":"        return target_ips"},{"line_number":997,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_f792d44a","line":994,"in_reply_to":"fa32b979_d76d8d33","updated":"2015-06-16 08:25:08.000000000","message":"thanks. :)","commit_id":"6909adb3aa0100ae3a0f4c650351310997fa1487"},{"author":{"_account_id":16676,"name":"Lakshman","email":"lakshminarayanat@vedams.com","username":"Lakshman","tags":["SERVICE_USER"]},"change_message_id":"39c163aaf523c156994b2ff2747e578899b3b89a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 - 2016 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_edb52bd0","line":1,"updated":"2015-07-07 07:28:17.000000000","message":"A range of dates is unnecessary in copyright statement. It should be the first published year.\nRefer to https://wiki.openstack.org/wiki/Documentation/Copyright","commit_id":"50344ff5db1cb6cf8034b217185e92610863da13"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2792e55020f2d8fa3031364e2a95d17716b3be64","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 - 2016 Huawei Technologies Co., Ltd."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_b57568cd","line":1,"in_reply_to":"ba3cc151_edb52bd0","updated":"2015-07-10 09:44:59.000000000","message":"Done","commit_id":"50344ff5db1cb6cf8034b217185e92610863da13"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b1411cd540846d64e00c1e1016f6192736c7d38d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        return res_json"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def login(self):"},{"line_number":84,"context_line":"        \"\"\"Log in 18000 array.\"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        login_info \u003d huawei_utils._get_login_info(self.configuration)"},{"line_number":87,"context_line":"        url \u003d login_info[\u0027RestURL\u0027] + \"xx/sessions\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_6d3a7bcf","line":84,"updated":"2015-07-07 07:16:08.000000000","message":"\"Log in\" should be \"Login\".","commit_id":"50344ff5db1cb6cf8034b217185e92610863da13"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2792e55020f2d8fa3031364e2a95d17716b3be64","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        return res_json"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def login(self):"},{"line_number":84,"context_line":"        \"\"\"Log in 18000 array.\"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        login_info \u003d huawei_utils._get_login_info(self.configuration)"},{"line_number":87,"context_line":"        url \u003d login_info[\u0027RestURL\u0027] + \"xx/sessions\""}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_554dfc97","line":84,"in_reply_to":"ba3cc151_6d3a7bcf","updated":"2015-07-10 09:44:59.000000000","message":"Done","commit_id":"50344ff5db1cb6cf8034b217185e92610863da13"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"b1411cd540846d64e00c1e1016f6192736c7d38d","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        url \u003d self.url + \"/sessions\""},{"line_number":106,"context_line":"        if self.url:"},{"line_number":107,"context_line":"            result \u003d self.call(url, None, \"DELETE\")"},{"line_number":108,"context_line":"            self._assert_rest_result(result, \u0027Log out of session error.\u0027)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _assert_rest_result(self, result, err_str):"},{"line_number":111,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_4d2f7788","line":108,"updated":"2015-07-07 07:16:08.000000000","message":"\"Log out\" should be \"Logout\".","commit_id":"50344ff5db1cb6cf8034b217185e92610863da13"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"2792e55020f2d8fa3031364e2a95d17716b3be64","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        url \u003d self.url + \"/sessions\""},{"line_number":106,"context_line":"        if self.url:"},{"line_number":107,"context_line":"            result \u003d self.call(url, None, \"DELETE\")"},{"line_number":108,"context_line":"            self._assert_rest_result(result, \u0027Log out of session error.\u0027)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def _assert_rest_result(self, result, err_str):"},{"line_number":111,"context_line":"        error_code \u003d result[\u0027error\u0027][\u0027code\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba3cc151_15477478","line":108,"in_reply_to":"ba3cc151_4d2f7788","updated":"2015-07-10 09:44:59.000000000","message":"Done","commit_id":"50344ff5db1cb6cf8034b217185e92610863da13"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"2872909117bce20b47ce6aa2f59804de009d3bd2","unresolved":false,"context_lines":[{"line_number":1009,"context_line":""},{"line_number":1010,"context_line":"        if \"data\" in result:"},{"line_number":1011,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":1012,"context_line":"                target_ip \u003d None"},{"line_number":1013,"context_line":"                if (item[\u0027IPV4ADDR\u0027] and item[\u0027HEALTHSTATUS\u0027] \u003d\u003d"},{"line_number":1014,"context_line":"                    constants.STATUS_HEALTH"},{"line_number":1015,"context_line":"                   and item[\u0027RUNNINGSTATUS\u0027] \u003d\u003d constants.STATUS_RUNNING):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a41bdd9_78c70164","line":1012,"updated":"2015-07-16 06:14:18.000000000","message":"You don\u0027t need this.\nOn line 1016 you can directly do \n\ntarget_ips.append( item[\u0027IPV4ADDR\u0027] )","commit_id":"93c28e1223dd777153f619b82e35349291120565"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8707664d17df658028ddbf78b9b30247daa5d15b","unresolved":false,"context_lines":[{"line_number":1009,"context_line":""},{"line_number":1010,"context_line":"        if \"data\" in result:"},{"line_number":1011,"context_line":"            for item in result[\u0027data\u0027]:"},{"line_number":1012,"context_line":"                target_ip \u003d None"},{"line_number":1013,"context_line":"                if (item[\u0027IPV4ADDR\u0027] and item[\u0027HEALTHSTATUS\u0027] \u003d\u003d"},{"line_number":1014,"context_line":"                    constants.STATUS_HEALTH"},{"line_number":1015,"context_line":"                   and item[\u0027RUNNINGSTATUS\u0027] \u003d\u003d constants.STATUS_RUNNING):"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a41bdd9_1e76ce05","line":1012,"in_reply_to":"9a41bdd9_78c70164","updated":"2015-07-18 01:00:30.000000000","message":"Done","commit_id":"93c28e1223dd777153f619b82e35349291120565"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"2872909117bce20b47ce6aa2f59804de009d3bd2","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"                    if key \u003d\u003d \u0027TargetPortGroup\u0027:"},{"line_number":1035,"context_line":"                        portgroup \u003d ini[\u0027TargetPortGroup\u0027]"},{"line_number":1036,"context_line":"                    elif key \u003d\u003d \u0027TargetIP\u0027:"},{"line_number":1037,"context_line":"                        target_ips.append(ini[\u0027TargetIP\u0027])"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        if portgroup:"},{"line_number":1040,"context_line":"            portgroup_id \u003d self.find_tgt_port_group(portgroup)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a41bdd9_3892d94c","line":1037,"updated":"2015-07-16 06:14:18.000000000","message":"target_ips may get overwritten on line 1041. Is it expected?","commit_id":"93c28e1223dd777153f619b82e35349291120565"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"79a33af68cc61260915f66334fc4c7ccdacb3721","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"                    if key \u003d\u003d \u0027TargetPortGroup\u0027:"},{"line_number":1035,"context_line":"                        portgroup \u003d ini[\u0027TargetPortGroup\u0027]"},{"line_number":1036,"context_line":"                    elif key \u003d\u003d \u0027TargetIP\u0027:"},{"line_number":1037,"context_line":"                        target_ips.append(ini[\u0027TargetIP\u0027])"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        if portgroup:"},{"line_number":1040,"context_line":"            portgroup_id \u003d self.find_tgt_port_group(portgroup)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a41bdd9_c2b9647b","line":1037,"in_reply_to":"9a41bdd9_3892d94c","updated":"2015-07-17 12:46:49.000000000","message":"Good point. Please reply to this","commit_id":"93c28e1223dd777153f619b82e35349291120565"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"8707664d17df658028ddbf78b9b30247daa5d15b","unresolved":false,"context_lines":[{"line_number":1034,"context_line":"                    if key \u003d\u003d \u0027TargetPortGroup\u0027:"},{"line_number":1035,"context_line":"                        portgroup \u003d ini[\u0027TargetPortGroup\u0027]"},{"line_number":1036,"context_line":"                    elif key \u003d\u003d \u0027TargetIP\u0027:"},{"line_number":1037,"context_line":"                        target_ips.append(ini[\u0027TargetIP\u0027])"},{"line_number":1038,"context_line":""},{"line_number":1039,"context_line":"        if portgroup:"},{"line_number":1040,"context_line":"            portgroup_id \u003d self.find_tgt_port_group(portgroup)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9a41bdd9_3ea4f248","line":1037,"in_reply_to":"9a41bdd9_3892d94c","updated":"2015-07-18 01:00:30.000000000","message":"Yes, if portgroup is configured, we will overwritten it.","commit_id":"93c28e1223dd777153f619b82e35349291120565"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"5437a1082e139311442097d806e5a72a2bac6bc6","unresolved":false,"context_lines":[{"line_number":913,"context_line":"                         \u0027free_capacity\u0027: 0.0}"},{"line_number":914,"context_line":""},{"line_number":915,"context_line":"        if poolinfo:"},{"line_number":916,"context_line":"            total \u003d int(poolinfo[\u0027TOTALCAPACITY\u0027]) / 1024.0 / 1024.0 / 2"},{"line_number":917,"context_line":"            free \u003d int(poolinfo[\u0027CAPACITY\u0027]) / 1024.0 / 1024.0 / 2"},{"line_number":918,"context_line":"            pool_capacity[\u0027total_capacity\u0027] \u003d total"},{"line_number":919,"context_line":"            pool_capacity[\u0027free_capacity\u0027] \u003d free"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_81df4e39","line":916,"updated":"2015-07-28 05:01:42.000000000","message":"Replace (int, long) with six.integer_types","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"cc69413a8e1bddb77cb53283b26e437f4764bbd5","unresolved":false,"context_lines":[{"line_number":913,"context_line":"                         \u0027free_capacity\u0027: 0.0}"},{"line_number":914,"context_line":""},{"line_number":915,"context_line":"        if poolinfo:"},{"line_number":916,"context_line":"            total \u003d int(poolinfo[\u0027TOTALCAPACITY\u0027]) / 1024.0 / 1024.0 / 2"},{"line_number":917,"context_line":"            free \u003d int(poolinfo[\u0027CAPACITY\u0027]) / 1024.0 / 1024.0 / 2"},{"line_number":918,"context_line":"            pool_capacity[\u0027total_capacity\u0027] \u003d total"},{"line_number":919,"context_line":"            pool_capacity[\u0027free_capacity\u0027] \u003d free"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_471f1608","line":916,"in_reply_to":"3a50d1a3_81df4e39","updated":"2015-07-28 06:51:34.000000000","message":"Done","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"5437a1082e139311442097d806e5a72a2bac6bc6","unresolved":false,"context_lines":[{"line_number":914,"context_line":""},{"line_number":915,"context_line":"        if poolinfo:"},{"line_number":916,"context_line":"            total \u003d int(poolinfo[\u0027TOTALCAPACITY\u0027]) / 1024.0 / 1024.0 / 2"},{"line_number":917,"context_line":"            free \u003d int(poolinfo[\u0027CAPACITY\u0027]) / 1024.0 / 1024.0 / 2"},{"line_number":918,"context_line":"            pool_capacity[\u0027total_capacity\u0027] \u003d total"},{"line_number":919,"context_line":"            pool_capacity[\u0027free_capacity\u0027] \u003d free"},{"line_number":920,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_21e99ae6","line":917,"updated":"2015-07-28 05:01:42.000000000","message":"Replace (int, long) with six.integer_types","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"cc69413a8e1bddb77cb53283b26e437f4764bbd5","unresolved":false,"context_lines":[{"line_number":914,"context_line":""},{"line_number":915,"context_line":"        if poolinfo:"},{"line_number":916,"context_line":"            total \u003d int(poolinfo[\u0027TOTALCAPACITY\u0027]) / 1024.0 / 1024.0 / 2"},{"line_number":917,"context_line":"            free \u003d int(poolinfo[\u0027CAPACITY\u0027]) / 1024.0 / 1024.0 / 2"},{"line_number":918,"context_line":"            pool_capacity[\u0027total_capacity\u0027] \u003d total"},{"line_number":919,"context_line":"            pool_capacity[\u0027free_capacity\u0027] \u003d free"},{"line_number":920,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"3a50d1a3_e71742ec","line":917,"in_reply_to":"3a50d1a3_21e99ae6","updated":"2015-07-28 06:51:34.000000000","message":"Done","commit_id":"70accc73d5e157dcd62fdd21027bd6410aa357c6"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f50c49f67926b039b4e6d370b15edff6c2a9e52d","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        except Exception:"},{"line_number":385,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":386,"context_line":"                err_msg \u003d _("},{"line_number":387,"context_line":"                    \u0027Error occurred when adding hostgroup and lungroup to \u0027"},{"line_number":388,"context_line":"                    \u0027view. Remove lun from lungroup now.\u0027)"},{"line_number":389,"context_line":"                LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3a50d1a3_c4f3bd07","line":386,"updated":"2015-07-29 19:55:29.000000000","message":"Since this is only used for LOG.error it needs to be _LE()","commit_id":"5aebde877f1d23bda4cebab1bf4c211c22458d2c"},{"author":{"_account_id":13203,"name":"Wilson Liu","email":"295988511@qq.com","username":"Bob-OpenStack"},"change_message_id":"571ff0562c424892f2f269cfd71b3b981eb5eaf9","unresolved":false,"context_lines":[{"line_number":383,"context_line":""},{"line_number":384,"context_line":"        except Exception:"},{"line_number":385,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":386,"context_line":"                err_msg \u003d _("},{"line_number":387,"context_line":"                    \u0027Error occurred when adding hostgroup and lungroup to \u0027"},{"line_number":388,"context_line":"                    \u0027view. Remove lun from lungroup now.\u0027)"},{"line_number":389,"context_line":"                LOG.error(err_msg)"}],"source_content_type":"text/x-python","patch_set":32,"id":"3a50d1a3_e464b922","line":386,"in_reply_to":"3a50d1a3_c4f3bd07","updated":"2015-07-29 20:11:08.000000000","message":"Done, thanks!","commit_id":"5aebde877f1d23bda4cebab1bf4c211c22458d2c"}]}
