)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"eed5ee052c017d512116572c71e1a04cdc357d43","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Volume driver for HP XP storage, along with unit tests. The driver"},{"line_number":10,"context_line":"imports the hp_xp_horcm_fc class, which is available separately to"},{"line_number":11,"context_line":"HP XP customers."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint hpxp-storage-driver"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5afe65bd_7b28a786","line":11,"updated":"2015-06-04 08:18:55.000000000","message":"Where is this available from? It isn\u0027t on PIPI that I can see, nor in any vendor repos. This info will be needed for the docs and might as well go here too.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"982bca0f13af296c3379b6dad3717faaf667fe10","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Volume driver for HP XP storage, along with unit tests. The driver"},{"line_number":10,"context_line":"imports the hp_xp_horcm_fc class, which is available separately to"},{"line_number":11,"context_line":"HP XP customers."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint hpxp-storage-driver"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1af86dd1_4f73534e","line":11,"in_reply_to":"5afe65bd_7b28a786","updated":"2015-06-12 16:44:04.000000000","message":"It will be available from HP website. We will indicate the download site on the docs once we decided the exact location.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"}],"cinder/tests/unit/test_hp_xp_fc.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"943ef4da2f9caf87b0b5ed48af3fedeee0b0bfa2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2014, Hitachi, Ltd.\r"},{"line_number":2,"context_line":"#\r"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may\r"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_f4558bc1","line":1,"updated":"2015-05-21 14:13:39.000000000","message":"2015?","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"c0546f786d3d049bff745da6c2e02b6c9b4de4d8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2014, Hitachi, Ltd.\r"},{"line_number":2,"context_line":"#\r"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may\r"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_77926fa1","line":1,"in_reply_to":"7a016987_f4558bc1","updated":"2015-06-12 16:44:24.000000000","message":"Done","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"943ef4da2f9caf87b0b5ed48af3fedeee0b0bfa2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2014, Hitachi, Ltd.\r"},{"line_number":2,"context_line":"#\r"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may\r"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain\r"},{"line_number":5,"context_line":"#    a copy of the License at\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_b44dd33f","line":2,"updated":"2015-05-21 14:13:39.000000000","message":"Make sure all line endings are just newline and not crlf (\\n vs \\r\\n).","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"c0546f786d3d049bff745da6c2e02b6c9b4de4d8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (C) 2014, Hitachi, Ltd.\r"},{"line_number":2,"context_line":"#\r"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may\r"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain\r"},{"line_number":5,"context_line":"#    a copy of the License at\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_578f7375","line":2,"in_reply_to":"7a016987_b44dd33f","updated":"2015-06-12 16:44:24.000000000","message":"Done","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"943ef4da2f9caf87b0b5ed48af3fedeee0b0bfa2","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.driver \u003d hp_xp_fc.HPXPFCDriver(configuration\u003dself.configuration)\r"},{"line_number":58,"context_line":"        self.driver.common \u003d mock.Mock()\r"},{"line_number":59,"context_line":"\r"},{"line_number":60,"context_line":"# API test cases\r"},{"line_number":61,"context_line":"    def test_check_for_setup_error(self):\r"},{"line_number":62,"context_line":"        self.driver.check_for_setup_error()\r"},{"line_number":63,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_74019bae","line":60,"updated":"2015-05-21 14:13:39.000000000","message":"Test cases should be exercising the different paths through your code and asserting on results. These should all be updated.","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"c0546f786d3d049bff745da6c2e02b6c9b4de4d8","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.driver \u003d hp_xp_fc.HPXPFCDriver(configuration\u003dself.configuration)\r"},{"line_number":58,"context_line":"        self.driver.common \u003d mock.Mock()\r"},{"line_number":59,"context_line":"\r"},{"line_number":60,"context_line":"# API test cases\r"},{"line_number":61,"context_line":"    def test_check_for_setup_error(self):\r"},{"line_number":62,"context_line":"        self.driver.check_for_setup_error()\r"},{"line_number":63,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_f7d3ff5d","line":60,"in_reply_to":"7a016987_74019bae","updated":"2015-06-12 16:44:24.000000000","message":"Done","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d3f5a4d30378b45b286f5967deb9b5aee7884d99","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                \u0027access_mode\u0027: \u0027rw\u0027,"},{"line_number":260,"context_line":"                \u0027multipath\u0027: True,"},{"line_number":261,"context_line":"                \u0027target_wwn\u0027: [\u002750060E801053C2E0\u0027],"},{"line_number":262,"context_line":"            }"},{"line_number":263,"context_line":"        }"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def terminate_connection(self, volume, connector):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af86dd1_bc1af16c","line":262,"updated":"2015-06-12 17:58:22.000000000","message":"This isn\u0027t returning initiator_target_map","commit_id":"af2869dcfea09874cc0ea903d608f371e467e14d"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"81dbbe021efd37768d5927685b8d516dd2004e97","unresolved":false,"context_lines":[{"line_number":259,"context_line":"                \u0027access_mode\u0027: \u0027rw\u0027,"},{"line_number":260,"context_line":"                \u0027multipath\u0027: True,"},{"line_number":261,"context_line":"                \u0027target_wwn\u0027: [\u002750060E801053C2E0\u0027],"},{"line_number":262,"context_line":"            }"},{"line_number":263,"context_line":"        }"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def terminate_connection(self, volume, connector):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_5d1d2c65","line":262,"in_reply_to":"1af86dd1_bc1af16c","updated":"2015-06-13 13:51:45.000000000","message":"Done","commit_id":"af2869dcfea09874cc0ea903d608f371e467e14d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d3f5a4d30378b45b286f5967deb9b5aee7884d99","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":271,"context_line":"                data\u003d\u0027Volume not found for %s\u0027 % ldev)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        del self.volumes[volume[\u0027provider_location\u0027]][\u0027attached\u0027]"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def is_volume_attached(self, volume, connector):"},{"line_number":276,"context_line":"        if not self.volume_exists(volume):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af86dd1_bc31d1ee","line":273,"updated":"2015-06-12 17:58:22.000000000","message":"This is also not returning data.","commit_id":"af2869dcfea09874cc0ea903d608f371e467e14d"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"81dbbe021efd37768d5927685b8d516dd2004e97","unresolved":false,"context_lines":[{"line_number":270,"context_line":"            raise exception.VolumeBackendAPIException("},{"line_number":271,"context_line":"                data\u003d\u0027Volume not found for %s\u0027 % ldev)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        del self.volumes[volume[\u0027provider_location\u0027]][\u0027attached\u0027]"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def is_volume_attached(self, volume, connector):"},{"line_number":276,"context_line":"        if not self.volume_exists(volume):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_1d26c4ba","line":273,"in_reply_to":"1af86dd1_bc31d1ee","updated":"2015-06-13 13:51:45.000000000","message":"Done","commit_id":"af2869dcfea09874cc0ea903d608f371e467e14d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d3f5a4d30378b45b286f5967deb9b5aee7884d99","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        self.driver.common \u003d HPXPFakeCommon(self.configuration, \u0027FC\u0027)"},{"line_number":342,"context_line":"        self.driver.do_setup(None)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"# API test cases"},{"line_number":345,"context_line":"    def test_create_volume(self):"},{"line_number":346,"context_line":"        \"\"\"test create_volume.\"\"\""},{"line_number":347,"context_line":"        volume \u003d fake_volume.fake_db_volume(**self._VOLUME)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af86dd1_bc48b15c","line":344,"updated":"2015-06-12 17:58:22.000000000","message":"needs to be indented","commit_id":"af2869dcfea09874cc0ea903d608f371e467e14d"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"81dbbe021efd37768d5927685b8d516dd2004e97","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        self.driver.common \u003d HPXPFakeCommon(self.configuration, \u0027FC\u0027)"},{"line_number":342,"context_line":"        self.driver.do_setup(None)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"# API test cases"},{"line_number":345,"context_line":"    def test_create_volume(self):"},{"line_number":346,"context_line":"        \"\"\"test create_volume.\"\"\""},{"line_number":347,"context_line":"        volume \u003d fake_volume.fake_db_volume(**self._VOLUME)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_3d2b8884","line":344,"in_reply_to":"1af86dd1_bc48b15c","updated":"2015-06-13 13:51:45.000000000","message":"Done","commit_id":"af2869dcfea09874cc0ea903d608f371e467e14d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d3f5a4d30378b45b286f5967deb9b5aee7884d99","unresolved":false,"context_lines":[{"line_number":709,"context_line":"        volume \u003d fake_volume.fake_db_volume(**self._VOLUME)"},{"line_number":710,"context_line":"        rc_vol \u003d self.driver.create_volume(volume)"},{"line_number":711,"context_line":"        volume[\u0027provider_location\u0027] \u003d rc_vol[\u0027provider_location\u0027]"},{"line_number":712,"context_line":"        self.driver.initialize_connection(volume, connector)"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        is_attached \u003d self.driver.common.is_volume_attached(volume, connector)"},{"line_number":715,"context_line":"        self.assertTrue(is_attached)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af86dd1_3caa81d5","line":712,"updated":"2015-06-12 17:58:22.000000000","message":"should check the return of this and make sure it has an initiator_target_map for zoning properly","commit_id":"af2869dcfea09874cc0ea903d608f371e467e14d"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"81dbbe021efd37768d5927685b8d516dd2004e97","unresolved":false,"context_lines":[{"line_number":709,"context_line":"        volume \u003d fake_volume.fake_db_volume(**self._VOLUME)"},{"line_number":710,"context_line":"        rc_vol \u003d self.driver.create_volume(volume)"},{"line_number":711,"context_line":"        volume[\u0027provider_location\u0027] \u003d rc_vol[\u0027provider_location\u0027]"},{"line_number":712,"context_line":"        self.driver.initialize_connection(volume, connector)"},{"line_number":713,"context_line":""},{"line_number":714,"context_line":"        is_attached \u003d self.driver.common.is_volume_attached(volume, connector)"},{"line_number":715,"context_line":"        self.assertTrue(is_attached)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_dd1ffc59","line":712,"in_reply_to":"1af86dd1_3caa81d5","updated":"2015-06-13 13:51:45.000000000","message":"Done","commit_id":"af2869dcfea09874cc0ea903d608f371e467e14d"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"d3f5a4d30378b45b286f5967deb9b5aee7884d99","unresolved":false,"context_lines":[{"line_number":765,"context_line":""},{"line_number":766,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":767,"context_line":"                          self.driver.terminate_connection,"},{"line_number":768,"context_line":"                          volume, connector)"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"    def test_do_setup_error_on_invalid_pool_id(self):"},{"line_number":771,"context_line":"        \"\"\"test do_setup is error on invalid pool id.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1af86dd1_dc900d98","line":768,"updated":"2015-06-12 17:58:22.000000000","message":"should also test_terminate_connection_last_volume\n\nthat test should test the scenario where it\u0027s the last volume on a host, and terminate_connection returns an initiator_target_map to instruct the zone manager to remove the zone.","commit_id":"af2869dcfea09874cc0ea903d608f371e467e14d"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"81dbbe021efd37768d5927685b8d516dd2004e97","unresolved":false,"context_lines":[{"line_number":765,"context_line":""},{"line_number":766,"context_line":"        self.assertRaises(exception.VolumeBackendAPIException,"},{"line_number":767,"context_line":"                          self.driver.terminate_connection,"},{"line_number":768,"context_line":"                          volume, connector)"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"    def test_do_setup_error_on_invalid_pool_id(self):"},{"line_number":771,"context_line":"        \"\"\"test do_setup is error on invalid pool id.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_9d41743c","line":768,"in_reply_to":"1af86dd1_dc900d98","updated":"2015-06-13 13:51:45.000000000","message":"I created test_terminate_connection_last_volume.\n\nAnd I changed the test from test_terminate_connection to test_terminate_connection_on_non_last_volume.","commit_id":"af2869dcfea09874cc0ea903d608f371e467e14d"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"261f9a6210c831fe880a8bad612b362f145e731c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def _available_ldev(self):"},{"line_number":85,"context_line":"        i \u003d 1"},{"line_number":86,"context_line":"        while True:"},{"line_number":87,"context_line":"            if self.volume_exists({\u0027provider_location\u0027: str(i)}) is False:"},{"line_number":88,"context_line":"                return str(i)"},{"line_number":89,"context_line":"            i +\u003d 1"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_e260d037","line":87,"updated":"2015-06-16 06:47:57.000000000","message":"I do not think it is a good idea to purely poll provider_location till it is not none.\nWhat if it is None all the time? At least there should be another way to stop this loop.","commit_id":"56e949da17e428019159aee55ffc6b9622b943d5"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"ec3c562c528801545cf9e11319c67bc1a0477e1c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def _available_ldev(self):"},{"line_number":85,"context_line":"        i \u003d 1"},{"line_number":86,"context_line":"        while True:"},{"line_number":87,"context_line":"            if self.volume_exists({\u0027provider_location\u0027: str(i)}) is False:"},{"line_number":88,"context_line":"                return str(i)"},{"line_number":89,"context_line":"            i +\u003d 1"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_d34c6f72","line":87,"in_reply_to":"fa32b979_0abb7f28","updated":"2015-06-16 13:15:27.000000000","message":"For confirmation, the vol is not \u0027attach_status\u0027. \nIt just checks if other volumes have \u0027attached\u0027 or not.","commit_id":"56e949da17e428019159aee55ffc6b9622b943d5"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"3a643c4e7b7ae15fa33a9606493f7dc9f6a30a4e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def _available_ldev(self):"},{"line_number":85,"context_line":"        i \u003d 1"},{"line_number":86,"context_line":"        while True:"},{"line_number":87,"context_line":"            if self.volume_exists({\u0027provider_location\u0027: str(i)}) is False:"},{"line_number":88,"context_line":"                return str(i)"},{"line_number":89,"context_line":"            i +\u003d 1"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_0abb7f28","line":87,"in_reply_to":"fa32b979_e260d037","updated":"2015-06-16 11:38:51.000000000","message":"Done.\nAnd, I created a new test case that have not available ldev.","commit_id":"56e949da17e428019159aee55ffc6b9622b943d5"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"261f9a6210c831fe880a8bad612b362f145e731c","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        del self.volumes[volume[\u0027provider_location\u0027]][\u0027attached\u0027]"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        for vol in self.volumes:"},{"line_number":278,"context_line":"            if \u0027attached\u0027 in self.volumes[vol]:"},{"line_number":279,"context_line":"                return"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        return {"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_e2c77010","line":278,"updated":"2015-06-16 06:47:57.000000000","message":"Do you mean attach_status is attached here?","commit_id":"56e949da17e428019159aee55ffc6b9622b943d5"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"3a643c4e7b7ae15fa33a9606493f7dc9f6a30a4e","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        del self.volumes[volume[\u0027provider_location\u0027]][\u0027attached\u0027]"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        for vol in self.volumes:"},{"line_number":278,"context_line":"            if \u0027attached\u0027 in self.volumes[vol]:"},{"line_number":279,"context_line":"                return"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        return {"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_caea770f","line":278,"in_reply_to":"fa32b979_e2c77010","updated":"2015-06-16 11:38:51.000000000","message":"It is for checking the other volumes attach_status. The other volumes might be attached here.\nWe have to return data only if this is the last volume detached from the host.","commit_id":"56e949da17e428019159aee55ffc6b9622b943d5"},{"author":{"_account_id":2861,"name":"Vincent Hou","email":"shou@us.ibm.com","username":"houshengbo"},"change_message_id":"261f9a6210c831fe880a8bad612b362f145e731c","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    # API test cases"},{"line_number":361,"context_line":"    def test_create_volume(self):"},{"line_number":362,"context_line":"        \"\"\"test create_volume.\"\"\""},{"line_number":363,"context_line":"        volume \u003d fake_volume.fake_db_volume(**self._VOLUME)"},{"line_number":364,"context_line":"        rc \u003d self.driver.create_volume(volume)"},{"line_number":365,"context_line":"        volume[\u0027provider_location\u0027] \u003d rc[\u0027provider_location\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_828544ae","line":362,"updated":"2015-06-16 06:47:57.000000000","message":"Make sure the first words of all the comments start with capital letters.\nThis applies to all the following test cases.","commit_id":"56e949da17e428019159aee55ffc6b9622b943d5"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"3a643c4e7b7ae15fa33a9606493f7dc9f6a30a4e","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    # API test cases"},{"line_number":361,"context_line":"    def test_create_volume(self):"},{"line_number":362,"context_line":"        \"\"\"test create_volume.\"\"\""},{"line_number":363,"context_line":"        volume \u003d fake_volume.fake_db_volume(**self._VOLUME)"},{"line_number":364,"context_line":"        rc \u003d self.driver.create_volume(volume)"},{"line_number":365,"context_line":"        volume[\u0027provider_location\u0027] \u003d rc[\u0027provider_location\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa32b979_8aa6af0e","line":362,"in_reply_to":"fa32b979_828544ae","updated":"2015-06-16 11:38:51.000000000","message":"Done","commit_id":"56e949da17e428019159aee55ffc6b9622b943d5"}],"cinder/volume/drivers/san/hp/hp_xp_fc.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"943ef4da2f9caf87b0b5ed48af3fedeee0b0bfa2","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    def remove_export(self, context, volume):"},{"line_number":144,"context_line":"        pass"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":147,"context_line":"        \"\"\"Attach the volume to an instance.\"\"\""},{"line_number":148,"context_line":"        return self.common.initialize_connection(volume, connector)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_348a031c","line":146,"updated":"2015-05-21 14:13:39.000000000","message":"Add @fczm_utils.AddFCZone decorator.","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"c0546f786d3d049bff745da6c2e02b6c9b4de4d8","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    def remove_export(self, context, volume):"},{"line_number":144,"context_line":"        pass"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":147,"context_line":"        \"\"\"Attach the volume to an instance.\"\"\""},{"line_number":148,"context_line":"        return self.common.initialize_connection(volume, connector)"},{"line_number":149,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_974a8b26","line":146,"in_reply_to":"7a016987_348a031c","updated":"2015-06-12 16:44:24.000000000","message":"Done","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"943ef4da2f9caf87b0b5ed48af3fedeee0b0bfa2","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        \"\"\"Attach the volume to an instance.\"\"\""},{"line_number":148,"context_line":"        return self.common.initialize_connection(volume, connector)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":151,"context_line":"        \"\"\"Detach a volume from an instance.\"\"\""},{"line_number":152,"context_line":"        self.common.terminate_connection(volume, connector, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_f47fcb14","line":150,"updated":"2015-05-21 14:13:39.000000000","message":"Add @fczm_utils.RemoveFCZone.","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"c0546f786d3d049bff745da6c2e02b6c9b4de4d8","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        \"\"\"Attach the volume to an instance.\"\"\""},{"line_number":148,"context_line":"        return self.common.initialize_connection(volume, connector)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":151,"context_line":"        \"\"\"Detach a volume from an instance.\"\"\""},{"line_number":152,"context_line":"        self.common.terminate_connection(volume, connector, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_77470f1e","line":150,"in_reply_to":"7a016987_f47fcb14","updated":"2015-06-12 16:44:24.000000000","message":"Done","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"5ac4c5dded54ac5387f7af272ba302ef57b679c3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.configuration.append_config_values(opts.COMMON_VOLUME_OPTS)"},{"line_number":42,"context_line":"        self.common \u003d importutils.import_object("},{"line_number":43,"context_line":"            \u0027.\u0027.join([_DRIVER_DIR, _DRIVER_CLASS]),"},{"line_number":44,"context_line":"            self.configuration, \u0027FC\u0027, **kwargs)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def check_for_setup_error(self):"},{"line_number":47,"context_line":"        \"\"\"Setup errors are already checked for in do_setup so return pass.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_9f8864c8","line":44,"updated":"2015-06-11 17:54:38.000000000","message":"What is the purpose of doing this like this?   Why not import the class directly and instantiate it.   This provides no extra value IMHO.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"982bca0f13af296c3379b6dad3717faaf667fe10","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        self.configuration.append_config_values(opts.COMMON_VOLUME_OPTS)"},{"line_number":42,"context_line":"        self.common \u003d importutils.import_object("},{"line_number":43,"context_line":"            \u0027.\u0027.join([_DRIVER_DIR, _DRIVER_CLASS]),"},{"line_number":44,"context_line":"            self.configuration, \u0027FC\u0027, **kwargs)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def check_for_setup_error(self):"},{"line_number":47,"context_line":"        \"\"\"Setup errors are already checked for in do_setup so return pass.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_af72c77a","line":44,"in_reply_to":"3afb71cf_9f8864c8","updated":"2015-06-12 16:44:04.000000000","message":"We may increase the classes to support.\nThese are classes for iSCSI or new storage API.\nWe did this like this, because We want to call for the same function by all classes.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"335ee2ded8004ef6615723261b641d1ddf0e9181","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        \"\"\""},{"line_number":87,"context_line":"        super(HPXPFCDriver, self).copy_volume_data("},{"line_number":88,"context_line":"            context, src_vol, dest_vol, remote)"},{"line_number":89,"context_line":"        self.common.copy_volume_data(context, src_vol, dest_vol, remote)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":92,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume."}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_2ce71742","line":89,"updated":"2015-06-11 22:45:18.000000000","message":"This looks very strange.   The parent class actually does all the work here, but it looks like you are calling copy_volume_data again after the parent copy_volume_data is done.  \n\nSince we can\u0027t review what\u0027s inside of self.common.copy_volume_data.\n\nThe parent class, which boils down to https://github.com/openstack/cinder/blob/master/cinder/volume/driver.py#L487\n\ndoes the attachment, and data copying.  So by the time that call is done, I\u0027m not sure what else needs to happen here.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"982bca0f13af296c3379b6dad3717faaf667fe10","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        \"\"\""},{"line_number":87,"context_line":"        super(HPXPFCDriver, self).copy_volume_data("},{"line_number":88,"context_line":"            context, src_vol, dest_vol, remote)"},{"line_number":89,"context_line":"        self.common.copy_volume_data(context, src_vol, dest_vol, remote)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":92,"context_line":"        \"\"\"Fetch the image from image_service and write it to the volume."}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_4f69138b","line":89,"in_reply_to":"1af86dd1_2ce71742","updated":"2015-06-12 16:44:04.000000000","message":"This is for post-processing on HPXP\u0027s storage.\nHPXP\u0027s storage need to call \"zero page reclaim\" functions and so on, after called the parent copy_volume_data. \nthe common copy_volume_data only do post-processing, don\u0027t the attachment, and data copying.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"335ee2ded8004ef6615723261b641d1ddf0e9181","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        super(HPXPFCDriver, self).copy_image_to_volume("},{"line_number":98,"context_line":"            context, volume, image_service, image_id)"},{"line_number":99,"context_line":"        self.common.copy_image_to_volume("},{"line_number":100,"context_line":"            context, volume, image_service, image_id)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def restore_backup(self, context, backup, volume, backup_service):"},{"line_number":103,"context_line":"        \"\"\"Restore an existing backup to a new or existing volume."}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_eccfbfb1","line":100,"updated":"2015-06-11 22:45:18.000000000","message":"same as above.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"982bca0f13af296c3379b6dad3717faaf667fe10","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        super(HPXPFCDriver, self).copy_image_to_volume("},{"line_number":98,"context_line":"            context, volume, image_service, image_id)"},{"line_number":99,"context_line":"        self.common.copy_image_to_volume("},{"line_number":100,"context_line":"            context, volume, image_service, image_id)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def restore_backup(self, context, backup, volume, backup_service):"},{"line_number":103,"context_line":"        \"\"\"Restore an existing backup to a new or existing volume."}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_8ff6ebd5","line":100,"in_reply_to":"1af86dd1_eccfbfb1","updated":"2015-06-12 16:44:04.000000000","message":"same as above.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"335ee2ded8004ef6615723261b641d1ddf0e9181","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        \"\"\""},{"line_number":108,"context_line":"        super(HPXPFCDriver, self).restore_backup("},{"line_number":109,"context_line":"            context, backup, volume, backup_service)"},{"line_number":110,"context_line":"        self.common.restore_backup(context, backup, volume, backup_service)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":113,"context_line":"        \"\"\"Extend a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_2cbef7ff","line":110,"updated":"2015-06-11 22:45:18.000000000","message":"same","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"982bca0f13af296c3379b6dad3717faaf667fe10","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        \"\"\""},{"line_number":108,"context_line":"        super(HPXPFCDriver, self).restore_backup("},{"line_number":109,"context_line":"            context, backup, volume, backup_service)"},{"line_number":110,"context_line":"        self.common.restore_backup(context, backup, volume, backup_service)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def extend_volume(self, volume, new_size):"},{"line_number":113,"context_line":"        \"\"\"Extend a volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_0f31dba2","line":110,"in_reply_to":"1af86dd1_2cbef7ff","updated":"2015-06-12 16:44:04.000000000","message":"same as above.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"335ee2ded8004ef6615723261b641d1ddf0e9181","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    @fczm_utils.AddFCZone"},{"line_number":148,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":149,"context_line":"        \"\"\"Attach the volume to an instance.\"\"\""},{"line_number":150,"context_line":"        return self.common.initialize_connection(volume, connector)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    @fczm_utils.RemoveFCZone"},{"line_number":153,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_0c521bde","line":150,"updated":"2015-06-11 22:45:18.000000000","message":"Since I can\u0027t see the internals of self.common, I can\u0027t tell if you are actually returning what is needed by the zone manager here.\n\nThe FCZM needs to have an initiator_target_map in the data payload in order to do zoning.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"982bca0f13af296c3379b6dad3717faaf667fe10","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    @fczm_utils.AddFCZone"},{"line_number":148,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":149,"context_line":"        \"\"\"Attach the volume to an instance.\"\"\""},{"line_number":150,"context_line":"        return self.common.initialize_connection(volume, connector)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    @fczm_utils.RemoveFCZone"},{"line_number":153,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_8f1dcb11","line":150,"in_reply_to":"1af86dd1_0c521bde","updated":"2015-06-12 16:44:04.000000000","message":"The FCZM work normaly. We return the following data.\n\n\u0027target_lun\u0027\n\n\u0027access_mode\u0027\n\n\u0027target_wwn\u0027\n\n\u0027target_discovered\u0027\n\n\u0027initiator_target_map\u0027","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"335ee2ded8004ef6615723261b641d1ddf0e9181","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    @fczm_utils.RemoveFCZone"},{"line_number":153,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":154,"context_line":"        \"\"\"Detach a volume from an instance.\"\"\""},{"line_number":155,"context_line":"        self.common.terminate_connection(volume, connector, **kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_6c72af7e","line":155,"updated":"2015-06-11 22:45:18.000000000","message":"this needs to return, or the FCZM never gets a payload to work on.\n\nAlso, you have to return an initiator_target_map if and only if, this is the last volume detached from the host.    Whenever the FCZM sees an initiator_target_map at RemoveFCZone time, then the zone will be removed.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"982bca0f13af296c3379b6dad3717faaf667fe10","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    @fczm_utils.RemoveFCZone"},{"line_number":153,"context_line":"    def terminate_connection(self, volume, connector, **kwargs):"},{"line_number":154,"context_line":"        \"\"\"Detach a volume from an instance.\"\"\""},{"line_number":155,"context_line":"        self.common.terminate_connection(volume, connector, **kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1af86dd1_2fd3773a","line":155,"in_reply_to":"1af86dd1_6c72af7e","updated":"2015-06-12 16:44:04.000000000","message":"Thank you, Walter.\nWe changed it to return the reply from common terminate_connection.","commit_id":"3853aac1c68cefd3a126cda289db1755de6e289e"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"bb7bf2ef4fd696c4658b2a0c91ac271220eb87cd","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        pass"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def create_volume(self, volume):"},{"line_number":51,"context_line":"        \"\"\"Create a volume\"\"\""},{"line_number":52,"context_line":"        return self.common.create_volume(volume)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_f751b163","line":51,"updated":"2015-06-14 19:35:07.000000000","message":"Docstrings to end with \".\" \nPlease be consistent throughout.","commit_id":"77ef853ad3ad7a7bced6b2fb239d8b58e137d345"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"50c58ba70951c713238c9ccdecaaa538e80f5144","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        pass"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def create_volume(self, volume):"},{"line_number":51,"context_line":"        \"\"\"Create a volume\"\"\""},{"line_number":52,"context_line":"        return self.common.create_volume(volume)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def create_volume_from_snapshot(self, volume, snapshot):"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa32b979_a152fc11","line":51,"in_reply_to":"fa32b979_f751b163","updated":"2015-06-15 06:18:02.000000000","message":"Done","commit_id":"77ef853ad3ad7a7bced6b2fb239d8b58e137d345"}],"cinder/volume/drivers/san/hp/hp_xp_opts.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"943ef4da2f9caf87b0b5ed48af3fedeee0b0bfa2","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    cfg.StrOpt("},{"line_number":51,"context_line":"        \u0027hpxp_default_copy_method\u0027,"},{"line_number":52,"context_line":"        default\u003d\u0027FULL\u0027,"},{"line_number":53,"context_line":"        help\u003d\u0027Default copy method of storage system\u0027),"},{"line_number":54,"context_line":"    cfg.Opt("},{"line_number":55,"context_line":"        \u0027hpxp_copy_speed\u0027,"},{"line_number":56,"context_line":"        type\u003dtypes.Integer(min\u003d1, max\u003d15),"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_b4d03320","line":53,"updated":"2015-05-21 14:13:39.000000000","message":"For config options where the default isn\u0027t None please state the default in the help text.","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":16373,"name":"Kazumasa Nomura","email":"kazumasa.nomura.rx@hitachi.com","username":"knomura"},"change_message_id":"c0546f786d3d049bff745da6c2e02b6c9b4de4d8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    cfg.StrOpt("},{"line_number":51,"context_line":"        \u0027hpxp_default_copy_method\u0027,"},{"line_number":52,"context_line":"        default\u003d\u0027FULL\u0027,"},{"line_number":53,"context_line":"        help\u003d\u0027Default copy method of storage system\u0027),"},{"line_number":54,"context_line":"    cfg.Opt("},{"line_number":55,"context_line":"        \u0027hpxp_copy_speed\u0027,"},{"line_number":56,"context_line":"        type\u003dtypes.Integer(min\u003d1, max\u003d15),"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_f761bfa9","line":53,"in_reply_to":"7a016987_b4d03320","updated":"2015-06-12 16:44:24.000000000","message":"Done","commit_id":"bf04b98def474415374008c8f7f1c557fa156ae2"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"aa3b923367969458ec34e4af9486c37fbe0622fb","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        default\u003d\u0027FULL\u0027,"},{"line_number":53,"context_line":"        help\u003d\u0027Default copy method of storage system. \u0027"},{"line_number":54,"context_line":"             \u0027There are two valid values: \"FULL\" specifies that a full copy; \u0027"},{"line_number":55,"context_line":"             \u0027\"THIN\" specifies that a thin copy. Default value is \"FULL\"\u0027),"},{"line_number":56,"context_line":"    cfg.Opt("},{"line_number":57,"context_line":"        \u0027hpxp_copy_speed\u0027,"},{"line_number":58,"context_line":"        type\u003dtypes.Integer(min\u003d1, max\u003d15),"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa32b979_ff7366e5","line":55,"updated":"2015-06-16 19:33:00.000000000","message":"This wording is confusing and should be updated if you push another patch:\n\t        \u0027There are two valid values: \"FULL\" specifies perform a full copy; \u0027\n\t\t    \u0027\"THIN\" specifies perform a thin copy. Default value is \"FULL\"\u0027","commit_id":"1cd86329c9dc4632b1ee2008645a4787e0184466"}]}
