)]}'
{"cinder/volume/drivers/emc/scaleio.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"62283e876355560fbd27529b6d6fc5198aed0aad","unresolved":false,"context_lines":[{"line_number":147,"context_line":"            {\u0027domain_id\u0027: self.protection_domain_id})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        self.connector \u003d connector.InitiatorConnector.factory("},{"line_number":150,"context_line":"            \u0027SCALEIO\u0027, utils.get_root_helper(),"},{"line_number":151,"context_line":"            device_scan_attempts\u003d"},{"line_number":152,"context_line":"            self.configuration.num_volume_device_scan_tries"},{"line_number":153,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_415e1645","line":150,"updated":"2015-08-19 22:03:44.000000000","message":"connector.SCALEIO","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a4389f1cc31719455286e7cbc4edf0b244b7f8f0","unresolved":false,"context_lines":[{"line_number":147,"context_line":"            {\u0027domain_id\u0027: self.protection_domain_id})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        self.connector \u003d connector.InitiatorConnector.factory("},{"line_number":150,"context_line":"            \u0027SCALEIO\u0027, utils.get_root_helper(),"},{"line_number":151,"context_line":"            device_scan_attempts\u003d"},{"line_number":152,"context_line":"            self.configuration.num_volume_device_scan_tries"},{"line_number":153,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_0467c1b7","line":150,"in_reply_to":"fa1b9901_415e1645","updated":"2015-08-26 01:35:56.000000000","message":"Done","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"91c5b699f3e9f9329089d0e9b27ef54ac6abf4cb","unresolved":false,"context_lines":[{"line_number":418,"context_line":"    def _snapshot_volume(self, volname, snapname):"},{"line_number":419,"context_line":"        self.connection_properties[\u0027scaleIO_volname\u0027] \u003d volname"},{"line_number":420,"context_line":"        self.connector.get_config(self.connection_properties)"},{"line_number":421,"context_line":"        vol_id \u003d self.connector._get_volume_id()"},{"line_number":422,"context_line":"        params \u003d {"},{"line_number":423,"context_line":"            \u0027snapshotDefs\u0027: [{\"volumeId\": vol_id, \"snapshotName\": snapname}]}"},{"line_number":424,"context_line":"        req_vars \u003d {\u0027server_ip\u0027: self.server_ip,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_c7a8f622","line":421,"updated":"2015-08-19 22:16:38.000000000","message":"This is probably not a future safe type of thing to do.  Calling a library\u0027s internal private method.","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a4389f1cc31719455286e7cbc4edf0b244b7f8f0","unresolved":false,"context_lines":[{"line_number":418,"context_line":"    def _snapshot_volume(self, volname, snapname):"},{"line_number":419,"context_line":"        self.connection_properties[\u0027scaleIO_volname\u0027] \u003d volname"},{"line_number":420,"context_line":"        self.connector.get_config(self.connection_properties)"},{"line_number":421,"context_line":"        vol_id \u003d self.connector._get_volume_id()"},{"line_number":422,"context_line":"        params \u003d {"},{"line_number":423,"context_line":"            \u0027snapshotDefs\u0027: [{\"volumeId\": vol_id, \"snapshotName\": snapname}]}"},{"line_number":424,"context_line":"        req_vars \u003d {\u0027server_ip\u0027: self.server_ip,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_c40b09d5","line":421,"in_reply_to":"fa1b9901_26fc266f","updated":"2015-08-26 01:35:56.000000000","message":"Use provider_id now.","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6738fa5b4293e162b1167c0adb8975fe9fea53e9","unresolved":false,"context_lines":[{"line_number":418,"context_line":"    def _snapshot_volume(self, volname, snapname):"},{"line_number":419,"context_line":"        self.connection_properties[\u0027scaleIO_volname\u0027] \u003d volname"},{"line_number":420,"context_line":"        self.connector.get_config(self.connection_properties)"},{"line_number":421,"context_line":"        vol_id \u003d self.connector._get_volume_id()"},{"line_number":422,"context_line":"        params \u003d {"},{"line_number":423,"context_line":"            \u0027snapshotDefs\u0027: [{\"volumeId\": vol_id, \"snapshotName\": snapname}]}"},{"line_number":424,"context_line":"        req_vars \u003d {\u0027server_ip\u0027: self.server_ip,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_26fc266f","line":421,"in_reply_to":"fa1b9901_c7a8f622","updated":"2015-08-20 16:58:59.000000000","message":"Probably should change the function to public in the connector.  If we save vol_id in provider_location/provider_id, then we don\u0027t need to call this function any more.","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"62283e876355560fbd27529b6d6fc5198aed0aad","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        self._check_volume_size(new_size)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        volname \u003d self._id_to_base64(volume.id)"},{"line_number":514,"context_line":"        self.connection_properties[\u0027scaleIO_volname\u0027] \u003d volname"},{"line_number":515,"context_line":"        self.connector.get_config(self.connection_properties)"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"        LOG.info(_LI("}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_acce092c","line":514,"updated":"2015-08-19 22:03:44.000000000","message":"This seems like you might eventually run into a race with this.  Your _snapshot_volume also touches the self.connection_properties[\u0027scaleIO_volname\u0027].   if what happens when you get 2 requests happening at the same time?","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a4389f1cc31719455286e7cbc4edf0b244b7f8f0","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        self._check_volume_size(new_size)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        volname \u003d self._id_to_base64(volume.id)"},{"line_number":514,"context_line":"        self.connection_properties[\u0027scaleIO_volname\u0027] \u003d volname"},{"line_number":515,"context_line":"        self.connector.get_config(self.connection_properties)"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"        LOG.info(_LI("}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_24fbe5c2","line":514,"in_reply_to":"fa1b9901_a6ca7619","updated":"2015-08-26 01:35:56.000000000","message":"Done","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6738fa5b4293e162b1167c0adb8975fe9fea53e9","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        self._check_volume_size(new_size)"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        volname \u003d self._id_to_base64(volume.id)"},{"line_number":514,"context_line":"        self.connection_properties[\u0027scaleIO_volname\u0027] \u003d volname"},{"line_number":515,"context_line":"        self.connector.get_config(self.connection_properties)"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"        LOG.info(_LI("}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_a6ca7619","line":514,"in_reply_to":"fa1b9901_acce092c","updated":"2015-08-20 16:58:59.000000000","message":"It seems that we should not be calling the connector in every function.  scaleIO_volname and/or vol_id should be saved in provider_location and/or provider_id instead after the volume is created, so that we can just retrieve it later.","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6738fa5b4293e162b1167c0adb8975fe9fea53e9","unresolved":false,"context_lines":[{"line_number":671,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":672,"context_line":"        \"\"\"Deletes a ScaleIO snapshot.\"\"\""},{"line_number":673,"context_line":"        snapname \u003d self._id_to_base64(snapshot.id)"},{"line_number":674,"context_line":"        self.initialize_connection(snapshot, self.connection_properties)"},{"line_number":675,"context_line":"        LOG.info(_LI(\"ScaleIO delete snapshot.\"))"},{"line_number":676,"context_line":"        self._delete_volume(snapname)"},{"line_number":677,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_c669aafa","line":674,"updated":"2015-08-20 16:58:59.000000000","message":"Calling initialize_connection in delete_snapshot looks wrong.  I think we are just trying to populate self.connection_properties.  Saving vol_name and vol_id in provider_location and/or provider_id is probably a better solution.","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a4389f1cc31719455286e7cbc4edf0b244b7f8f0","unresolved":false,"context_lines":[{"line_number":671,"context_line":"    def delete_snapshot(self, snapshot):"},{"line_number":672,"context_line":"        \"\"\"Deletes a ScaleIO snapshot.\"\"\""},{"line_number":673,"context_line":"        snapname \u003d self._id_to_base64(snapshot.id)"},{"line_number":674,"context_line":"        self.initialize_connection(snapshot, self.connection_properties)"},{"line_number":675,"context_line":"        LOG.info(_LI(\"ScaleIO delete snapshot.\"))"},{"line_number":676,"context_line":"        self._delete_volume(snapname)"},{"line_number":677,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_04fee1ad","line":674,"in_reply_to":"fa1b9901_c669aafa","updated":"2015-08-26 01:35:56.000000000","message":"Done","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"62283e876355560fbd27529b6d6fc5198aed0aad","unresolved":false,"context_lines":[{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        LOG.debug(\"Connector is %s.\", connector)"},{"line_number":685,"context_line":"        volname \u003d self._id_to_base64(volume.id)"},{"line_number":686,"context_line":"        self.connection_properties[\u0027scaleIO_volname\u0027] \u003d volname"},{"line_number":687,"context_line":"        storage_type \u003d self._get_volumetype_extraspecs(volume)"},{"line_number":688,"context_line":"        LOG.info(_LI(\"Volume type is %s.\"), storage_type)"},{"line_number":689,"context_line":"        iops_limit \u003d self._find_iops_limit(storage_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_6cd471bc","line":686,"updated":"2015-08-19 22:03:44.000000000","message":"same here.","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a4389f1cc31719455286e7cbc4edf0b244b7f8f0","unresolved":false,"context_lines":[{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        LOG.debug(\"Connector is %s.\", connector)"},{"line_number":685,"context_line":"        volname \u003d self._id_to_base64(volume.id)"},{"line_number":686,"context_line":"        self.connection_properties[\u0027scaleIO_volname\u0027] \u003d volname"},{"line_number":687,"context_line":"        storage_type \u003d self._get_volumetype_extraspecs(volume)"},{"line_number":688,"context_line":"        LOG.info(_LI(\"Volume type is %s.\"), storage_type)"},{"line_number":689,"context_line":"        iops_limit \u003d self._find_iops_limit(storage_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_a42db547","line":686,"in_reply_to":"fa1b9901_6cd471bc","updated":"2015-08-26 01:35:56.000000000","message":"Done","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"62283e876355560fbd27529b6d6fc5198aed0aad","unresolved":false,"context_lines":[{"line_number":909,"context_line":"                                     image_service,"},{"line_number":910,"context_line":"                                     image_id,"},{"line_number":911,"context_line":"                                     self._sio_attach_volume(volume),"},{"line_number":912,"context_line":"                                     BLOCK_SIZE,"},{"line_number":913,"context_line":"                                     size\u003dvolume[\u0027size\u0027])"},{"line_number":914,"context_line":""},{"line_number":915,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_e7673ab5","line":912,"updated":"2015-08-19 22:03:44.000000000","message":"I could be wrong, but I think this BLOCK_SIZE of 8, results in a dd block size of 8 bytes.  Are you sure this is what you want?   The Cinder default is \u00271M\u0027.\n\nAlso, if you didn\u0027t override the BLOCK_SIZE here, then you could just rename _sio_attach_volume to _attach_volume, and not even need to override copy_image_to_volume ?","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6738fa5b4293e162b1167c0adb8975fe9fea53e9","unresolved":false,"context_lines":[{"line_number":909,"context_line":"                                     image_service,"},{"line_number":910,"context_line":"                                     image_id,"},{"line_number":911,"context_line":"                                     self._sio_attach_volume(volume),"},{"line_number":912,"context_line":"                                     BLOCK_SIZE,"},{"line_number":913,"context_line":"                                     size\u003dvolume[\u0027size\u0027])"},{"line_number":914,"context_line":""},{"line_number":915,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_a61b5680","line":912,"in_reply_to":"fa1b9901_e7673ab5","updated":"2015-08-20 16:58:59.000000000","message":"I think this is determined by the design of ScaleIO, so it is correct here.","commit_id":"f38341cb738983b79bc62d5a0a35b64dd624161a"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"0f411060bbd1c40202d67d9505499b11dfb46759","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        LOG.info(_LI("},{"line_number":146,"context_line":"            \"Protection domain name: %(domain_id)s.\"),"},{"line_number":147,"context_line":"            {\u0027domain_id\u0027: self.protection_domain_id})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        self.connector \u003d connector.InitiatorConnector.factory("},{"line_number":150,"context_line":"            \u0027SCALEIO\u0027, utils.get_root_helper(),"},{"line_number":151,"context_line":"            device_scan_attempts\u003d"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_3d447719","line":148,"updated":"2015-08-28 18:24:58.000000000","message":"Maybe add a # TODO here to change \u0027SCALEIO\u0027 to connector.SCALEIO ?","commit_id":"35d4056bc7719210ae75e807adbad1064b4f8ba3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"26eefb9c9eb25051a692d979261eee510ec9e24d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        LOG.info(_LI("},{"line_number":146,"context_line":"            \"Protection domain name: %(domain_id)s.\"),"},{"line_number":147,"context_line":"            {\u0027domain_id\u0027: self.protection_domain_id})"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        self.connector \u003d connector.InitiatorConnector.factory("},{"line_number":150,"context_line":"            \u0027SCALEIO\u0027, utils.get_root_helper(),"},{"line_number":151,"context_line":"            device_scan_attempts\u003d"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_7e67454d","line":148,"in_reply_to":"da20952f_3d447719","updated":"2015-08-28 19:42:26.000000000","message":"So I actually tried \"connector.SCALEIO\" but got an AttributeError.  I tried connector.NFS, connector.ISCSI and they all gave me the same error.  I don\u0027t know why:(.","commit_id":"35d4056bc7719210ae75e807adbad1064b4f8ba3"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"0f411060bbd1c40202d67d9505499b11dfb46759","unresolved":false,"context_lines":[{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        LOG.debug(\"Connector is %s.\", connector)"},{"line_number":645,"context_line":"        volname \u003d self._id_to_base64(volume.id)"},{"line_number":646,"context_line":"        self.connection_properties[\u0027scaleIO_volname\u0027] \u003d volname"},{"line_number":647,"context_line":"        storage_type \u003d self._get_volumetype_extraspecs(volume)"},{"line_number":648,"context_line":"        LOG.info(_LI(\"Volume type is %s.\"), storage_type)"},{"line_number":649,"context_line":"        iops_limit \u003d self._find_iops_limit(storage_type)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_9dc6e366","line":646,"updated":"2015-08-28 18:24:58.000000000","message":"This is still a race condition.  If you get a call to initialize_connection for Volume1 and copy_image_to_volume(), you are overwriting the same data in self.connection_properties. \n\n:(","commit_id":"35d4056bc7719210ae75e807adbad1064b4f8ba3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"26eefb9c9eb25051a692d979261eee510ec9e24d","unresolved":false,"context_lines":[{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        LOG.debug(\"Connector is %s.\", connector)"},{"line_number":645,"context_line":"        volname \u003d self._id_to_base64(volume.id)"},{"line_number":646,"context_line":"        self.connection_properties[\u0027scaleIO_volname\u0027] \u003d volname"},{"line_number":647,"context_line":"        storage_type \u003d self._get_volumetype_extraspecs(volume)"},{"line_number":648,"context_line":"        LOG.info(_LI(\"Volume type is %s.\"), storage_type)"},{"line_number":649,"context_line":"        iops_limit \u003d self._find_iops_limit(storage_type)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_7ef50555","line":646,"in_reply_to":"da20952f_9dc6e366","updated":"2015-08-28 19:42:26.000000000","message":"Hmm, I see what you are saying.  I don\u0027t think we should use a class variable self.connection_properties.  connection_properties should be local variable.  It should be changed to local variable in other places as well.  We\u0027ll take a look of this.","commit_id":"35d4056bc7719210ae75e807adbad1064b4f8ba3"}]}
