)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11ab9ac6002959ad1e9057c8541acc3e6309bc12","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Shay Halsband \u003cshay.halsband@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-07 17:16:40 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"XtremIO Volume driver Consistancy Groups support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements: blueprint emc-xtremio-updates"},{"line_number":10,"context_line":"Change-Id: I2ddf629b0c97a849a2c95ca4a8b7a4dd4adccbec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3afb71cf_fb6df304","line":7,"updated":"2015-06-07 21:52:09.000000000","message":"/Consistancy/Consistency/","commit_id":"2817cfd00d47cd623dbf7f848abaea665c5b2c50"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"85b35f931c60d38e485995ab77e9c0b8f21c8734","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Shay Halsband \u003cshay.halsband@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-06-07 17:16:40 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"XtremIO Volume driver Consistancy Groups support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Implements: blueprint emc-xtremio-updates"},{"line_number":10,"context_line":"Change-Id: I2ddf629b0c97a849a2c95ca4a8b7a4dd4adccbec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3afb71cf_9d56ecd0","line":7,"in_reply_to":"3afb71cf_fb6df304","updated":"2015-06-08 15:22:06.000000000","message":"Done","commit_id":"2817cfd00d47cd623dbf7f848abaea665c5b2c50"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ff5e9447024092ee8434de2330ed3a7812697fe7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"XtremIO Volume driver Consistency Groups support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- client can now address XtremIO rest api v2"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements: blueprint emc-xtremio-updates"},{"line_number":12,"context_line":"Change-Id: I2ddf629b0c97a849a2c95ca4a8b7a4dd4adccbec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba3cc151_16cd2886","line":9,"updated":"2015-07-10 16:16:19.000000000","message":"I don\u0027t understand this commit message. Do you mean \"adding consistency group support using XtremIO REST API V2\"?","commit_id":"8c8712c17e86dff88d9ad6f83d3ec4247b664e17"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"9c5e767a55a714622e2f80ad575d9e394e13adca","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"XtremIO Volume driver Consistency Groups support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- client can now address XtremIO rest api v2"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements: blueprint emc-xtremio-updates"},{"line_number":12,"context_line":"Change-Id: I2ddf629b0c97a849a2c95ca4a8b7a4dd4adccbec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a41bdd9_80fd4f3c","line":9,"in_reply_to":"ba3cc151_16cd2886","updated":"2015-07-13 14:32:04.000000000","message":"Done","commit_id":"8c8712c17e86dff88d9ad6f83d3ec4247b664e17"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ff5e9447024092ee8434de2330ed3a7812697fe7","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- client can now address XtremIO rest api v2"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements: blueprint emc-xtremio-updates"},{"line_number":12,"context_line":"Change-Id: I2ddf629b0c97a849a2c95ca4a8b7a4dd4adccbec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ba3cc151_96861815","line":11,"updated":"2015-07-10 16:16:19.000000000","message":"Should be Partial-Implements as you have other patches addressing the same blueprint.","commit_id":"8c8712c17e86dff88d9ad6f83d3ec4247b664e17"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"9c5e767a55a714622e2f80ad575d9e394e13adca","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- client can now address XtremIO rest api v2"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements: blueprint emc-xtremio-updates"},{"line_number":12,"context_line":"Change-Id: I2ddf629b0c97a849a2c95ca4a8b7a4dd4adccbec"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a41bdd9_e0853bad","line":11,"in_reply_to":"ba3cc151_96861815","updated":"2015-07-13 14:32:04.000000000","message":"Done","commit_id":"8c8712c17e86dff88d9ad6f83d3ec4247b664e17"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"0cf26223fbe173269920dfa3f7bb4518e5b6e3f5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-07-23 16:25:23 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"XtremIO Volume driver Consistency Groups support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Adding consistency group support using XtremIO REST API V2"},{"line_number":10,"context_line":"- Implements all OpenStack CG volume driver interfaces using XtremIO CG"},{"line_number":11,"context_line":"capabilities."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3a50d1a3_a838d4d3","line":8,"updated":"2015-07-23 13:49:06.000000000","message":"In whole commit message, we used uppercase and lowercase for same words.\nSimilarly, singular and plural for same word.","commit_id":"da4c7a106a3c81dc19b5137999e07f6d56654d8d"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"4d75980ca4cd0c2e2861203238a994731d32ccf4","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2015-07-23 16:25:23 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"XtremIO Volume driver Consistency Groups support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Adding consistency group support using XtremIO REST API V2"},{"line_number":10,"context_line":"- Implements all OpenStack CG volume driver interfaces using XtremIO CG"},{"line_number":11,"context_line":"capabilities."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3a50d1a3_1a3267a7","line":8,"in_reply_to":"3a50d1a3_a838d4d3","updated":"2015-07-23 14:54:35.000000000","message":"Done","commit_id":"da4c7a106a3c81dc19b5137999e07f6d56654d8d"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"0cf26223fbe173269920dfa3f7bb4518e5b6e3f5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"XtremIO Volume driver Consistency Groups support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Adding consistency group support using XtremIO REST API V2"},{"line_number":10,"context_line":"- Implements all OpenStack CG volume driver interfaces using XtremIO CG"},{"line_number":11,"context_line":"capabilities."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3a50d1a3_25662d51","line":9,"updated":"2015-07-23 13:49:06.000000000","message":"would be better to add \u0027.\u0027 at EOL.","commit_id":"da4c7a106a3c81dc19b5137999e07f6d56654d8d"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"4d75980ca4cd0c2e2861203238a994731d32ccf4","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"XtremIO Volume driver Consistency Groups support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- Adding consistency group support using XtremIO REST API V2"},{"line_number":10,"context_line":"- Implements all OpenStack CG volume driver interfaces using XtremIO CG"},{"line_number":11,"context_line":"capabilities."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3a50d1a3_ba24935f","line":9,"in_reply_to":"3a50d1a3_25662d51","updated":"2015-07-23 14:54:35.000000000","message":"Done","commit_id":"da4c7a106a3c81dc19b5137999e07f6d56654d8d"}],"cinder/tests/unit/test_emc_xtremio.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11ab9ac6002959ad1e9057c8541acc3e6309bc12","unresolved":false,"context_lines":[{"line_number":30,"context_line":"          \u0027initiator-groups\u0027: \u0027ig-id\u0027,"},{"line_number":31,"context_line":"          \u0027lun-maps\u0027: \u0027mapping-id\u0027,"},{"line_number":32,"context_line":"          \u0027consistency-groups\u0027: \u0027cg-id\u0027,"},{"line_number":33,"context_line":"          \u0027consistency-group-volumes\u0027: \u0027cg-vol-id\u0027}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"xms_data \u003d {\u0027xms\u0027: {1: {\u0027version\u0027: \u00274.0.0\u0027}},"},{"line_number":36,"context_line":"            \u0027clusters\u0027: {1: {\u0027name\u0027: \u0027brick1\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_db70f7de","line":33,"updated":"2015-06-07 21:52:09.000000000","message":"Please use trailing comma and put closing bracket on the next line.\n\nhttp://docs.openstack.org/developer/hacking/#dictionaries-lists","commit_id":"2817cfd00d47cd623dbf7f848abaea665c5b2c50"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"85b35f931c60d38e485995ab77e9c0b8f21c8734","unresolved":false,"context_lines":[{"line_number":30,"context_line":"          \u0027initiator-groups\u0027: \u0027ig-id\u0027,"},{"line_number":31,"context_line":"          \u0027lun-maps\u0027: \u0027mapping-id\u0027,"},{"line_number":32,"context_line":"          \u0027consistency-groups\u0027: \u0027cg-id\u0027,"},{"line_number":33,"context_line":"          \u0027consistency-group-volumes\u0027: \u0027cg-vol-id\u0027}"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"xms_data \u003d {\u0027xms\u0027: {1: {\u0027version\u0027: \u00274.0.0\u0027}},"},{"line_number":36,"context_line":"            \u0027clusters\u0027: {1: {\u0027name\u0027: \u0027brick1\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_2236b752","line":33,"in_reply_to":"3afb71cf_db70f7de","updated":"2015-06-08 15:22:06.000000000","message":"Done","commit_id":"2817cfd00d47cd623dbf7f848abaea665c5b2c50"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ff5e9447024092ee8434de2330ed3a7812697fe7","unresolved":false,"context_lines":[{"line_number":437,"context_line":"                                            remove_volumes\u003d[d.test_volume2])"},{"line_number":438,"context_line":"        self.assertEqual(1, len(xms_data[\u0027consistency-group-volumes\u0027]))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"@mock.patch(\u0027cinder.volume.drivers.emc.xtremio.XtremIOClient.req\u0027)"},{"line_number":442,"context_line":"class EMCXIODriverFibreChannelTestCase(test.TestCase):"},{"line_number":443,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_565650cf","line":440,"updated":"2015-07-10 16:16:19.000000000","message":"I don\u0027t see any test on create CG from CG snapshot, delete_consistencygroup, create_cgsnapshot, delete_cgsnapshot.  Please add them.  Please also add negative test in addition to successful test.","commit_id":"8c8712c17e86dff88d9ad6f83d3ec4247b664e17"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"9c5e767a55a714622e2f80ad575d9e394e13adca","unresolved":false,"context_lines":[{"line_number":437,"context_line":"                                            remove_volumes\u003d[d.test_volume2])"},{"line_number":438,"context_line":"        self.assertEqual(1, len(xms_data[\u0027consistency-group-volumes\u0027]))"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"@mock.patch(\u0027cinder.volume.drivers.emc.xtremio.XtremIOClient.req\u0027)"},{"line_number":442,"context_line":"class EMCXIODriverFibreChannelTestCase(test.TestCase):"},{"line_number":443,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_c027d710","line":440,"in_reply_to":"ba3cc151_565650cf","updated":"2015-07-13 14:32:04.000000000","message":"Done","commit_id":"8c8712c17e86dff88d9ad6f83d3ec4247b664e17"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"18fc4d6f4eddbe64992b9a15a219796d79db42d9","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        snaps \u003d xms_data[\u0027volumes\u0027][1]"},{"line_number":448,"context_line":"        snaps[\u0027index\u0027] \u003d 1"},{"line_number":449,"context_line":"        xms_data[\u0027snapshot-sets\u0027] \u003d {snaps_name: snaps, 1: snaps}"},{"line_number":450,"context_line":"        self.driver.delete_cgsnapshot(d.context, d.cgsnapshot)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"@mock.patch(\u0027cinder.volume.drivers.emc.xtremio.XtremIOClient.req\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_0474cffa","line":450,"updated":"2015-07-21 16:07:11.000000000","message":"Please add a test for delete_consistencygroup.","commit_id":"30c6dc6282aa59f5d1e2f7ecb7f17dbe4c071c94"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"0505670c78b93707260ae438d97fe461eda345f7","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        snaps \u003d xms_data[\u0027volumes\u0027][1]"},{"line_number":448,"context_line":"        snaps[\u0027index\u0027] \u003d 1"},{"line_number":449,"context_line":"        xms_data[\u0027snapshot-sets\u0027] \u003d {snaps_name: snaps, 1: snaps}"},{"line_number":450,"context_line":"        self.driver.delete_cgsnapshot(d.context, d.cgsnapshot)"},{"line_number":451,"context_line":""},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"@mock.patch(\u0027cinder.volume.drivers.emc.xtremio.XtremIOClient.req\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_1813b25c","line":450,"in_reply_to":"3a50d1a3_0474cffa","updated":"2015-07-22 07:39:32.000000000","message":"Done","commit_id":"30c6dc6282aa59f5d1e2f7ecb7f17dbe4c071c94"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"76c398c587216f17fe4a35b62c81cb162e32d7ca","unresolved":false,"context_lines":[{"line_number":428,"context_line":"    @mock.patch(\u0027cinder.objects.snapshot.SnapshotList.get_all_for_cgsnapshot\u0027)"},{"line_number":429,"context_line":"    def test_cg_operations(self, get_all_for_cgsnapshot, req):"},{"line_number":430,"context_line":"        req.side_effect \u003d xms_request"},{"line_number":431,"context_line":"        clean_xms_data()"},{"line_number":432,"context_line":"        d \u003d self.data"},{"line_number":433,"context_line":"        snapshot_obj \u003d fake_snapshot.fake_snapshot_obj(d.context)"},{"line_number":434,"context_line":"        snapshot_obj.consistencygroup_id \u003d d.group[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_f7234c56","line":431,"updated":"2015-07-22 18:23:35.000000000","message":"I think this should be in setUp. It is in every function except test_check_for_setup_error. It does not look like it would affect test_check_for_setup_error to run clean_xms_data() in setUp.","commit_id":"ee32d418d93b236598db3410a545ad40c56d21ee"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"3bf3de7078f68b22ac713e1178e20bf7dbaa36c0","unresolved":false,"context_lines":[{"line_number":428,"context_line":"    @mock.patch(\u0027cinder.objects.snapshot.SnapshotList.get_all_for_cgsnapshot\u0027)"},{"line_number":429,"context_line":"    def test_cg_operations(self, get_all_for_cgsnapshot, req):"},{"line_number":430,"context_line":"        req.side_effect \u003d xms_request"},{"line_number":431,"context_line":"        clean_xms_data()"},{"line_number":432,"context_line":"        d \u003d self.data"},{"line_number":433,"context_line":"        snapshot_obj \u003d fake_snapshot.fake_snapshot_obj(d.context)"},{"line_number":434,"context_line":"        snapshot_obj.consistencygroup_id \u003d d.group[\u0027id\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_b66123d5","line":431,"in_reply_to":"3a50d1a3_f7234c56","updated":"2015-07-23 13:24:53.000000000","message":"Done","commit_id":"ee32d418d93b236598db3410a545ad40c56d21ee"}],"cinder/volume/drivers/emc/xtremio.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"11ab9ac6002959ad1e9057c8541acc3e6309bc12","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":129,"context_line":"        return response"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def get_base_url(self, ver):"},{"line_number":132,"context_line":"        if ver \u003d\u003d \u0027v1\u0027:"},{"line_number":133,"context_line":"            return \u0027https://%s/api/json/types\u0027 % self.configuration.san_ip"},{"line_number":134,"context_line":"        elif ver \u003d\u003d \u0027v2\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_bb789bc5","line":131,"updated":"2015-06-07 21:52:09.000000000","message":"This change isn\u0027t immediately obvious that it is related to what is stated in the commit message. Please add a not to the commit for this.","commit_id":"2817cfd00d47cd623dbf7f848abaea665c5b2c50"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"85b35f931c60d38e485995ab77e9c0b8f21c8734","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":129,"context_line":"        return response"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def get_base_url(self, ver):"},{"line_number":132,"context_line":"        if ver \u003d\u003d \u0027v1\u0027:"},{"line_number":133,"context_line":"            return \u0027https://%s/api/json/types\u0027 % self.configuration.san_ip"},{"line_number":134,"context_line":"        elif ver \u003d\u003d \u0027v2\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_a21bc71a","line":131,"in_reply_to":"3afb71cf_bb789bc5","updated":"2015-06-08 15:22:06.000000000","message":"Done","commit_id":"2817cfd00d47cd623dbf7f848abaea665c5b2c50"},{"author":{"_account_id":14377,"name":"Apoorva","email":"apps.desh@gmail.com","username":"apoorvad"},"change_message_id":"93d5bba9eae4d2ed41ea5df1df839e810b5492e4","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                       \u0027thick_provisioning_support\u0027: False,"},{"line_number":381,"context_line":"                       \u0027reserved_percentage\u0027:"},{"line_number":382,"context_line":"                       self.configuration.reserved_percentage,"},{"line_number":383,"context_line":"                       \u0027QoS_support\u0027: False}"},{"line_number":384,"context_line":"        self._stats.update(self.client.get_extra_capabilities())"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_3b4b8b89","line":383,"updated":"2015-06-07 21:57:53.000000000","message":"OpenStack style guideline suggests a trailing comma\nPlease use it throughout.\n\nhttp://docs.openstack.org/developer/hacking/#dictionaries-lists","commit_id":"2817cfd00d47cd623dbf7f848abaea665c5b2c50"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"85b35f931c60d38e485995ab77e9c0b8f21c8734","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                       \u0027thick_provisioning_support\u0027: False,"},{"line_number":381,"context_line":"                       \u0027reserved_percentage\u0027:"},{"line_number":382,"context_line":"                       self.configuration.reserved_percentage,"},{"line_number":383,"context_line":"                       \u0027QoS_support\u0027: False}"},{"line_number":384,"context_line":"        self._stats.update(self.client.get_extra_capabilities())"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3afb71cf_e2cf7f7d","line":383,"in_reply_to":"3afb71cf_3b4b8b89","updated":"2015-06-08 15:22:06.000000000","message":"Done","commit_id":"2817cfd00d47cd623dbf7f848abaea665c5b2c50"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"ff5e9447024092ee8434de2330ed3a7812697fe7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"1.0.4 - support for FC zones"},{"line_number":24,"context_line":"1.0.5 - add support for XtremIO 4.0"},{"line_number":25,"context_line":"1.0.6 - add support for iSCSI multipath, CA validation, consistency groups,"},{"line_number":26,"context_line":"        R/O snapshots"},{"line_number":27,"context_line":"\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba3cc151_361cec12","line":26,"updated":"2015-07-10 16:16:19.000000000","message":"This patch adds consistency group support, why do you add \"multipath\" and \"R/O snapshots\" here?","commit_id":"8c8712c17e86dff88d9ad6f83d3ec4247b664e17"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"9c5e767a55a714622e2f80ad575d9e394e13adca","unresolved":false,"context_lines":[{"line_number":23,"context_line":"1.0.4 - support for FC zones"},{"line_number":24,"context_line":"1.0.5 - add support for XtremIO 4.0"},{"line_number":25,"context_line":"1.0.6 - add support for iSCSI multipath, CA validation, consistency groups,"},{"line_number":26,"context_line":"        R/O snapshots"},{"line_number":27,"context_line":"\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import json"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a41bdd9_f341af3a","line":26,"in_reply_to":"ba3cc151_361cec12","updated":"2015-07-13 14:32:04.000000000","message":"these changes where merged from the previous patches","commit_id":"8c8712c17e86dff88d9ad6f83d3ec4247b664e17"},{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"f343771c6c17220077246adc15d95f39ff67b4eb","unresolved":false,"context_lines":[{"line_number":576,"context_line":"            remove_data \u003d {\u0027vol-id\u0027: vol[\u0027id\u0027], \u0027cg-id\u0027: group[\u0027id\u0027]}"},{"line_number":577,"context_line":"            self.client.req(\u0027consistency-group-volumes\u0027, \u0027DELETE\u0027, remove_data,"},{"line_number":578,"context_line":"                            name\u003dgroup[\u0027id\u0027], ver\u003d\u0027v2\u0027)"},{"line_number":579,"context_line":"        return [None, None, None]"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def _get_cgsnap_name(self, cgsnapshot):"},{"line_number":582,"context_line":"        return \u0027%(cg)s%(snap)s\u0027 % {\u0027cg\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a41bdd9_a5128655","line":579,"updated":"2015-07-15 03:48:54.000000000","message":"oh interesting... i guess python treats that the same way as just a tuple?","commit_id":"9789113bddde6fdab4cd30053d2ed8aa600d5306"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"18fc4d6f4eddbe64992b9a15a219796d79db42d9","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        else:"},{"line_number":553,"context_line":"            msg \u003d _(\"create_consistencygroup_from_src only supports a\""},{"line_number":554,"context_line":"                    \" cgsnapshot source, other sources cannot be used.\")"},{"line_number":555,"context_line":"            raise exception.InvalidInput(msg)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"        return None, None"},{"line_number":558,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_44ff3734","line":555,"updated":"2015-07-21 16:07:11.000000000","message":"Please add a unit test for this exception using assertRaises.","commit_id":"30c6dc6282aa59f5d1e2f7ecb7f17dbe4c071c94"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"0505670c78b93707260ae438d97fe461eda345f7","unresolved":false,"context_lines":[{"line_number":552,"context_line":"        else:"},{"line_number":553,"context_line":"            msg \u003d _(\"create_consistencygroup_from_src only supports a\""},{"line_number":554,"context_line":"                    \" cgsnapshot source, other sources cannot be used.\")"},{"line_number":555,"context_line":"            raise exception.InvalidInput(msg)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"        return None, None"},{"line_number":558,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_58705adc","line":555,"in_reply_to":"3a50d1a3_44ff3734","updated":"2015-07-22 07:39:32.000000000","message":"Done","commit_id":"30c6dc6282aa59f5d1e2f7ecb7f17dbe4c071c94"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"18fc4d6f4eddbe64992b9a15a219796d79db42d9","unresolved":false,"context_lines":[{"line_number":576,"context_line":"            remove_data \u003d {\u0027vol-id\u0027: vol[\u0027id\u0027], \u0027cg-id\u0027: group[\u0027id\u0027]}"},{"line_number":577,"context_line":"            self.client.req(\u0027consistency-group-volumes\u0027, \u0027DELETE\u0027, remove_data,"},{"line_number":578,"context_line":"                            name\u003dgroup[\u0027id\u0027], ver\u003d\u0027v2\u0027)"},{"line_number":579,"context_line":"        return [None, None, None]"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def _get_cgsnap_name(self, cgsnapshot):"},{"line_number":582,"context_line":"        return \u0027%(cg)s%(snap)s\u0027 % {\u0027cg\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_c49fc7b2","line":579,"updated":"2015-07-21 16:07:11.000000000","message":"Patrick pointed out this in patch set 7.  This should be:\n\nreturn None, None, None","commit_id":"30c6dc6282aa59f5d1e2f7ecb7f17dbe4c071c94"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"0505670c78b93707260ae438d97fe461eda345f7","unresolved":false,"context_lines":[{"line_number":576,"context_line":"            remove_data \u003d {\u0027vol-id\u0027: vol[\u0027id\u0027], \u0027cg-id\u0027: group[\u0027id\u0027]}"},{"line_number":577,"context_line":"            self.client.req(\u0027consistency-group-volumes\u0027, \u0027DELETE\u0027, remove_data,"},{"line_number":578,"context_line":"                            name\u003dgroup[\u0027id\u0027], ver\u003d\u0027v2\u0027)"},{"line_number":579,"context_line":"        return [None, None, None]"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def _get_cgsnap_name(self, cgsnapshot):"},{"line_number":582,"context_line":"        return \u0027%(cg)s%(snap)s\u0027 % {\u0027cg\u0027: cgsnapshot[\u0027consistencygroup_id\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_d8b9ca16","line":579,"in_reply_to":"3a50d1a3_c49fc7b2","updated":"2015-07-22 07:39:32.000000000","message":"Done","commit_id":"30c6dc6282aa59f5d1e2f7ecb7f17dbe4c071c94"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"18fc4d6f4eddbe64992b9a15a219796d79db42d9","unresolved":false,"context_lines":[{"line_number":589,"context_line":"                \u0027snapshot-set-name\u0027: self._get_cgsnap_name(cgsnapshot)}"},{"line_number":590,"context_line":"        self.client.req(\u0027snapshots\u0027, \u0027POST\u0027, data, ver\u003d\u0027v2\u0027)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        snapshots \u003d self.db.snapshot_get_all_for_cgsnapshot("},{"line_number":593,"context_line":"            context, cgsnapshot.id)"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_a45f1be4","line":592,"updated":"2015-07-21 16:07:11.000000000","message":"See this bug: https://bugs.launchpad.net/cinder/+bug/1458125\n\nPlease change this to use snapshot object. Example: \n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/prophetstor/dplcommon.py#L924","commit_id":"30c6dc6282aa59f5d1e2f7ecb7f17dbe4c071c94"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"0505670c78b93707260ae438d97fe461eda345f7","unresolved":false,"context_lines":[{"line_number":589,"context_line":"                \u0027snapshot-set-name\u0027: self._get_cgsnap_name(cgsnapshot)}"},{"line_number":590,"context_line":"        self.client.req(\u0027snapshots\u0027, \u0027POST\u0027, data, ver\u003d\u0027v2\u0027)"},{"line_number":591,"context_line":""},{"line_number":592,"context_line":"        snapshots \u003d self.db.snapshot_get_all_for_cgsnapshot("},{"line_number":593,"context_line":"            context, cgsnapshot.id)"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_d8c30a56","line":592,"in_reply_to":"3a50d1a3_a45f1be4","updated":"2015-07-22 07:39:32.000000000","message":"Done","commit_id":"30c6dc6282aa59f5d1e2f7ecb7f17dbe4c071c94"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"18fc4d6f4eddbe64992b9a15a219796d79db42d9","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        self.client.req(\u0027snapshot-sets\u0027, \u0027DELETE\u0027,"},{"line_number":605,"context_line":"                        name\u003dself._get_cgsnap_name(cgsnapshot), ver\u003d\u0027v2\u0027)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"        snapshots \u003d self.db.snapshot_get_all_for_cgsnapshot("},{"line_number":608,"context_line":"            context, cgsnapshot.id)"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_44a09790","line":607,"updated":"2015-07-21 16:07:11.000000000","message":"See this bug: https://bugs.launchpad.net/cinder/+bug/1458125\n\nPlease change this to use snapshot object. Example: \n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/prophetstor/dplcommon.py#L924","commit_id":"30c6dc6282aa59f5d1e2f7ecb7f17dbe4c071c94"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"0505670c78b93707260ae438d97fe461eda345f7","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        self.client.req(\u0027snapshot-sets\u0027, \u0027DELETE\u0027,"},{"line_number":605,"context_line":"                        name\u003dself._get_cgsnap_name(cgsnapshot), ver\u003d\u0027v2\u0027)"},{"line_number":606,"context_line":""},{"line_number":607,"context_line":"        snapshots \u003d self.db.snapshot_get_all_for_cgsnapshot("},{"line_number":608,"context_line":"            context, cgsnapshot.id)"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"        for snapshot in snapshots:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_78a3d6b2","line":607,"in_reply_to":"3a50d1a3_44a09790","updated":"2015-07-22 07:39:32.000000000","message":"Done","commit_id":"30c6dc6282aa59f5d1e2f7ecb7f17dbe4c071c94"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"76c398c587216f17fe4a35b62c81cb162e32d7ca","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def add_vol_to_cg(self, vol_id, cg_id):"},{"line_number":281,"context_line":"        add_data \u003d {\u0027vol-id\u0027: vol_id, \u0027cg-id\u0027: cg_id}"},{"line_number":282,"context_line":"        self.req(\u0027consistency-group-volumes\u0027, \u0027POST\u0027, add_data, ver\u003d\u0027v2\u0027)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"class XtremIOVolumeDriver(san.SanDriver):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_572d6093","line":282,"updated":"2015-07-22 18:23:35.000000000","message":"add_data should probably be passed in as a keyword argument as in other functions.","commit_id":"ee32d418d93b236598db3410a545ad40c56d21ee"},{"author":{"_account_id":11418,"name":"Shay Halsband","email":"shay.halsband@emc.com","username":"shyh"},"change_message_id":"3bf3de7078f68b22ac713e1178e20bf7dbaa36c0","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def add_vol_to_cg(self, vol_id, cg_id):"},{"line_number":281,"context_line":"        add_data \u003d {\u0027vol-id\u0027: vol_id, \u0027cg-id\u0027: cg_id}"},{"line_number":282,"context_line":"        self.req(\u0027consistency-group-volumes\u0027, \u0027POST\u0027, add_data, ver\u003d\u0027v2\u0027)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"class XtremIOVolumeDriver(san.SanDriver):"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_56ea1f75","line":282,"in_reply_to":"3a50d1a3_572d6093","updated":"2015-07-23 13:24:53.000000000","message":"as data is the 3rd parameter it\u0027d OK both ways","commit_id":"ee32d418d93b236598db3410a545ad40c56d21ee"},{"author":{"_account_id":16973,"name":"Skyler Berg","email":"skylertheberg@gmail.com","username":"sberg"},"change_message_id":"76c398c587216f17fe4a35b62c81cb162e32d7ca","unresolved":false,"context_lines":[{"line_number":588,"context_line":"        \"\"\"Creates a cgsnapshot.\"\"\""},{"line_number":589,"context_line":"        data \u003d {\u0027consistency-group-id\u0027: cgsnapshot[\u0027consistencygroup_id\u0027],"},{"line_number":590,"context_line":"                \u0027snapshot-set-name\u0027: self._get_cgsnap_name(cgsnapshot)}"},{"line_number":591,"context_line":"        self.client.req(\u0027snapshots\u0027, \u0027POST\u0027, data, ver\u003d\u0027v2\u0027)"},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"        snapshots \u003d objects.SnapshotList().get_all_for_cgsnapshot("},{"line_number":594,"context_line":"            context, cgsnapshot[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a50d1a3_dc0bd728","line":591,"updated":"2015-07-22 18:23:35.000000000","message":"In the other methods \"data\" is passed in as a kwarg, and it probably should be here.\n\nIn the other functions is says create_data rather than just plain data here. Perhaps the other ones should just be data for consistency.","commit_id":"ee32d418d93b236598db3410a545ad40c56d21ee"}]}
