)]}'
{"cinder/volume/drivers/hpe/hpe_3par_base.py":[{"author":{"_account_id":25465,"name":"Imran Ansari","email":"ansari@hpe.com"},"change_message_id":"c29173d1e7781c37d8daa2764c4e653b0aa4c2de","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                refresh,"},{"line_number":109,"context_line":"                self.get_filter_function(),"},{"line_number":110,"context_line":"                self.get_goodness_function())"},{"line_number":111,"context_line":"            if self.__class__.__name__ is \u0027HPE3PARISCSIDriver\u0027:"},{"line_number":112,"context_line":"                self._stats[\u0027storage_protocol\u0027] \u003d \u0027iSCSI\u0027"},{"line_number":113,"context_line":"            elif self.__class__.__name__ is \u0027HPE3PARFCDriver\u0027:"},{"line_number":114,"context_line":"                self._stats[\u0027storage_protocol\u0027] \u003d \u0027FC\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_32dd3743","line":111,"range":{"start_line":111,"start_character":43,"end_line":111,"end_character":61},"updated":"2017-03-17 09:40:33.000000000","message":"Please implement a function \"get_storage_protocol\" in both the drivers and invoke it from here. That will help avoid the hard coding.","commit_id":"a5872f8fd7da9f2652e14cf52e88053e63fbcbef"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"ec8792e3143efb44c8d02d923fe9d6e5a171c1f9","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                refresh,"},{"line_number":109,"context_line":"                self.get_filter_function(),"},{"line_number":110,"context_line":"                self.get_goodness_function())"},{"line_number":111,"context_line":"            if self.__class__.__name__ is \u0027HPE3PARISCSIDriver\u0027:"},{"line_number":112,"context_line":"                self._stats[\u0027storage_protocol\u0027] \u003d \u0027iSCSI\u0027"},{"line_number":113,"context_line":"            elif self.__class__.__name__ is \u0027HPE3PARFCDriver\u0027:"},{"line_number":114,"context_line":"                self._stats[\u0027storage_protocol\u0027] \u003d \u0027FC\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a1ced50_c81a746e","line":111,"range":{"start_line":111,"start_character":43,"end_line":111,"end_character":61},"in_reply_to":"1a1ced50_32dd3743","updated":"2017-03-17 10:18:20.000000000","message":"Thanks Imran, done the changes","commit_id":"a5872f8fd7da9f2652e14cf52e88053e63fbcbef"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"2f0b7972479212f012a05ba99faf0270202f2f65","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":"#"},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"Volume driver for HPE 3PAR Storage array."},{"line_number":20,"context_line":"This driver requires 3.1.3 firmware on the 3PAR array, using"},{"line_number":21,"context_line":"the 4.x version of the hpe3parclient."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_a1170e50","line":19,"range":{"start_line":19,"start_character":22,"end_line":19,"end_character":26},"updated":"2017-03-17 14:36:23.000000000","message":"You could say the \"Base class for HPE Storage Drivers\"\ninstead of \"Volume driver for HPE 3PAR Storage array\".","commit_id":"576c2c35e772d835d6941b14d1e5179adabb0a59"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"ce541379ddcea7680e7ad7c6736a2f218370ddc5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":"#"},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"Volume driver for HPE 3PAR Storage array."},{"line_number":20,"context_line":"This driver requires 3.1.3 firmware on the 3PAR array, using"},{"line_number":21,"context_line":"the 4.x version of the hpe3parclient."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_0c8aa9bf","line":19,"range":{"start_line":19,"start_character":22,"end_line":19,"end_character":26},"updated":"2017-03-20 10:31:44.000000000","message":"done","commit_id":"576c2c35e772d835d6941b14d1e5179adabb0a59"},{"author":{"_account_id":22664,"name":"William Durairaj","email":"william.dur.sandanaraj@hpe.com","username":"william.durairaj"},"change_message_id":"621f3e0c123b5a1e2e3a0471284e11d5360272d6","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#    under the License."},{"line_number":17,"context_line":"#"},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"Volume driver for HPE 3PAR Storage array."},{"line_number":20,"context_line":"This driver requires 3.1.3 firmware on the 3PAR array, using"},{"line_number":21,"context_line":"the 4.x version of the hpe3parclient."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a1ced50_fcb9a92f","line":19,"range":{"start_line":19,"start_character":22,"end_line":19,"end_character":26},"in_reply_to":"1a1ced50_a1170e50","updated":"2017-03-17 14:38:53.000000000","message":"\"Base class for HPE 3PAR Storage Drivers\" will be more relevant.","commit_id":"576c2c35e772d835d6941b14d1e5179adabb0a59"},{"author":{"_account_id":22257,"name":"Manish","email":"deolalkar.manish@hpe.com","username":"manishd"},"change_message_id":"d9a55fa12926ca209c2875eacf481f64da49e3c0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"#"},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"Base class for HPE Storage Drivers."},{"line_number":20,"context_line":"This driver requires 3.1.3 firmware on the 3PAR array, using"},{"line_number":21,"context_line":"the 4.x version of the hpe3parclient."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"You will need to install the python hpe3parclient."}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_75100b5a","line":20,"range":{"start_line":20,"start_character":4,"end_line":20,"end_character":35},"updated":"2017-03-21 11:29:32.000000000","message":"Please check the firmware version and update if necessory","commit_id":"9e8e219bcafced55605c9c280618eba4a542d243"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"49b8665aae8fcce43d33fc638989c84cd93bc2fd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"#"},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"Base class for HPE Storage Drivers."},{"line_number":20,"context_line":"This driver requires 3.1.3 firmware on the 3PAR array, using"},{"line_number":21,"context_line":"the 4.x version of the hpe3parclient."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"You will need to install the python hpe3parclient."}],"source_content_type":"text/x-python","patch_set":5,"id":"1a1ced50_508a3d1c","line":20,"range":{"start_line":20,"start_character":4,"end_line":20,"end_character":35},"in_reply_to":"1a1ced50_75100b5a","updated":"2017-03-21 11:37:39.000000000","message":"Done","commit_id":"9e8e219bcafced55605c9c280618eba4a542d243"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"173721eee8a3280c0e358aba29368aa36021ceea","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.configuration.append_config_values(san.san_opts)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _init_common(self):"},{"line_number":69,"context_line":"        return hpecommon.HPE3PARCommon(self.configuration,"},{"line_number":70,"context_line":"                                       self._active_backend_id)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _login(self, timeout\u003dNone):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_457dec1a","line":69,"updated":"2017-07-12 15:11:24.000000000","message":"Since we have a base class, why do we need common too?","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":22257,"name":"Manish","email":"deolalkar.manish@hpe.com","username":"manishd"},"change_message_id":"1d083e953bf68d9e92f884aea0ad92f1d8200da6","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.configuration.append_config_values(san.san_opts)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _init_common(self):"},{"line_number":69,"context_line":"        return hpecommon.HPE3PARCommon(self.configuration,"},{"line_number":70,"context_line":"                                       self._active_backend_id)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _login(self, timeout\u003dNone):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_76552550","line":69,"in_reply_to":"1f1a1f67_457dec1a","updated":"2017-07-13 07:41:29.000000000","message":"Base class here is just to bridge the commonality between the FC and ISCSI drivers whereas the common class HPE3parcommon is basically the helper class for managing the storage array communications and operations for both FC and ISCSI.","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"a4b6ab501f2c53e3bd9b310c43eb089c27ad798e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        self.configuration.append_config_values(san.san_opts)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _init_common(self):"},{"line_number":69,"context_line":"        return hpecommon.HPE3PARCommon(self.configuration,"},{"line_number":70,"context_line":"                                       self._active_backend_id)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _login(self, timeout\u003dNone):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_89565f29","line":69,"in_reply_to":"1f1a1f67_76552550","updated":"2017-07-13 10:57:18.000000000","message":"Thanks Ivan for reviewing and Manish explaining the things.","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"173721eee8a3280c0e358aba29368aa36021ceea","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        try:"},{"line_number":77,"context_line":"            common.do_setup(None, timeout\u003dtimeout, stats\u003dself._stats)"},{"line_number":78,"context_line":"            common.client_login()"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            if common._replication_enabled:"},{"line_number":81,"context_line":"                LOG.warning(\"The primary array is not reachable at this \""},{"line_number":82,"context_line":"                            \"time. Since replication is enabled, \""}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_8540a409","line":79,"updated":"2017-07-12 15:11:24.000000000","message":"Please, catch less general exception","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"a4b6ab501f2c53e3bd9b310c43eb089c27ad798e","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        try:"},{"line_number":77,"context_line":"            common.do_setup(None, timeout\u003dtimeout, stats\u003dself._stats)"},{"line_number":78,"context_line":"            common.client_login()"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            if common._replication_enabled:"},{"line_number":81,"context_line":"                LOG.warning(\"The primary array is not reachable at this \""},{"line_number":82,"context_line":"                            \"time. Since replication is enabled, \""}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_cc38e5d4","line":79,"in_reply_to":"1f1a1f67_8540a409","updated":"2017-07-13 10:57:18.000000000","message":"Thanks Ivan for reviewing.\nWe have already raised proper Exception in \"do_setup\" function and we are just catching all that exception with general Exception here.","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"173721eee8a3280c0e358aba29368aa36021ceea","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            common.client_login()"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            if common._replication_enabled:"},{"line_number":81,"context_line":"                LOG.warning(\"The primary array is not reachable at this \""},{"line_number":82,"context_line":"                            \"time. Since replication is enabled, \""},{"line_number":83,"context_line":"                            \"listing replication targets and failing over \""},{"line_number":84,"context_line":"                            \"a volume can still be performed.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_e5bbd80b","line":81,"updated":"2017-07-12 15:11:24.000000000","message":"Why do we skip exception only if replication is enabled?","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"a4b6ab501f2c53e3bd9b310c43eb089c27ad798e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            common.client_login()"},{"line_number":79,"context_line":"        except Exception:"},{"line_number":80,"context_line":"            if common._replication_enabled:"},{"line_number":81,"context_line":"                LOG.warning(\"The primary array is not reachable at this \""},{"line_number":82,"context_line":"                            \"time. Since replication is enabled, \""},{"line_number":83,"context_line":"                            \"listing replication targets and failing over \""},{"line_number":84,"context_line":"                            \"a volume can still be performed.\")"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_2f706ba5","line":81,"in_reply_to":"1f1a1f67_e5bbd80b","updated":"2017-07-13 10:57:18.000000000","message":"cases like fail-over or primary array not reachable.\nwe do not want to raise exception in above scenarios if replication is enabled, so we will perform volume operation using secondary array.","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"173721eee8a3280c0e358aba29368aa36021ceea","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self._logout(common)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def check_for_setup_error(self):"},{"line_number":123,"context_line":"        \"\"\"Setup errors are already checked for in do_setup so return pass.\"\"\""},{"line_number":124,"context_line":"        pass"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    @utils.trace"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_050254b5","line":123,"updated":"2017-07-12 15:11:24.000000000","message":"IMO, it\u0027s better to move all checks to this method to have the same behavior across all drivers","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"a4b6ab501f2c53e3bd9b310c43eb089c27ad798e","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            self._logout(common)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def check_for_setup_error(self):"},{"line_number":123,"context_line":"        \"\"\"Setup errors are already checked for in do_setup so return pass.\"\"\""},{"line_number":124,"context_line":"        pass"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    @utils.trace"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_2cabd989","line":123,"in_reply_to":"1f1a1f67_050254b5","updated":"2017-07-13 10:57:18.000000000","message":"Thanks Ivan for review,\nwe have already checked errors in do_setup class hence we are just passing here.\nwe are following this since beginning.","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"173721eee8a3280c0e358aba29368aa36021ceea","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    @utils.trace"},{"line_number":144,"context_line":"    def delete_volume(self, volume):"},{"line_number":145,"context_line":"        common \u003d self._login()"},{"line_number":146,"context_line":"        try:"},{"line_number":147,"context_line":"            common.delete_volume(volume)"},{"line_number":148,"context_line":"        finally:"},{"line_number":149,"context_line":"            self._logout(common)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_e51758ed","line":146,"updated":"2017-07-12 15:11:24.000000000","message":"Please, refactor this code to not copy-paste try-finally across several methods.","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":21407,"name":"Kushal Wathore","email":"kushal.wathore@hpe.com","username":"kwathore"},"change_message_id":"a4b6ab501f2c53e3bd9b310c43eb089c27ad798e","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    @utils.trace"},{"line_number":144,"context_line":"    def delete_volume(self, volume):"},{"line_number":145,"context_line":"        common \u003d self._login()"},{"line_number":146,"context_line":"        try:"},{"line_number":147,"context_line":"            common.delete_volume(volume)"},{"line_number":148,"context_line":"        finally:"},{"line_number":149,"context_line":"            self._logout(common)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_8c2b0d93","line":146,"in_reply_to":"1f1a1f67_563b4937","updated":"2017-07-13 10:57:18.000000000","message":"Thanks Ivan for reviewing and Manish explaining the things.","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":22257,"name":"Manish","email":"deolalkar.manish@hpe.com","username":"manishd"},"change_message_id":"1d083e953bf68d9e92f884aea0ad92f1d8200da6","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    @utils.trace"},{"line_number":144,"context_line":"    def delete_volume(self, volume):"},{"line_number":145,"context_line":"        common \u003d self._login()"},{"line_number":146,"context_line":"        try:"},{"line_number":147,"context_line":"            common.delete_volume(volume)"},{"line_number":148,"context_line":"        finally:"},{"line_number":149,"context_line":"            self._logout(common)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1f1a1f67_563b4937","line":146,"in_reply_to":"1f1a1f67_e51758ed","updated":"2017-07-13 07:41:29.000000000","message":"Thanks Ivan for the review.\nI understood your point but this was done intentionally in order to avoid the hanging connection to Storage array and thus limiting the sessions as per usage. This also handles the limitation of sessions management of our storage array.","commit_id":"c38dd82a9c6ac7e2e49c01be9a4763f0b83d4993"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"92a27e2852b2de7dca882352156b4f80cf19bb5d","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    \"\"\""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    VERSION \u003d \"1.0.1\""},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":63,"context_line":"        super(HPE3PARDriverBase, self).__init__(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff346bd7_98bc24dd","line":60,"updated":"2017-07-25 15:26:27.000000000","message":"make sure this version gets printed out at startup.\n\nCustomer support issues rely heavily on the versions of the HPE drivers, clients, and classes to determine what the state of the world is in the future.   Without printing each version of each component at startup, customers won\u0027t be able to tell what they are running.","commit_id":"abcdf7045028169f1eb1a7888ec126fe5c0dbef3"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"92a27e2852b2de7dca882352156b4f80cf19bb5d","unresolved":false,"context_lines":[{"line_number":311,"context_line":"                if protocol !\u003d \u0027FC\u0027:"},{"line_number":312,"context_line":"                    LOG.debug(\"3PAR FC driver cannot migrate in-use volume \""},{"line_number":313,"context_line":"                              \"to a host with storage_protocol\u003d%s.\", protocol)"},{"line_number":314,"context_line":"                    return False, None"},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"        common \u003d self._login()"},{"line_number":317,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":20,"id":"ff346bd7_58411c0b","line":314,"updated":"2017-07-25 15:26:27.000000000","message":"why not use the self.get_storage_protocol() and use that instead of this complicated if elif\nlines 304 through 314 can be reduced to 3 lines of code.\n\nprotocol \u003d self.get_storage_protocol()\nLOG.debug(\"3PAR %(protocol)s driver cannot migrate in-use volume to a host with storage_protocol\u003d%(protocol)s\", protocol)\nreturn False, None","commit_id":"abcdf7045028169f1eb1a7888ec126fe5c0dbef3"}],"cinder/volume/drivers/hpe/hpe_3par_fc.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"92a27e2852b2de7dca882352156b4f80cf19bb5d","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    \"\"\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    VERSION \u003d \"3.0.12\""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    # The name of the CI wiki page."},{"line_number":115,"context_line":"    CI_WIKI_NAME \u003d \"HPE_Storage_CI\""}],"source_content_type":"text/x-python","patch_set":20,"id":"ff346bd7_95062d86","line":112,"updated":"2017-07-25 15:26:27.000000000","message":"This is a major rewrite of the driver.   Please update this to 4.0.0 and keep track of changes in this driver by bumping the versions as appropriate.","commit_id":"abcdf7045028169f1eb1a7888ec126fe5c0dbef3"}],"cinder/volume/drivers/hpe/hpe_3par_iscsi.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"92a27e2852b2de7dca882352156b4f80cf19bb5d","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    \"\"\""},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    VERSION \u003d \"3.0.15\""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    # The name of the CI wiki page."},{"line_number":127,"context_line":"    CI_WIKI_NAME \u003d \"HPE_Storage_CI\""}],"source_content_type":"text/x-python","patch_set":20,"id":"ff346bd7_d5e4b5ae","line":124,"updated":"2017-07-25 15:26:27.000000000","message":"This is a major rewrite of the driver.   Please update this to 4.0.0 and keep track of changes in this driver by bumping the versions as appropriate.","commit_id":"abcdf7045028169f1eb1a7888ec126fe5c0dbef3"}]}
