)]}'
{"cinder/tests/test_netapp_eseries_iscsi.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"7f3c3d06a0de0b44cba526513d113a18ee7bab22","unresolved":false,"context_lines":[{"line_number":1077,"context_line":"        self.driver._objects[\u0027disk_pool_refs\u0027] \u003d [\u0027g2\u0027, \u0027g3\u0027]"},{"line_number":1078,"context_line":"        self.driver._client.list_volumes \u003d mock.Mock(return_value\u003dfake_vl_list)"},{"line_number":1079,"context_line":"        vol \u003d self.driver._get_volume_with_label_wwn(\u0027l2\u0027, \u0027w2:gh:yu\u0027)"},{"line_number":1080,"context_line":"        self.assertEqual(self.driver._client.list_volumes.call_count, 1)"},{"line_number":1081,"context_line":"        self.assertEqual(vol[\u0027volumeRef\u0027], \u00272\u0027)"},{"line_number":1082,"context_line":""},{"line_number":1083,"context_line":"    def test_get_vol_with_label_wwn_unmatched(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_f05c9f7f","line":1080,"updated":"2015-01-05 16:43:22.000000000","message":"Looks like the order of the parameters are reversed. It should be expected, actual.\nself.assertEqual(1, self.driver._client.list_volumes.call_count)\n\nSame for the below assertEqual statements.","commit_id":"3c225476ad767cf502617b33c4e293f959701717"}],"cinder/tests/test_volume_utils.py":[{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"7f3c3d06a0de0b44cba526513d113a18ee7bab22","unresolved":false,"context_lines":[{"line_number":712,"context_line":"        admin_context.return_value \u003d fake_context"},{"line_number":713,"context_line":"        db \u003d mock.Mock(volume_admin_metadata_get\u003dmock.Mock())"},{"line_number":714,"context_line":"        volume_utils.get_volume_admin_metadata(volume, db)"},{"line_number":715,"context_line":"        self.assertEqual(admin_context.call_count, 1)"},{"line_number":716,"context_line":"        db.volume_admin_metadata_get.assert_called_once_with("},{"line_number":717,"context_line":"            fake_context, \u0027fake_id\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_90bb5b74","line":715,"updated":"2015-01-05 16:43:22.000000000","message":"Here also need to reverse the parameter\u0027s order.","commit_id":"3c225476ad767cf502617b33c4e293f959701717"}],"cinder/volume/drivers/netapp/eseries/iscsi.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"d34e4cc18bd61e79968d5e396297a6a529f887a2","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":175,"context_line":"                msg \u003d _LI(\"System with controller addresses [%s] is not\""},{"line_number":176,"context_line":"                          \" registered with web service.\")"},{"line_number":177,"context_line":"                LOG.info(msg % self.configuration.netapp_controller_ips)"},{"line_number":178,"context_line":"        password_not_in_sync \u003d False"},{"line_number":179,"context_line":"        if system.get(\u0027status\u0027, \u0027\u0027).lower() \u003d\u003d \u0027passwordoutofsync\u0027:"},{"line_number":180,"context_line":"            password_not_in_sync \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_026e3e00","line":177,"updated":"2015-01-14 14:46:21.000000000","message":"Please, replace \u0027%\u0027, with \u0027,\u0027","commit_id":"011c351c65b6c35083bd9d93d25fb9d7066cf0d4"},{"author":{"_account_id":6094,"name":"Navneet Singh","email":"navsinghnitd@gmail.com","username":"singn"},"change_message_id":"99ea941b5f2d6d79d53e31de7642d6653f3b3093","unresolved":false,"context_lines":[{"line_number":174,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":175,"context_line":"                msg \u003d _LI(\"System with controller addresses [%s] is not\""},{"line_number":176,"context_line":"                          \" registered with web service.\")"},{"line_number":177,"context_line":"                LOG.info(msg % self.configuration.netapp_controller_ips)"},{"line_number":178,"context_line":"        password_not_in_sync \u003d False"},{"line_number":179,"context_line":"        if system.get(\u0027status\u0027, \u0027\u0027).lower() \u003d\u003d \u0027passwordoutofsync\u0027:"},{"line_number":180,"context_line":"            password_not_in_sync \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_0b8499d1","line":177,"in_reply_to":"3a961159_026e3e00","updated":"2015-01-14 15:52:34.000000000","message":"done","commit_id":"011c351c65b6c35083bd9d93d25fb9d7066cf0d4"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"a75f8a52edc6325d73942a99bed0c79c3df98d99","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        except KeyError:"},{"line_number":310,"context_line":"            wwn \u003d wwn.replace(\u0027:\u0027, \u0027\u0027).upper() if wwn else None"},{"line_number":311,"context_line":"            for vol in self._client.list_volumes():"},{"line_number":312,"context_line":"                if label:"},{"line_number":313,"context_line":"                    if vol.get(\u0027label\u0027) \u003d\u003d label:"},{"line_number":314,"context_line":"                        pass"},{"line_number":315,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa81d914_e2be9cd3","line":312,"updated":"2015-01-29 17:34:40.000000000","message":"how about:\n\n if label and vol.get(\u0027label\u0027) !\u003d label:\n     continue\n if wwn and vol.get(\u0027worldWideName\u0027).upper() !\u003d wwn:\n     continue\n\n\n?","commit_id":"112d80fcc6e986f8b29845b5459fe3e901bdc1e7"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"dff14a52208ffdb5f510176c21076f2abacc9c84","unresolved":false,"context_lines":[{"line_number":309,"context_line":"        except KeyError:"},{"line_number":310,"context_line":"            wwn \u003d wwn.replace(\u0027:\u0027, \u0027\u0027).upper() if wwn else None"},{"line_number":311,"context_line":"            for vol in self._client.list_volumes():"},{"line_number":312,"context_line":"                if label and vol.get(\u0027label\u0027) !\u003d label:"},{"line_number":313,"context_line":"                    continue"},{"line_number":314,"context_line":"                if wwn and vol.get(\u0027worldWideName\u0027).upper() !\u003d wwn:"},{"line_number":315,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_7a43b36b","line":312,"updated":"2015-02-06 12:48:46.000000000","message":"the two \u0027if\u0027 statements can be combined too, but non-blocker","commit_id":"a3d8245172e320b86ed0d6662fcbf0b3b3e560c1"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"dff14a52208ffdb5f510176c21076f2abacc9c84","unresolved":false,"context_lines":[{"line_number":872,"context_line":""},{"line_number":873,"context_line":"        Does not delete the underlying backend storage object."},{"line_number":874,"context_line":""},{"line_number":875,"context_line":"        For most drivers, this will not need to do anything.  However, some"},{"line_number":876,"context_line":"        drivers might use this call as an opportunity to clean up any"},{"line_number":877,"context_line":"        Cinder-specific configuration that they have associated with the"},{"line_number":878,"context_line":"        backend storage object."}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_c56a00b2","line":875,"updated":"2015-02-06 12:48:46.000000000","message":"We can remove this paragraph I think, or rephrase it to suit the netapp driver. Not a big deal though","commit_id":"a3d8245172e320b86ed0d6662fcbf0b3b3e560c1"},{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"dff14a52208ffdb5f510176c21076f2abacc9c84","unresolved":false,"context_lines":[{"line_number":878,"context_line":"        backend storage object."},{"line_number":879,"context_line":"        \"\"\""},{"line_number":880,"context_line":"        managed_vol \u003d self._get_volume(volume[\u0027id\u0027])"},{"line_number":881,"context_line":"        admin_metadata \u003d volume_utils.get_volume_admin_metadata("},{"line_number":882,"context_line":"            volume, self.db)"},{"line_number":883,"context_line":"        LOG.info(_LI(\"Unmanaged volume with original label %(ps)s, \""},{"line_number":884,"context_line":"                     \"current label %(label)s and wwn %(wwn)s.\"),"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_65a154f7","line":881,"updated":"2015-02-06 12:48:46.000000000","message":"think we can just call the method on the db object directly here, instead of creating a method which does the same..\n\nI\u0027m fine with an additional db access actually, as it was clarified to me some time back that it would help deployers find more info in the logs at the (presumably small) cost of a db access..","commit_id":"a3d8245172e320b86ed0d6662fcbf0b3b3e560c1"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d886157d0ce09556b99bd0a8fd2dd9956465d227","unresolved":false,"context_lines":[{"line_number":914,"context_line":"        \"\"\"Brings an existing storage object under Cinder management.\"\"\""},{"line_number":915,"context_line":"        vol \u003d self._get_existing_vol_with_manage_ref(volume, existing_ref)"},{"line_number":916,"context_line":"        label \u003d utils.convert_uuid_to_es_fmt(volume[\u0027id\u0027])"},{"line_number":917,"context_line":"        if label \u003d\u003d vol[\u0027label\u0027]:"},{"line_number":918,"context_line":"            LOG.info(_LI(\"Volume with given ref %s need not be renamed during\""},{"line_number":919,"context_line":"                         \" manage operation.\"), existing_ref)"},{"line_number":920,"context_line":"            managed_vol \u003d vol"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_7beb0478","line":917,"updated":"2015-02-25 05:43:52.000000000","message":"How can you tell whether a volume is already being managed if there is no difference in \u0027label\u0027?","commit_id":"53fde9dc0794f58e5d1fa6825429ff26a0e06a22"},{"author":{"_account_id":9186,"name":"Bob Callaway","email":"bcallawa@redhat.com","username":"rcallawa"},"change_message_id":"aec8b4f24a326299a181d7dfe15b4c2d10bdd7b1","unresolved":false,"context_lines":[{"line_number":914,"context_line":"        \"\"\"Brings an existing storage object under Cinder management.\"\"\""},{"line_number":915,"context_line":"        vol \u003d self._get_existing_vol_with_manage_ref(volume, existing_ref)"},{"line_number":916,"context_line":"        label \u003d utils.convert_uuid_to_es_fmt(volume[\u0027id\u0027])"},{"line_number":917,"context_line":"        if label \u003d\u003d vol[\u0027label\u0027]:"},{"line_number":918,"context_line":"            LOG.info(_LI(\"Volume with given ref %s need not be renamed during\""},{"line_number":919,"context_line":"                         \" manage operation.\"), existing_ref)"},{"line_number":920,"context_line":"            managed_vol \u003d vol"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_3a47bbbd","line":917,"in_reply_to":"ba7be1f8_7beb0478","updated":"2015-02-25 11:39:47.000000000","message":"The call on line 915 goes to line 939, which eventually goes to line 332 when we query the storage system for a volume list. \n\nIf that volume has a \u0027label\u0027 attribute set, and the value is equal to a one-way hash (generated by utils.convert_uuid_to_es_fmt() ) then we know that the volume is ready to be managed with no further changes. \n\nIf the volume doesn\u0027t have a \u0027label\u0027 attribute set, then we need to set it to the value of the one-way hash.","commit_id":"53fde9dc0794f58e5d1fa6825429ff26a0e06a22"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d886157d0ce09556b99bd0a8fd2dd9956465d227","unresolved":false,"context_lines":[{"line_number":924,"context_line":"        self._cache_volume(managed_vol)"},{"line_number":925,"context_line":"        LOG.info(_LI(\"Manage operation completed for volume with new label\""},{"line_number":926,"context_line":"                     \" %(label)s and wwn %(wwn)s.\"),"},{"line_number":927,"context_line":"                 {\u0027label\u0027: label, \u0027wwn\u0027: managed_vol[\u0027worldWideName\u0027]})"},{"line_number":928,"context_line":""},{"line_number":929,"context_line":"    def manage_existing_get_size(self, volume, existing_ref):"},{"line_number":930,"context_line":"        \"\"\"Return size of volume to be managed by manage_existing."}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_fba7f4a4","line":927,"updated":"2015-02-25 05:43:52.000000000","message":"To avoid typo (this is case sensitive too), I suggest making worldWideName a constant. It is used in multiple places.","commit_id":"53fde9dc0794f58e5d1fa6825429ff26a0e06a22"},{"author":{"_account_id":9186,"name":"Bob Callaway","email":"bcallawa@redhat.com","username":"rcallawa"},"change_message_id":"aec8b4f24a326299a181d7dfe15b4c2d10bdd7b1","unresolved":false,"context_lines":[{"line_number":924,"context_line":"        self._cache_volume(managed_vol)"},{"line_number":925,"context_line":"        LOG.info(_LI(\"Manage operation completed for volume with new label\""},{"line_number":926,"context_line":"                     \" %(label)s and wwn %(wwn)s.\"),"},{"line_number":927,"context_line":"                 {\u0027label\u0027: label, \u0027wwn\u0027: managed_vol[\u0027worldWideName\u0027]})"},{"line_number":928,"context_line":""},{"line_number":929,"context_line":"    def manage_existing_get_size(self, volume, existing_ref):"},{"line_number":930,"context_line":"        \"\"\"Return size of volume to be managed by manage_existing."}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_7a14d39f","line":927,"in_reply_to":"ba7be1f8_fba7f4a4","updated":"2015-02-25 11:39:47.000000000","message":"will do.","commit_id":"53fde9dc0794f58e5d1fa6825429ff26a0e06a22"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d886157d0ce09556b99bd0a8fd2dd9956465d227","unresolved":false,"context_lines":[{"line_number":954,"context_line":"           Does not delete the underlying backend storage object. Logs a"},{"line_number":955,"context_line":"           message to indicate the volume is no longer under Cinder\u0027s control."},{"line_number":956,"context_line":"        \"\"\""},{"line_number":957,"context_line":"        managed_vol \u003d self._get_volume(volume[\u0027id\u0027])"},{"line_number":958,"context_line":"        LOG.info(_LI(\"Unmanaged volume with current label %(label)s and wwn \""},{"line_number":959,"context_line":"                     \"%(wwn)s.\"), {\u0027label\u0027: managed_vol[\u0027label\u0027],"},{"line_number":960,"context_line":"                                   \u0027wwn\u0027: managed_vol[\u0027worldWideName\u0027]})"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_9b78b8c5","line":957,"updated":"2015-02-25 05:43:52.000000000","message":"Am I missing something here? This \"unmanage\" just gets a label and print it out. It doesn\u0027t change anything.","commit_id":"53fde9dc0794f58e5d1fa6825429ff26a0e06a22"},{"author":{"_account_id":9186,"name":"Bob Callaway","email":"bcallawa@redhat.com","username":"rcallawa"},"change_message_id":"aec8b4f24a326299a181d7dfe15b4c2d10bdd7b1","unresolved":false,"context_lines":[{"line_number":954,"context_line":"           Does not delete the underlying backend storage object. Logs a"},{"line_number":955,"context_line":"           message to indicate the volume is no longer under Cinder\u0027s control."},{"line_number":956,"context_line":"        \"\"\""},{"line_number":957,"context_line":"        managed_vol \u003d self._get_volume(volume[\u0027id\u0027])"},{"line_number":958,"context_line":"        LOG.info(_LI(\"Unmanaged volume with current label %(label)s and wwn \""},{"line_number":959,"context_line":"                     \"%(wwn)s.\"), {\u0027label\u0027: managed_vol[\u0027label\u0027],"},{"line_number":960,"context_line":"                                   \u0027wwn\u0027: managed_vol[\u0027worldWideName\u0027]})"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_5a72af11","line":957,"in_reply_to":"ba7be1f8_9b78b8c5","updated":"2015-02-25 11:39:47.000000000","message":"It doesn\u0027t need to do anything here. The manager will remove this from the DB and we simply log a message to denote that the volume is no longer under the control of Cinder.","commit_id":"53fde9dc0794f58e5d1fa6825429ff26a0e06a22"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"d886157d0ce09556b99bd0a8fd2dd9956465d227","unresolved":false,"context_lines":[{"line_number":957,"context_line":"        managed_vol \u003d self._get_volume(volume[\u0027id\u0027])"},{"line_number":958,"context_line":"        LOG.info(_LI(\"Unmanaged volume with current label %(label)s and wwn \""},{"line_number":959,"context_line":"                     \"%(wwn)s.\"), {\u0027label\u0027: managed_vol[\u0027label\u0027],"},{"line_number":960,"context_line":"                                   \u0027wwn\u0027: managed_vol[\u0027worldWideName\u0027]})"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_3bbd0cb8","line":960,"updated":"2015-02-25 05:43:52.000000000","message":"\u0027worldWideName\u0027 is used here as well. See my previous comment.","commit_id":"53fde9dc0794f58e5d1fa6825429ff26a0e06a22"},{"author":{"_account_id":9186,"name":"Bob Callaway","email":"bcallawa@redhat.com","username":"rcallawa"},"change_message_id":"aec8b4f24a326299a181d7dfe15b4c2d10bdd7b1","unresolved":false,"context_lines":[{"line_number":957,"context_line":"        managed_vol \u003d self._get_volume(volume[\u0027id\u0027])"},{"line_number":958,"context_line":"        LOG.info(_LI(\"Unmanaged volume with current label %(label)s and wwn \""},{"line_number":959,"context_line":"                     \"%(wwn)s.\"), {\u0027label\u0027: managed_vol[\u0027label\u0027],"},{"line_number":960,"context_line":"                                   \u0027wwn\u0027: managed_vol[\u0027worldWideName\u0027]})"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba7be1f8_9a67c74c","line":960,"in_reply_to":"ba7be1f8_3bbd0cb8","updated":"2015-02-25 11:39:47.000000000","message":"Done","commit_id":"53fde9dc0794f58e5d1fa6825429ff26a0e06a22"}],"cinder/volume/utils.py":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"dff14a52208ffdb5f510176c21076f2abacc9c84","unresolved":false,"context_lines":[{"line_number":541,"context_line":"    return new_host"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"def get_volume_admin_metadata(volume, db):"},{"line_number":545,"context_line":"    \"\"\"Provides admin metdadata associated with volume.\"\"\""},{"line_number":546,"context_line":"    ctxt \u003d context.get_admin_context()"},{"line_number":547,"context_line":"    return db.volume_admin_metadata_get(ctxt, volume[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"da86d52c_e510e44f","line":544,"updated":"2015-02-06 12:48:46.000000000","message":"not sure this is the right place for this method, or if this method is required to be created at all. We can just use the db object directly in the driver, and that way it would be cleaner I suppose","commit_id":"a3d8245172e320b86ed0d6662fcbf0b3b3e560c1"}]}
