)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"96d9e8f1c06b5e7989fb0b22296ca89e30167073","unresolved":false,"context_lines":[{"line_number":16,"context_line":"at most to connect to the SSH server at the same time."},{"line_number":17,"context_line":"This patchset also enables every SSH client connect to the other"},{"line_number":18,"context_line":"controller when they failed to connect to the current controller."},{"line_number":19,"context_line":"For example,failed to A,then to B,or,failed to B,then to A."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Fixes bug: 1160340"},{"line_number":22,"context_line":"Fixes bug: 1136892"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAOH%2F%2Fve0%3D","line":19,"updated":"2013-03-29 19:23:07.000000000","message":"It could be easier to review these patches with only one bug fix per review, you only have two bugs listed below but fixed a number of other items issues as well","commit_id":"fe9c7dedaff9e2243796e6dd2b86dbab57e92be0"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"e82c927f1f4d7375a4a14a6b90dbe2effdbbaf18","unresolved":false,"context_lines":[{"line_number":16,"context_line":"at most to connect to the SSH server at the same time."},{"line_number":17,"context_line":"This patchset also enables every SSH client connect to the other"},{"line_number":18,"context_line":"controller when they failed to connect to the current controller."},{"line_number":19,"context_line":"For example,failed to A,then to B,or,failed to B,then to A."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Fixes bug: 1160340"},{"line_number":22,"context_line":"Fixes bug: 1136892"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAOH%2F%2FvDg%3D","line":19,"in_reply_to":"AAAAOH%2F%2Fve0%3D","updated":"2013-03-30 15:33:52.000000000","message":"I‘ll report a new bug for (4).Thanks.","commit_id":"fe9c7dedaff9e2243796e6dd2b86dbab57e92be0"}],"cinder/tests/test_huawei.py":[{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"96d9e8f1c06b5e7989fb0b22296ca89e30167073","unresolved":false,"context_lines":[{"line_number":820,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr)"},{"line_number":821,"context_line":"        return root"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"    def _get_lun_controller(self, lunid):"},{"line_number":824,"context_line":"        pass"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    def _get_login_info(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fvec%3D","line":823,"updated":"2013-03-29 19:23:07.000000000","message":"Can you not provide test here?","commit_id":"fe9c7dedaff9e2243796e6dd2b86dbab57e92be0"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"e82c927f1f4d7375a4a14a6b90dbe2effdbbaf18","unresolved":false,"context_lines":[{"line_number":820,"context_line":"            raise exception.VolumeBackendAPIException(data\u003derr)"},{"line_number":821,"context_line":"        return root"},{"line_number":822,"context_line":""},{"line_number":823,"context_line":"    def _get_lun_controller(self, lunid):"},{"line_number":824,"context_line":"        pass"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    def _get_login_info(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fu6U%3D","line":823,"in_reply_to":"AAAAOH%2F%2Fvec%3D","updated":"2013-03-30 15:33:52.000000000","message":"I can\u0027t provide a test for this function because the cli cmd is similar to _find_lun,both begining with \"showlun\".Thanks.","commit_id":"fe9c7dedaff9e2243796e6dd2b86dbab57e92be0"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"96d9e8f1c06b5e7989fb0b22296ca89e30167073","unresolved":false,"context_lines":[{"line_number":823,"context_line":"    def _get_lun_controller(self, lunid):"},{"line_number":824,"context_line":"        pass"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    def _get_login_info(self):"},{"line_number":827,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2FveU%3D","line":826,"updated":"2013-03-29 19:23:07.000000000","message":"Can you not provide test here?","commit_id":"fe9c7dedaff9e2243796e6dd2b86dbab57e92be0"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"e82c927f1f4d7375a4a14a6b90dbe2effdbbaf18","unresolved":false,"context_lines":[{"line_number":823,"context_line":"    def _get_lun_controller(self, lunid):"},{"line_number":824,"context_line":"        pass"},{"line_number":825,"context_line":""},{"line_number":826,"context_line":"    def _get_login_info(self):"},{"line_number":827,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fu6Y%3D","line":826,"in_reply_to":"AAAAOH%2F%2FveU%3D","updated":"2013-03-30 15:33:52.000000000","message":"I have fixed it by using module tempfile and xml.dom.minidom to create a temporary xml config file.thanks.","commit_id":"fe9c7dedaff9e2243796e6dd2b86dbab57e92be0"}],"cinder/volume/drivers/huawei/huawei_iscsi.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"b163ee4bd2a141c1e6c78f8ba0c34f1c4a364aa0","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        # Change lun ownning controller for better performance."},{"line_number":291,"context_line":"        if self._get_lun_controller(lun_id) !\u003d controller:"},{"line_number":292,"context_line":"            self._change_lun_controller(lun_id, controller)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        # Return iSCSI properties."},{"line_number":295,"context_line":"        properties \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOH%2F%2Fy%2BU%3D","line":292,"updated":"2013-03-27 05:36:20.000000000","message":"Instead of changing the owning controller, isn\u0027t it easier to just return the login info for the controller that owns the LUN?","commit_id":"e795f966b948f0b2f12f771c1f81772106a13a1f"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"f8144c619b9994e3ce0663cd4598d26fcafb0148","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        # Change lun ownning controller for better performance."},{"line_number":291,"context_line":"        if self._get_lun_controller(lun_id) !\u003d controller:"},{"line_number":292,"context_line":"            self._change_lun_controller(lun_id, controller)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        # Return iSCSI properties."},{"line_number":295,"context_line":"        properties \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOH%2F%2Fxfo%3D","line":292,"in_reply_to":"AAAAOH%2F%2Fy%2BU%3D","updated":"2013-03-28 02:38:14.000000000","message":"Thanks for suggestion.\nIn single path, We firstly specify a iSCSI port IP to a Nova-compute host in conf file, this determins the physical structure of network. It allows one storage device to provide service for muti compute host. Then we need optimize the IO performance according the physical structure because the LUN owning controller may be not the one connected with the target compute host.\nI think your suggestion will be a good idea in multi path. I will rewrite it in havana.Thanks.","commit_id":"e795f966b948f0b2f12f771c1f81772106a13a1f"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"96d9e8f1c06b5e7989fb0b22296ca89e30167073","unresolved":false,"context_lines":[{"line_number":43,"context_line":"HOST_GROUP_NAME \u003d \u0027HostGroup_OpenStack\u0027"},{"line_number":44,"context_line":"HOST_NAME_PREFIX \u003d \u0027Host_\u0027"},{"line_number":45,"context_line":"HOST_PORT_PREFIX \u003d \u0027HostPort_\u0027"},{"line_number":46,"context_line":"VOL_AND_SNAP_NAME_FREFIX \u003d \u0027OpenStack_\u0027"},{"line_number":47,"context_line":"READBUFFERSIZE \u003d 8192"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fvfw%3D","line":46,"updated":"2013-03-29 19:23:07.000000000","message":"Not part of your patch but should this not be VOL_AND_SNAP_NAME_PREFIX?","commit_id":"fe9c7dedaff9e2243796e6dd2b86dbab57e92be0"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"e82c927f1f4d7375a4a14a6b90dbe2effdbbaf18","unresolved":false,"context_lines":[{"line_number":43,"context_line":"HOST_GROUP_NAME \u003d \u0027HostGroup_OpenStack\u0027"},{"line_number":44,"context_line":"HOST_NAME_PREFIX \u003d \u0027Host_\u0027"},{"line_number":45,"context_line":"HOST_PORT_PREFIX \u003d \u0027HostPort_\u0027"},{"line_number":46,"context_line":"VOL_AND_SNAP_NAME_FREFIX \u003d \u0027OpenStack_\u0027"},{"line_number":47,"context_line":"READBUFFERSIZE \u003d 8192"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2FvD4%3D","line":46,"in_reply_to":"AAAAOH%2F%2Fvfw%3D","updated":"2013-03-30 15:33:52.000000000","message":"Thank for your review.I\u0027ll fix it.","commit_id":"fe9c7dedaff9e2243796e6dd2b86dbab57e92be0"},{"author":{"_account_id":6043,"name":"Kurt Martin","email":"kurt.f.martin@hpe.com","username":"kurt-f-martin"},"change_message_id":"96d9e8f1c06b5e7989fb0b22296ca89e30167073","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                  % {\u0027volume\u0027: volume_name,"},{"line_number":274,"context_line":"                     \u0027ini\u0027: initiator_name})"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self.login_info \u003d self._get_login_info()"},{"line_number":277,"context_line":"        # Get target iSCSI iqn."},{"line_number":278,"context_line":"        iscsi_conf \u003d self._get_iscsi_info()"},{"line_number":279,"context_line":"        target_ip \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Fvf4%3D","line":276,"updated":"2013-03-29 19:23:07.000000000","message":"where is this login_info used in initialize_connection?","commit_id":"fe9c7dedaff9e2243796e6dd2b86dbab57e92be0"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"e82c927f1f4d7375a4a14a6b90dbe2effdbbaf18","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                  % {\u0027volume\u0027: volume_name,"},{"line_number":274,"context_line":"                     \u0027ini\u0027: initiator_name})"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        self.login_info \u003d self._get_login_info()"},{"line_number":277,"context_line":"        # Get target iSCSI iqn."},{"line_number":278,"context_line":"        iscsi_conf \u003d self._get_iscsi_info()"},{"line_number":279,"context_line":"        target_ip \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2FvDk%3D","line":276,"in_reply_to":"AAAAOH%2F%2Fvf4%3D","updated":"2013-03-30 15:33:52.000000000","message":"we get login_info in real time and use the info to send CLI cmds In func _execute_cli. I\u0027ll rename _get_login_info to _refresh_login_info to make it more clear.Thanks.","commit_id":"fe9c7dedaff9e2243796e6dd2b86dbab57e92be0"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"0faef812cf868539c6d8f47a2586f1b9c79e1693","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            if ini[\u0027Name\u0027] \u003d\u003d initiator_name:"},{"line_number":224,"context_line":"                target_ip \u003d ini[\u0027TargetIP\u0027]"},{"line_number":225,"context_line":"                break"},{"line_number":226,"context_line":"        if not target_ip:"},{"line_number":227,"context_line":"            if not iscsi_conf[\u0027DefaultTargetIP\u0027]:"},{"line_number":228,"context_line":"                err_msg \u003d (_(\u0027initialize_connection:Failed to find target ip\u0027"},{"line_number":229,"context_line":"                             \u0027for initiator:%(initiatorname)s,\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2Fyc%3D","line":226,"updated":"2013-04-03 05:25:58.000000000","message":"Is it unnecessary to use \"if target_ip is not None\" here?","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"b95d56dca111c0e360d12bb16090011cfdbc05ad","unresolved":false,"context_lines":[{"line_number":223,"context_line":"            if ini[\u0027Name\u0027] \u003d\u003d initiator_name:"},{"line_number":224,"context_line":"                target_ip \u003d ini[\u0027TargetIP\u0027]"},{"line_number":225,"context_line":"                break"},{"line_number":226,"context_line":"        if not target_ip:"},{"line_number":227,"context_line":"            if not iscsi_conf[\u0027DefaultTargetIP\u0027]:"},{"line_number":228,"context_line":"                err_msg \u003d (_(\u0027initialize_connection:Failed to find target ip\u0027"},{"line_number":229,"context_line":"                             \u0027for initiator:%(initiatorname)s,\u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2Fq0%3D","line":226,"in_reply_to":"AAAAOX%2F%2F%2Fyc%3D","updated":"2013-04-03 08:27:11.000000000","message":"Unnecessary, because target_ip will never get a value 0.","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"0faef812cf868539c6d8f47a2586f1b9c79e1693","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                target_ip \u003d ini[\u0027TargetIP\u0027]"},{"line_number":225,"context_line":"                break"},{"line_number":226,"context_line":"        if not target_ip:"},{"line_number":227,"context_line":"            if not iscsi_conf[\u0027DefaultTargetIP\u0027]:"},{"line_number":228,"context_line":"                err_msg \u003d (_(\u0027initialize_connection:Failed to find target ip\u0027"},{"line_number":229,"context_line":"                             \u0027for initiator:%(initiatorname)s,\u0027"},{"line_number":230,"context_line":"                             \u0027please check config file.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2FyY%3D","line":227,"updated":"2013-04-03 05:25:58.000000000","message":"the same to line 226.","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"b95d56dca111c0e360d12bb16090011cfdbc05ad","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                target_ip \u003d ini[\u0027TargetIP\u0027]"},{"line_number":225,"context_line":"                break"},{"line_number":226,"context_line":"        if not target_ip:"},{"line_number":227,"context_line":"            if not iscsi_conf[\u0027DefaultTargetIP\u0027]:"},{"line_number":228,"context_line":"                err_msg \u003d (_(\u0027initialize_connection:Failed to find target ip\u0027"},{"line_number":229,"context_line":"                             \u0027for initiator:%(initiatorname)s,\u0027"},{"line_number":230,"context_line":"                             \u0027please check config file.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2Fqs%3D","line":227,"in_reply_to":"AAAAOX%2F%2F%2FyY%3D","updated":"2013-04-03 08:27:11.000000000","message":"Unnecessary.Thanks.","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"0faef812cf868539c6d8f47a2586f1b9c79e1693","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            target_ip \u003d iscsi_conf[\u0027DefaultTargetIP\u0027]"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        target_iqn \u003d self._get_tgt_iqn(target_ip)"},{"line_number":237,"context_line":"        if not target_iqn:"},{"line_number":238,"context_line":"            err_msg \u003d (_(\u0027initialize_connection:Failed to find target iSCSI\u0027"},{"line_number":239,"context_line":"                         \u0027iqn. Target IP:%(ip)s\u0027)"},{"line_number":240,"context_line":"                       % {\u0027ip\u0027: target_ip})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2FyU%3D","line":237,"updated":"2013-04-03 05:25:58.000000000","message":"the same to Line 226.","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"b95d56dca111c0e360d12bb16090011cfdbc05ad","unresolved":false,"context_lines":[{"line_number":234,"context_line":"            target_ip \u003d iscsi_conf[\u0027DefaultTargetIP\u0027]"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        target_iqn \u003d self._get_tgt_iqn(target_ip)"},{"line_number":237,"context_line":"        if not target_iqn:"},{"line_number":238,"context_line":"            err_msg \u003d (_(\u0027initialize_connection:Failed to find target iSCSI\u0027"},{"line_number":239,"context_line":"                         \u0027iqn. Target IP:%(ip)s\u0027)"},{"line_number":240,"context_line":"                       % {\u0027ip\u0027: target_ip})"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2Fqo%3D","line":237,"in_reply_to":"AAAAOX%2F%2F%2FyU%3D","updated":"2013-04-03 08:27:11.000000000","message":"Unnecessary.Thanks.","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"0faef812cf868539c6d8f47a2586f1b9c79e1693","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        # Create hostgroup and host."},{"line_number":245,"context_line":"        hostgroup_name \u003d HOST_GROUP_NAME"},{"line_number":246,"context_line":"        self.hostgroup_id \u003d self._find_hostgroup(hostgroup_name)"},{"line_number":247,"context_line":"        if not self.hostgroup_id:"},{"line_number":248,"context_line":"            self._create_hostgroup(hostgroup_name)"},{"line_number":249,"context_line":"            self.hostgroup_id \u003d self._find_hostgroup(hostgroup_name)"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2FyM%3D","line":247,"updated":"2013-04-03 05:25:58.000000000","message":"The same to Line 226.","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"b95d56dca111c0e360d12bb16090011cfdbc05ad","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        # Create hostgroup and host."},{"line_number":245,"context_line":"        hostgroup_name \u003d HOST_GROUP_NAME"},{"line_number":246,"context_line":"        self.hostgroup_id \u003d self._find_hostgroup(hostgroup_name)"},{"line_number":247,"context_line":"        if not self.hostgroup_id:"},{"line_number":248,"context_line":"            self._create_hostgroup(hostgroup_name)"},{"line_number":249,"context_line":"            self.hostgroup_id \u003d self._find_hostgroup(hostgroup_name)"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2Fqk%3D","line":247,"in_reply_to":"AAAAOX%2F%2F%2FyM%3D","updated":"2013-04-03 08:27:11.000000000","message":"Done","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"0faef812cf868539c6d8f47a2586f1b9c79e1693","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        host_name \u003d HOST_NAME_PREFIX + str(hash(initiator_name))"},{"line_number":252,"context_line":"        host_id \u003d self._find_host_in_hostgroup(host_name, self.hostgroup_id)"},{"line_number":253,"context_line":"        if not host_id:"},{"line_number":254,"context_line":"            self._add_host(host_name, self.hostgroup_id)"},{"line_number":255,"context_line":"            host_id \u003d self._find_host_in_hostgroup(host_name,"},{"line_number":256,"context_line":"                                                   self.hostgroup_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2FyE%3D","line":253,"updated":"2013-04-03 05:25:58.000000000","message":"The same to Line 226.","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"b95d56dca111c0e360d12bb16090011cfdbc05ad","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        host_name \u003d HOST_NAME_PREFIX + str(hash(initiator_name))"},{"line_number":252,"context_line":"        host_id \u003d self._find_host_in_hostgroup(host_name, self.hostgroup_id)"},{"line_number":253,"context_line":"        if not host_id:"},{"line_number":254,"context_line":"            self._add_host(host_name, self.hostgroup_id)"},{"line_number":255,"context_line":"            host_id \u003d self._find_host_in_hostgroup(host_name,"},{"line_number":256,"context_line":"                                                   self.hostgroup_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2Fqg%3D","line":253,"in_reply_to":"AAAAOX%2F%2F%2FyE%3D","updated":"2013-04-03 08:27:11.000000000","message":"Done","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"0faef812cf868539c6d8f47a2586f1b9c79e1693","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        # Map a LUN to a host if not mapped."},{"line_number":284,"context_line":"        lun_id \u003d self._find_lun(volume_name)"},{"line_number":285,"context_line":"        if not lun_id:"},{"line_number":286,"context_line":"            err_msg \u003d (_(\u0027initialize_connection:Failed to find the \u0027"},{"line_number":287,"context_line":"                         \u0027given volume. \u0027"},{"line_number":288,"context_line":"                         \u0027volume name:%(volume)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2FyA%3D","line":285,"updated":"2013-04-03 05:25:58.000000000","message":"The same to Line 226.","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"},{"author":{"_account_id":6604,"name":"zhangchao","email":"zhangchao010@huawei.com","username":"zhangchao010"},"change_message_id":"b95d56dca111c0e360d12bb16090011cfdbc05ad","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        # Map a LUN to a host if not mapped."},{"line_number":284,"context_line":"        lun_id \u003d self._find_lun(volume_name)"},{"line_number":285,"context_line":"        if not lun_id:"},{"line_number":286,"context_line":"            err_msg \u003d (_(\u0027initialize_connection:Failed to find the \u0027"},{"line_number":287,"context_line":"                         \u0027given volume. \u0027"},{"line_number":288,"context_line":"                         \u0027volume name:%(volume)s.\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAOX%2F%2F%2Fqc%3D","line":285,"in_reply_to":"AAAAOX%2F%2F%2FyA%3D","updated":"2013-04-03 08:27:11.000000000","message":"Done","commit_id":"4ce3472dd215448cdf96f2838553afd596905f03"}]}
