)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"3e3080a3f57c9b4e3e230fe271cbe3e6aa9040f5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support for consistency groups in ScaleIO driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for all consisteny groups functionalities"},{"line_number":10,"context_line":"in ScaleIO driver."},{"line_number":11,"context_line":"Also fixed a small mistake in a test regarding deleting a snapshot."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"7a5de9d1_a5e67f14","line":9,"range":{"start_line":9,"start_character":20,"end_line":9,"end_character":30},"updated":"2016-02-02 19:12:43.000000000","message":"s/consisteny/consistency","commit_id":"67a29649e941c0667abe7e696dafae52ef1a9b3d"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"61159630ffb260e3f3f2f7d5b52a7b3d4ccea950","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support for consistency groups in ScaleIO driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add support for all consisteny groups functionalities"},{"line_number":10,"context_line":"in ScaleIO driver."},{"line_number":11,"context_line":"Also fixed a small mistake in a test regarding deleting a snapshot."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5a5ae5dd_a99f395e","line":9,"range":{"start_line":9,"start_character":20,"end_line":9,"end_character":30},"in_reply_to":"7a5de9d1_a5e67f14","updated":"2016-02-03 13:35:11.000000000","message":"Done","commit_id":"67a29649e941c0667abe7e696dafae52ef1a9b3d"}],"cinder/tests/unit/volume/drivers/emc/scaleio/test_consistencygroups.py":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        \"\"\"\r"},{"line_number":34,"context_line":"        super(TestConsistencyGroups, self).setUp()\r"},{"line_number":35,"context_line":"        self.ctx \u003d context.RequestContext(\u0027fake\u0027, \u0027fake\u0027, auth_token\u003dTrue)\r"},{"line_number":36,"context_line":"        self.consistency_group \u003d \\\r"},{"line_number":37,"context_line":"            fake_consistencygroup.fake_consistencyobject_obj(self.ctx,\r"},{"line_number":38,"context_line":"                                                             **{\u0027id\u0027: \u0027cgid\u0027})\r"},{"line_number":39,"context_line":"        fake_volume1 \u003d fake_volume.fake_volume_obj(\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_d349e5d1","line":36,"range":{"start_line":36,"start_character":33,"end_line":36,"end_character":34},"updated":"2016-01-19 15:14:49.000000000","message":"Should use \u0027()\u0027 for line continuation instead of \u0027\\\u0027 if possible.","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"1614391115ef5e7e663c5f3358685f6b26fa97d5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        \"\"\"\r"},{"line_number":34,"context_line":"        super(TestConsistencyGroups, self).setUp()\r"},{"line_number":35,"context_line":"        self.ctx \u003d context.RequestContext(\u0027fake\u0027, \u0027fake\u0027, auth_token\u003dTrue)\r"},{"line_number":36,"context_line":"        self.consistency_group \u003d \\\r"},{"line_number":37,"context_line":"            fake_consistencygroup.fake_consistencyobject_obj(self.ctx,\r"},{"line_number":38,"context_line":"                                                             **{\u0027id\u0027: \u0027cgid\u0027})\r"},{"line_number":39,"context_line":"        fake_volume1 \u003d fake_volume.fake_volume_obj(\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_6662a7af","line":36,"range":{"start_line":36,"start_character":33,"end_line":36,"end_character":34},"in_reply_to":"ba63e191_d349e5d1","updated":"2016-01-19 19:55:44.000000000","message":"Done","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    def test_create_consistencygroup(self):\r"},{"line_number":110,"context_line":"        result \u003d self.driver.create_consistencygroup(self.ctx,\r"},{"line_number":111,"context_line":"                                                     self.consistency_group)\r"},{"line_number":112,"context_line":"        self.assertEqual(result[\u0027status\u0027], \u0027available\u0027)\r"},{"line_number":113,"context_line":"\r"},{"line_number":114,"context_line":"    def test_delete_consistencygroup_valid(self):\r"},{"line_number":115,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_f652d7dc","line":112,"range":{"start_line":112,"start_character":8,"end_line":112,"end_character":55},"updated":"2016-01-19 15:14:49.000000000","message":"The order for assertEqual should be (expected, result).","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"1614391115ef5e7e663c5f3358685f6b26fa97d5","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    def test_create_consistencygroup(self):\r"},{"line_number":110,"context_line":"        result \u003d self.driver.create_consistencygroup(self.ctx,\r"},{"line_number":111,"context_line":"                                                     self.consistency_group)\r"},{"line_number":112,"context_line":"        self.assertEqual(result[\u0027status\u0027], \u0027available\u0027)\r"},{"line_number":113,"context_line":"\r"},{"line_number":114,"context_line":"    def test_delete_consistencygroup_valid(self):\r"},{"line_number":115,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_c673537f","line":112,"range":{"start_line":112,"start_character":8,"end_line":112,"end_character":55},"in_reply_to":"ba63e191_f652d7dc","updated":"2016-01-19 19:55:44.000000000","message":"Done","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.driver.configuration.set_override(\r"},{"line_number":117,"context_line":"            \u0027sio_unmap_volume_before_deletion\u0027,\r"},{"line_number":118,"context_line":"            override\u003dTrue)\r"},{"line_number":119,"context_line":"        result_model_update, result_volumes_update \u003d \\\r"},{"line_number":120,"context_line":"            self.driver.delete_consistencygroup(self.ctx,\r"},{"line_number":121,"context_line":"                                                self.consistency_group,\r"},{"line_number":122,"context_line":"                                                self.volumes)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_d676b33d","line":119,"range":{"start_line":119,"start_character":53,"end_line":119,"end_character":54},"updated":"2016-01-19 15:14:49.000000000","message":"Should use \u0027()\u0027 for line continuation instead of \u0027\\\u0027 if possible.","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"1614391115ef5e7e663c5f3358685f6b26fa97d5","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.driver.configuration.set_override(\r"},{"line_number":117,"context_line":"            \u0027sio_unmap_volume_before_deletion\u0027,\r"},{"line_number":118,"context_line":"            override\u003dTrue)\r"},{"line_number":119,"context_line":"        result_model_update, result_volumes_update \u003d \\\r"},{"line_number":120,"context_line":"            self.driver.delete_consistencygroup(self.ctx,\r"},{"line_number":121,"context_line":"                                                self.consistency_group,\r"},{"line_number":122,"context_line":"                                                self.volumes)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_866d5b9a","line":119,"range":{"start_line":119,"start_character":53,"end_line":119,"end_character":54},"in_reply_to":"ba63e191_d676b33d","updated":"2016-01-19 19:55:44.000000000","message":"Done","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                                self.volumes)\r"},{"line_number":123,"context_line":"        self.assertTrue(all(volume[\u0027status\u0027] \u003d\u003d \u0027deleted\u0027 for volume in\r"},{"line_number":124,"context_line":"                            result_volumes_update))\r"},{"line_number":125,"context_line":"        self.assertEqual(result_model_update[\u0027status\u0027], \u0027deleted\u0027)\r"},{"line_number":126,"context_line":"\r"},{"line_number":127,"context_line":"    def test_delete_consistency_group_fail(self):\r"},{"line_number":128,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.BadStatus)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_16fa0bbe","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":66},"updated":"2016-01-19 15:14:49.000000000","message":"The order for assertEqual should be (expected, result).","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"1614391115ef5e7e663c5f3358685f6b26fa97d5","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                                                self.volumes)\r"},{"line_number":123,"context_line":"        self.assertTrue(all(volume[\u0027status\u0027] \u003d\u003d \u0027deleted\u0027 for volume in\r"},{"line_number":124,"context_line":"                            result_volumes_update))\r"},{"line_number":125,"context_line":"        self.assertEqual(result_model_update[\u0027status\u0027], \u0027deleted\u0027)\r"},{"line_number":126,"context_line":"\r"},{"line_number":127,"context_line":"    def test_delete_consistency_group_fail(self):\r"},{"line_number":128,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.BadStatus)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_06108b00","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":66},"in_reply_to":"ba63e191_16fa0bbe","updated":"2016-01-19 19:55:44.000000000","message":"Done","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":126,"context_line":"\r"},{"line_number":127,"context_line":"    def test_delete_consistency_group_fail(self):\r"},{"line_number":128,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.BadStatus)\r"},{"line_number":129,"context_line":"        result_model_update, result_volumes_update \u003d \\\r"},{"line_number":130,"context_line":"            self.driver.delete_consistencygroup(self.ctx,\r"},{"line_number":131,"context_line":"                                                self.consistency_group,\r"},{"line_number":132,"context_line":"                                                self.volumes)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_535ad584","line":129,"range":{"start_line":129,"start_character":53,"end_line":129,"end_character":54},"updated":"2016-01-19 15:14:49.000000000","message":"Should use \u0027()\u0027 for line continuation instead of \u0027\\\u0027 if possible.","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"1614391115ef5e7e663c5f3358685f6b26fa97d5","unresolved":false,"context_lines":[{"line_number":126,"context_line":"\r"},{"line_number":127,"context_line":"    def test_delete_consistency_group_fail(self):\r"},{"line_number":128,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.BadStatus)\r"},{"line_number":129,"context_line":"        result_model_update, result_volumes_update \u003d \\\r"},{"line_number":130,"context_line":"            self.driver.delete_consistencygroup(self.ctx,\r"},{"line_number":131,"context_line":"                                                self.consistency_group,\r"},{"line_number":132,"context_line":"                                                self.volumes)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_86047bc0","line":129,"range":{"start_line":129,"start_character":53,"end_line":129,"end_character":54},"in_reply_to":"ba63e191_535ad584","updated":"2016-01-19 19:55:44.000000000","message":"Done","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":137,"context_line":"\r"},{"line_number":138,"context_line":"    def test_create_consistencygroup_from_cg(self):\r"},{"line_number":139,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)\r"},{"line_number":140,"context_line":"        result_model_update, result_volumes_model_update \u003d \\\r"},{"line_number":141,"context_line":"            self.driver.create_consistencygroup_from_src(\r"},{"line_number":142,"context_line":"                self.ctx, self.consistency_group, self.volumes2,\r"},{"line_number":143,"context_line":"                source_cg\u003dself.consistency_group, source_vols\u003dself.volumes)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_f34bc9ae","line":140,"range":{"start_line":140,"start_character":59,"end_line":140,"end_character":60},"updated":"2016-01-19 15:14:49.000000000","message":"Should use \u0027()\u0027 for line continuation instead of \u0027\\\u0027 if possible.","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"1614391115ef5e7e663c5f3358685f6b26fa97d5","unresolved":false,"context_lines":[{"line_number":137,"context_line":"\r"},{"line_number":138,"context_line":"    def test_create_consistencygroup_from_cg(self):\r"},{"line_number":139,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)\r"},{"line_number":140,"context_line":"        result_model_update, result_volumes_model_update \u003d \\\r"},{"line_number":141,"context_line":"            self.driver.create_consistencygroup_from_src(\r"},{"line_number":142,"context_line":"                self.ctx, self.consistency_group, self.volumes2,\r"},{"line_number":143,"context_line":"                source_cg\u003dself.consistency_group, source_vols\u003dself.volumes)\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_6630679f","line":140,"range":{"start_line":140,"start_character":59,"end_line":140,"end_character":60},"in_reply_to":"ba63e191_f34bc9ae","updated":"2016-01-19 19:55:44.000000000","message":"Done","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            self.driver.create_consistencygroup_from_src(\r"},{"line_number":142,"context_line":"                self.ctx, self.consistency_group, self.volumes2,\r"},{"line_number":143,"context_line":"                source_cg\u003dself.consistency_group, source_vols\u003dself.volumes)\r"},{"line_number":144,"context_line":"        self.assertEqual(result_model_update[\u0027status\u0027], \u0027available\u0027)\r"},{"line_number":145,"context_line":"        get_pid \u003d lambda snapshot: snapshot[\u0027provider_id\u0027]\r"},{"line_number":146,"context_line":"        volume_provider_list \u003d map(get_pid, result_volumes_model_update)\r"},{"line_number":147,"context_line":"        self.assertListEqual(volume_provider_list, [\u0027sid1\u0027, \u0027sid2\u0027])\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_f6ee57eb","line":144,"range":{"start_line":144,"start_character":8,"end_line":144,"end_character":68},"updated":"2016-01-19 15:14:49.000000000","message":"The order for assertEqual should be (expected, result).","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"1614391115ef5e7e663c5f3358685f6b26fa97d5","unresolved":false,"context_lines":[{"line_number":141,"context_line":"            self.driver.create_consistencygroup_from_src(\r"},{"line_number":142,"context_line":"                self.ctx, self.consistency_group, self.volumes2,\r"},{"line_number":143,"context_line":"                source_cg\u003dself.consistency_group, source_vols\u003dself.volumes)\r"},{"line_number":144,"context_line":"        self.assertEqual(result_model_update[\u0027status\u0027], \u0027available\u0027)\r"},{"line_number":145,"context_line":"        get_pid \u003d lambda snapshot: snapshot[\u0027provider_id\u0027]\r"},{"line_number":146,"context_line":"        volume_provider_list \u003d map(get_pid, result_volumes_model_update)\r"},{"line_number":147,"context_line":"        self.assertListEqual(volume_provider_list, [\u0027sid1\u0027, \u0027sid2\u0027])\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_06272b65","line":144,"range":{"start_line":144,"start_character":8,"end_line":144,"end_character":68},"in_reply_to":"ba63e191_f6ee57eb","updated":"2016-01-19 19:55:44.000000000","message":"Done","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        self.snapshots[0][\u0027provider_id\u0027] \u003d \u0027pid_1\u0027\r"},{"line_number":151,"context_line":"        self.snapshots[1][\u0027provider_id\u0027] \u003d \u0027pid_2\u0027\r"},{"line_number":152,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)\r"},{"line_number":153,"context_line":"        result_model_update, result_volumes_model_update \u003d \\\r"},{"line_number":154,"context_line":"            self.driver.create_consistencygroup_from_src(\r"},{"line_number":155,"context_line":"                self.ctx, self.consistency_group, self.volumes2,\r"},{"line_number":156,"context_line":"                cgsnapshot\u003dself._fake_cgsnapshot(),\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_93c7ed11","line":153,"range":{"start_line":153,"start_character":59,"end_line":153,"end_character":60},"updated":"2016-01-19 15:14:49.000000000","message":"Should use \u0027()\u0027 for line continuation instead of \u0027\\\u0027 if possible.","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"1614391115ef5e7e663c5f3358685f6b26fa97d5","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        self.snapshots[0][\u0027provider_id\u0027] \u003d \u0027pid_1\u0027\r"},{"line_number":151,"context_line":"        self.snapshots[1][\u0027provider_id\u0027] \u003d \u0027pid_2\u0027\r"},{"line_number":152,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)\r"},{"line_number":153,"context_line":"        result_model_update, result_volumes_model_update \u003d \\\r"},{"line_number":154,"context_line":"            self.driver.create_consistencygroup_from_src(\r"},{"line_number":155,"context_line":"                self.ctx, self.consistency_group, self.volumes2,\r"},{"line_number":156,"context_line":"                cgsnapshot\u003dself._fake_cgsnapshot(),\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_262a6f2d","line":153,"range":{"start_line":153,"start_character":59,"end_line":153,"end_character":60},"in_reply_to":"ba63e191_93c7ed11","updated":"2016-01-19 19:55:44.000000000","message":"Done","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                self.ctx, self.consistency_group, self.volumes2,\r"},{"line_number":156,"context_line":"                cgsnapshot\u003dself._fake_cgsnapshot(),\r"},{"line_number":157,"context_line":"                snapshots\u003dself.snapshots)\r"},{"line_number":158,"context_line":"        self.assertEqual(result_model_update[\u0027status\u0027], \u0027available\u0027)\r"},{"line_number":159,"context_line":"        get_pid \u003d lambda snapshot: snapshot[\u0027provider_id\u0027]\r"},{"line_number":160,"context_line":"        volume_provider_list \u003d map(get_pid, result_volumes_model_update)\r"},{"line_number":161,"context_line":"        self.assertListEqual(volume_provider_list, [\u0027sid1\u0027, \u0027sid2\u0027])\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_76b027f5","line":158,"range":{"start_line":158,"start_character":8,"end_line":158,"end_character":68},"updated":"2016-01-19 15:14:49.000000000","message":"The order for assertEqual should be (expected, result).","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"1614391115ef5e7e663c5f3358685f6b26fa97d5","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                self.ctx, self.consistency_group, self.volumes2,\r"},{"line_number":156,"context_line":"                cgsnapshot\u003dself._fake_cgsnapshot(),\r"},{"line_number":157,"context_line":"                snapshots\u003dself.snapshots)\r"},{"line_number":158,"context_line":"        self.assertEqual(result_model_update[\u0027status\u0027], \u0027available\u0027)\r"},{"line_number":159,"context_line":"        get_pid \u003d lambda snapshot: snapshot[\u0027provider_id\u0027]\r"},{"line_number":160,"context_line":"        volume_provider_list \u003d map(get_pid, result_volumes_model_update)\r"},{"line_number":161,"context_line":"        self.assertListEqual(volume_provider_list, [\u0027sid1\u0027, \u0027sid2\u0027])\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_a6165fef","line":158,"range":{"start_line":158,"start_character":8,"end_line":158,"end_character":68},"in_reply_to":"ba63e191_76b027f5","updated":"2016-01-19 19:55:44.000000000","message":"Done","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        self.assertEqual(result_model_update[\u0027status\u0027], \u0027available\u0027)\r"},{"line_number":159,"context_line":"        get_pid \u003d lambda snapshot: snapshot[\u0027provider_id\u0027]\r"},{"line_number":160,"context_line":"        volume_provider_list \u003d map(get_pid, result_volumes_model_update)\r"},{"line_number":161,"context_line":"        self.assertListEqual(volume_provider_list, [\u0027sid1\u0027, \u0027sid2\u0027])\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_96883b24","line":161,"range":{"start_line":161,"start_character":8,"end_line":161,"end_character":68},"updated":"2016-01-19 15:14:49.000000000","message":"The order for assertEqual should be (expected, result).","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"1614391115ef5e7e663c5f3358685f6b26fa97d5","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        self.assertEqual(result_model_update[\u0027status\u0027], \u0027available\u0027)\r"},{"line_number":159,"context_line":"        get_pid \u003d lambda snapshot: snapshot[\u0027provider_id\u0027]\r"},{"line_number":160,"context_line":"        volume_provider_list \u003d map(get_pid, result_volumes_model_update)\r"},{"line_number":161,"context_line":"        self.assertListEqual(volume_provider_list, [\u0027sid1\u0027, \u0027sid2\u0027])\r"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_06de4b3f","line":161,"range":{"start_line":161,"start_character":8,"end_line":161,"end_character":68},"in_reply_to":"ba63e191_96883b24","updated":"2016-01-19 19:55:44.000000000","message":"Done","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"df6bdbb6687714adb5b1b2fdd09b92a199526e7c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import json\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"class TestConsistencyGroups(scaleio.TestScaleIODriver):\r"},{"line_number":27,"context_line":"    \"\"\"Test cases for ``ScaleIODriver consistency groups support``\"\"\"\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"    def setUp(self):\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_8147841c","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":55},"updated":"2016-01-21 15:46:50.000000000","message":"I don\u0027t see any tests for cgsnapshots. Are those going to be added?","commit_id":"0b64d9fef4917079462362c4168dd9d3b5e90814"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"f05017101cf3e497ca0a263cd554e521c04be130","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import json\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"class TestConsistencyGroups(scaleio.TestScaleIODriver):\r"},{"line_number":27,"context_line":"    \"\"\"Test cases for ``ScaleIODriver consistency groups support``\"\"\"\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"    def setUp(self):\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_c1a25c4b","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":55},"in_reply_to":"9a68dd71_8147841c","updated":"2016-01-21 15:55:59.000000000","message":"They will be added in the future, is that necessary to add them right away for the patch? \u003d","commit_id":"0b64d9fef4917079462362c4168dd9d3b5e90814"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"209336b0b66e2b3f3db4447d50bdc9a10d2cde90","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import json\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"class TestConsistencyGroups(scaleio.TestScaleIODriver):\r"},{"line_number":27,"context_line":"    \"\"\"Test cases for ``ScaleIODriver consistency groups support``\"\"\"\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"    def setUp(self):\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_e4052ec2","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":55},"in_reply_to":"9a68dd71_c1a25c4b","updated":"2016-01-21 16:00:00.000000000","message":"Usually unit tests are added at the same time to test functionality of the code being implemented.","commit_id":"0b64d9fef4917079462362c4168dd9d3b5e90814"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"fb6e04f89fed93ceaabd82b852d60330d13ad09e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import json\r"},{"line_number":24,"context_line":"\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"class TestConsistencyGroups(scaleio.TestScaleIODriver):\r"},{"line_number":27,"context_line":"    \"\"\"Test cases for ``ScaleIODriver consistency groups support``\"\"\"\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"    def setUp(self):\r"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_05f4ea83","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":55},"in_reply_to":"9a68dd71_e4052ec2","updated":"2016-01-21 23:19:21.000000000","message":"Done","commit_id":"0b64d9fef4917079462362c4168dd9d3b5e90814"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1f29cca5d9543a4608cfab57386625153a41d4ac","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 - 2015 EMC Corporation.\r"},{"line_number":2,"context_line":"# All Rights Reserved.\r"},{"line_number":3,"context_line":"#\r"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a5de9d1_7d05b411","line":1,"updated":"2016-02-01 22:38:04.000000000","message":"2016","commit_id":"19bb5877222dbe992767330593138cf7f729ece3"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"f7eecb156f62db2d2429b88542324b341a4d9f31","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 - 2015 EMC Corporation.\r"},{"line_number":2,"context_line":"# All Rights Reserved.\r"},{"line_number":3,"context_line":"#\r"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a5de9d1_d2e031fd","line":1,"in_reply_to":"7a5de9d1_7d05b411","updated":"2016-02-02 13:26:43.000000000","message":"Done","commit_id":"19bb5877222dbe992767330593138cf7f729ece3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"46c6817c676662f3de63f30c1156c592c14cc649","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from cinder.tests.unit.volume.drivers.emc import scaleio\r"},{"line_number":22,"context_line":"from cinder.tests.unit.volume.drivers.emc.scaleio import mocks\r"},{"line_number":23,"context_line":"import json\r"},{"line_number":24,"context_line":"import mock\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"\r"},{"line_number":27,"context_line":"class TestConsistencyGroups(scaleio.TestScaleIODriver):\r"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a5ae5dd_627854f3","line":24,"updated":"2016-02-04 04:17:44.000000000","message":"Import order is not right.  See guidelines here:\n\nhttp://docs.openstack.org/developer/hacking/#imports\n\nShould be like this:\n\nimport json\n\u003cempty line\u003e\nimport mock\n\u003cempty line\u003e\nfrom cinder import context\nfrom cinder…...","commit_id":"edd078ee4b9e94e5b959cf36becc91c3a1883669"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"5c24fd538a22ebc7a366df6c70971381862ac024","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder.tests.unit.volume.drivers.emc.scaleio import mocks\r"},{"line_number":26,"context_line":"\r"},{"line_number":27,"context_line":"\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"class TestConsistencyGroups(scaleio.TestScaleIODriver):\r"},{"line_number":30,"context_line":"    \"\"\"Test cases for ``ScaleIODriver consistency groups support``\"\"\"\r"},{"line_number":31,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a5ae5dd_6928fd86","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":0},"updated":"2016-02-05 03:20:29.000000000","message":"Try \"tox -e pep8\" in your environment, you will easily find that here should be 2 lines.","commit_id":"24bad79004bf79440903754dd49000292e492d3b"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"b2d124635c17e5512f083d02865777e9aca3d0f1","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from cinder.tests.unit.volume.drivers.emc.scaleio import mocks\r"},{"line_number":26,"context_line":"\r"},{"line_number":27,"context_line":"\r"},{"line_number":28,"context_line":"\r"},{"line_number":29,"context_line":"class TestConsistencyGroups(scaleio.TestScaleIODriver):\r"},{"line_number":30,"context_line":"    \"\"\"Test cases for ``ScaleIODriver consistency groups support``\"\"\"\r"},{"line_number":31,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a5ae5dd_e9efffe6","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":0},"in_reply_to":"5a5ae5dd_6928fd86","updated":"2016-02-05 10:35:58.000000000","message":"Done","commit_id":"24bad79004bf79440903754dd49000292e492d3b"}],"cinder/tests/unit/volume/drivers/emc/scaleio/test_delete_snapshot.py":[{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"df6bdbb6687714adb5b1b2fdd09b92a199526e7c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)"},{"line_number":88,"context_line":"        self.driver.delete_snapshot(self.snapshot)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_delete_invalid_snapshot(self):"},{"line_number":91,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)"},{"line_number":92,"context_line":"        self.driver.delete_snapshot(self.snapshot)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_delete_snapshot(self):"},{"line_number":95,"context_line":"        \"\"\"Setting the unmap volume before delete flag for tests \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_a120889c","line":92,"range":{"start_line":90,"start_character":4,"end_line":92,"end_character":50},"updated":"2016-01-21 15:46:50.000000000","message":"Why was this changed? Test seems to be testing an Invalid snapshot, right?","commit_id":"0b64d9fef4917079462362c4168dd9d3b5e90814"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"209336b0b66e2b3f3db4447d50bdc9a10d2cde90","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)"},{"line_number":88,"context_line":"        self.driver.delete_snapshot(self.snapshot)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_delete_invalid_snapshot(self):"},{"line_number":91,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)"},{"line_number":92,"context_line":"        self.driver.delete_snapshot(self.snapshot)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_delete_snapshot(self):"},{"line_number":95,"context_line":"        \"\"\"Setting the unmap volume before delete flag for tests \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_0430829d","line":92,"range":{"start_line":90,"start_character":4,"end_line":92,"end_character":50},"in_reply_to":"9a68dd71_610db03d","updated":"2016-01-21 16:00:00.000000000","message":"Thanks","commit_id":"0b64d9fef4917079462362c4168dd9d3b5e90814"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"f05017101cf3e497ca0a263cd554e521c04be130","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)"},{"line_number":88,"context_line":"        self.driver.delete_snapshot(self.snapshot)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_delete_invalid_snapshot(self):"},{"line_number":91,"context_line":"        self.set_https_response_mode(self.RESPONSE_MODE.Valid)"},{"line_number":92,"context_line":"        self.driver.delete_snapshot(self.snapshot)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def test_delete_snapshot(self):"},{"line_number":95,"context_line":"        \"\"\"Setting the unmap volume before delete flag for tests \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a68dd71_610db03d","line":92,"range":{"start_line":90,"start_character":4,"end_line":92,"end_character":50},"in_reply_to":"9a68dd71_a120889c","updated":"2016-01-21 15:55:59.000000000","message":"Because we remove the \u0027sio_force_delete\u0027 flag in a previous patch (QoS one) so that volumes that are not existed on ScaleIO but do exists on OpenStack will be deleted anyway.\nThat\u0027s why if the volume is \"invalid\" it is still being deleted.","commit_id":"0b64d9fef4917079462362c4168dd9d3b5e90814"}],"cinder/volume/drivers/emc/scaleio.py":[{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"994577c6b8994ee727da37ff216562d3c700cdbf","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"        if not self.storage_pools:"},{"line_number":211,"context_line":"            msg \u003d \\"},{"line_number":212,"context_line":"                _(\"Must specify storage pools. Option: sio_storage_pools.\")"},{"line_number":213,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"ba63e191_d3db251a","line":211,"range":{"start_line":211,"start_character":18,"end_line":211,"end_character":19},"updated":"2016-01-19 15:14:49.000000000","message":"Should use \u0027()\u0027 for line continuation instead of \u0027\\\u0027 if possible.","commit_id":"12643c38614306cb5b7498f7f73d37e98d7743b6"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"b601d2998971198141e81ac7ec328431003374f9","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"        LOG.info(_LI(\"Deleting Consistency Group\"))"},{"line_number":1128,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027deleted\u0027}"},{"line_number":1129,"context_line":"        error_statuses \u003d {\u0027error\u0027, \u0027error_deleting\u0027}"},{"line_number":1130,"context_line":"        for volume in volumes:"},{"line_number":1131,"context_line":"            try:"},{"line_number":1132,"context_line":"                self._delete_volume(volume[\u0027provider_id\u0027])"},{"line_number":1133,"context_line":"                volume[\u0027status\u0027] \u003d \u0027deleted\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_ece45e0e","line":1130,"range":{"start_line":1130,"start_character":8,"end_line":1130,"end_character":30},"updated":"2016-01-20 23:34:29.000000000","message":"please create a volume_model_updates list instead of modifying the volume object itself. Each entry should look like:\n\n{\"id\": volume.id, \"status\": \"available|error\"}","commit_id":"c0cfe6c058b05a575f2915313f31f84786d709e4"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"f194bd2f61549e69d08f92c4a3d3db62b4e7e9de","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"        LOG.info(_LI(\"Deleting Consistency Group\"))"},{"line_number":1128,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027deleted\u0027}"},{"line_number":1129,"context_line":"        error_statuses \u003d {\u0027error\u0027, \u0027error_deleting\u0027}"},{"line_number":1130,"context_line":"        for volume in volumes:"},{"line_number":1131,"context_line":"            try:"},{"line_number":1132,"context_line":"                self._delete_volume(volume[\u0027provider_id\u0027])"},{"line_number":1133,"context_line":"                volume[\u0027status\u0027] \u003d \u0027deleted\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_be3c3a94","line":1130,"range":{"start_line":1130,"start_character":8,"end_line":1130,"end_character":30},"in_reply_to":"9a68dd71_ece45e0e","updated":"2016-01-21 10:02:21.000000000","message":"Done","commit_id":"c0cfe6c058b05a575f2915313f31f84786d709e4"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"b601d2998971198141e81ac7ec328431003374f9","unresolved":false,"context_lines":[{"line_number":1155,"context_line":"            LOG.error(msg)"},{"line_number":1156,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1157,"context_line":""},{"line_number":1158,"context_line":"        for snapshot, scaleio_id in zip(snapshots, response[\u0027volumeIdList\u0027]):"},{"line_number":1159,"context_line":"            snapshot[\u0027status\u0027] \u003d \u0027available\u0027"},{"line_number":1160,"context_line":"            snapshot[\u0027provider_id\u0027] \u003d scaleio_id"},{"line_number":1161,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_8cf122d0","line":1158,"range":{"start_line":1158,"start_character":7,"end_line":1158,"end_character":77},"updated":"2016-01-20 23:34:29.000000000","message":"Same, please do not modify the snapshot objects directly. Create a snapshot_model_update.","commit_id":"c0cfe6c058b05a575f2915313f31f84786d709e4"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"f194bd2f61549e69d08f92c4a3d3db62b4e7e9de","unresolved":false,"context_lines":[{"line_number":1155,"context_line":"            LOG.error(msg)"},{"line_number":1156,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":1157,"context_line":""},{"line_number":1158,"context_line":"        for snapshot, scaleio_id in zip(snapshots, response[\u0027volumeIdList\u0027]):"},{"line_number":1159,"context_line":"            snapshot[\u0027status\u0027] \u003d \u0027available\u0027"},{"line_number":1160,"context_line":"            snapshot[\u0027provider_id\u0027] \u003d scaleio_id"},{"line_number":1161,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027available\u0027}"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_7e81e249","line":1158,"range":{"start_line":1158,"start_character":7,"end_line":1158,"end_character":77},"in_reply_to":"9a68dd71_8cf122d0","updated":"2016-01-21 10:02:21.000000000","message":"Done","commit_id":"c0cfe6c058b05a575f2915313f31f84786d709e4"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"b601d2998971198141e81ac7ec328431003374f9","unresolved":false,"context_lines":[{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"    def delete_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":1165,"context_line":"        \"\"\"Deletes a cgsnapshot.\"\"\""},{"line_number":1166,"context_line":"        error_statuses \u003d {\u0027error\u0027, \u0027error_deleting\u0027}"},{"line_number":1167,"context_line":"        model_update \u003d {\u0027status\u0027: cgsnapshot[\u0027status\u0027]}"},{"line_number":1168,"context_line":"        for snapshot in snapshots:"},{"line_number":1169,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_ac9c266a","line":1166,"range":{"start_line":1166,"start_character":8,"end_line":1166,"end_character":52},"updated":"2016-01-20 23:34:29.000000000","message":"This would probably be better as a list [\u0027error\u0027, \u0027error_deleting\u0027]","commit_id":"c0cfe6c058b05a575f2915313f31f84786d709e4"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"f194bd2f61549e69d08f92c4a3d3db62b4e7e9de","unresolved":false,"context_lines":[{"line_number":1163,"context_line":""},{"line_number":1164,"context_line":"    def delete_cgsnapshot(self, context, cgsnapshot, snapshots):"},{"line_number":1165,"context_line":"        \"\"\"Deletes a cgsnapshot.\"\"\""},{"line_number":1166,"context_line":"        error_statuses \u003d {\u0027error\u0027, \u0027error_deleting\u0027}"},{"line_number":1167,"context_line":"        model_update \u003d {\u0027status\u0027: cgsnapshot[\u0027status\u0027]}"},{"line_number":1168,"context_line":"        for snapshot in snapshots:"},{"line_number":1169,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_8ab575ce","line":1166,"range":{"start_line":1166,"start_character":8,"end_line":1166,"end_character":52},"in_reply_to":"9a68dd71_ac9c266a","updated":"2016-01-21 10:02:21.000000000","message":"Done","commit_id":"c0cfe6c058b05a575f2915313f31f84786d709e4"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"b601d2998971198141e81ac7ec328431003374f9","unresolved":false,"context_lines":[{"line_number":1165,"context_line":"        \"\"\"Deletes a cgsnapshot.\"\"\""},{"line_number":1166,"context_line":"        error_statuses \u003d {\u0027error\u0027, \u0027error_deleting\u0027}"},{"line_number":1167,"context_line":"        model_update \u003d {\u0027status\u0027: cgsnapshot[\u0027status\u0027]}"},{"line_number":1168,"context_line":"        for snapshot in snapshots:"},{"line_number":1169,"context_line":"            try:"},{"line_number":1170,"context_line":"                self._delete_volume(snapshot[\u0027provider_id\u0027])"},{"line_number":1171,"context_line":"                snapshot[\u0027status\u0027] \u003d \u0027deleted\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_2cb916ea","line":1168,"range":{"start_line":1168,"start_character":8,"end_line":1168,"end_character":34},"updated":"2016-01-20 23:34:29.000000000","message":"same. Create a snapshot_model_update.","commit_id":"c0cfe6c058b05a575f2915313f31f84786d709e4"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"f194bd2f61549e69d08f92c4a3d3db62b4e7e9de","unresolved":false,"context_lines":[{"line_number":1165,"context_line":"        \"\"\"Deletes a cgsnapshot.\"\"\""},{"line_number":1166,"context_line":"        error_statuses \u003d {\u0027error\u0027, \u0027error_deleting\u0027}"},{"line_number":1167,"context_line":"        model_update \u003d {\u0027status\u0027: cgsnapshot[\u0027status\u0027]}"},{"line_number":1168,"context_line":"        for snapshot in snapshots:"},{"line_number":1169,"context_line":"            try:"},{"line_number":1170,"context_line":"                self._delete_volume(snapshot[\u0027provider_id\u0027])"},{"line_number":1171,"context_line":"                snapshot[\u0027status\u0027] \u003d \u0027deleted\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_de348edf","line":1168,"range":{"start_line":1168,"start_character":8,"end_line":1168,"end_character":34},"in_reply_to":"9a68dd71_2cb916ea","updated":"2016-01-21 10:02:21.000000000","message":"Done","commit_id":"c0cfe6c058b05a575f2915313f31f84786d709e4"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"b601d2998971198141e81ac7ec328431003374f9","unresolved":false,"context_lines":[{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":1211,"context_line":"                                add_volumes\u003dNone, remove_volumes\u003dNone):"},{"line_number":1212,"context_line":"        return None, None, None"},{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"    def _snapshot_volume_group(self, snapshotDefs):"},{"line_number":1215,"context_line":"        LOG.info(_LI(\"ScaleIO snapshot group of volumes\"))"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_4c8faa23","line":1212,"range":{"start_line":1212,"start_character":8,"end_line":1212,"end_character":31},"updated":"2016-01-20 23:34:29.000000000","message":"Can you add a comment here explaining why returning None, None, None works? I am assuming it is because the volume grouping is not handled by your backend? just Cinder?","commit_id":"c0cfe6c058b05a575f2915313f31f84786d709e4"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"f194bd2f61549e69d08f92c4a3d3db62b4e7e9de","unresolved":false,"context_lines":[{"line_number":1209,"context_line":""},{"line_number":1210,"context_line":"    def update_consistencygroup(self, context, group,"},{"line_number":1211,"context_line":"                                add_volumes\u003dNone, remove_volumes\u003dNone):"},{"line_number":1212,"context_line":"        return None, None, None"},{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"    def _snapshot_volume_group(self, snapshotDefs):"},{"line_number":1215,"context_line":"        LOG.info(_LI(\"ScaleIO snapshot group of volumes\"))"}],"source_content_type":"text/x-python","patch_set":8,"id":"9a68dd71_2a032944","line":1212,"range":{"start_line":1212,"start_character":8,"end_line":1212,"end_character":31},"in_reply_to":"9a68dd71_4c8faa23","updated":"2016-01-21 10:02:21.000000000","message":"Done","commit_id":"c0cfe6c058b05a575f2915313f31f84786d709e4"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"d98f77f9f1cc84639ef7368f2015c0eb33e9d9c5","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"        else:"},{"line_number":1203,"context_line":"            snapshotDefs \u003d map(get_scaleio_snapshot_params, source_vols,"},{"line_number":1204,"context_line":"                               volumes)"},{"line_number":1205,"context_line":"        r, response \u003d self._snapshot_volume_group(list(snapshotDefs))"},{"line_number":1206,"context_line":"        LOG.info(_LI(\"Snapshot volume response: %s.\"), response)"},{"line_number":1207,"context_line":"        if r.status_code !\u003d OK_STATUS_CODE and \"errorCode\" in response:"},{"line_number":1208,"context_line":"            msg \u003d (_(\"Failed creating snapshot for group: \""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_a0e14c00","line":1205,"range":{"start_line":1205,"start_character":8,"end_line":1205,"end_character":69},"updated":"2016-01-21 23:39:56.000000000","message":"Maybe I am missing something here, but because of the name and because it is also used in create_cgsnapshot, does this create snapshots or actual volumes? \n\ncreate_consistencygroup_from_src should take a cgsnapshot or a cg and turn it into a new cg. With that, a new set of (independent) volumes should be created. Is that this does?","commit_id":"5b3cb8e7431c72ad64d7764a8243486fcc0e4729"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"7b6f6a5a2d92b9ebaf15f3f300337af10f0c32a1","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"        else:"},{"line_number":1203,"context_line":"            snapshotDefs \u003d map(get_scaleio_snapshot_params, source_vols,"},{"line_number":1204,"context_line":"                               volumes)"},{"line_number":1205,"context_line":"        r, response \u003d self._snapshot_volume_group(list(snapshotDefs))"},{"line_number":1206,"context_line":"        LOG.info(_LI(\"Snapshot volume response: %s.\"), response)"},{"line_number":1207,"context_line":"        if r.status_code !\u003d OK_STATUS_CODE and \"errorCode\" in response:"},{"line_number":1208,"context_line":"            msg \u003d (_(\"Failed creating snapshot for group: \""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_f4edc5ef","line":1205,"range":{"start_line":1205,"start_character":8,"end_line":1205,"end_character":69},"in_reply_to":"9a68dd71_a0e14c00","updated":"2016-01-22 00:05:07.000000000","message":"I understand your confusion, it is because of the fact that the notion of \"snapshot\" and a \"volume\" is basically the same in ScaleIO besides some metadata, therfore creating new volumes is also made by calling \"snapshot_volume_groups()\".\n\nIt does take a cg or a cgsnapshot and turn it into a new cg with new and independent set of volumes, like you described.","commit_id":"5b3cb8e7431c72ad64d7764a8243486fcc0e4729"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"b6fdd650951e5c113ac233805f553c69225c5a8b","unresolved":false,"context_lines":[{"line_number":1202,"context_line":"        else:"},{"line_number":1203,"context_line":"            snapshotDefs \u003d map(get_scaleio_snapshot_params, source_vols,"},{"line_number":1204,"context_line":"                               volumes)"},{"line_number":1205,"context_line":"        r, response \u003d self._snapshot_volume_group(list(snapshotDefs))"},{"line_number":1206,"context_line":"        LOG.info(_LI(\"Snapshot volume response: %s.\"), response)"},{"line_number":1207,"context_line":"        if r.status_code !\u003d OK_STATUS_CODE and \"errorCode\" in response:"},{"line_number":1208,"context_line":"            msg \u003d (_(\"Failed creating snapshot for group: \""}],"source_content_type":"text/x-python","patch_set":11,"id":"9a68dd71_d421a1fc","line":1205,"range":{"start_line":1205,"start_character":8,"end_line":1205,"end_character":69},"in_reply_to":"9a68dd71_f4edc5ef","updated":"2016-01-22 00:12:01.000000000","message":"Great, thanks for the explanation. Makes sense.","commit_id":"5b3cb8e7431c72ad64d7764a8243486fcc0e4729"},{"author":{"_account_id":16793,"name":"Liucheng Jiang","email":"jiangliucheng@huawei.com","username":"Jiangliucheng"},"change_message_id":"15dc5f0a21c0cad2c5967fbde8ff518470909411","unresolved":false,"context_lines":[{"line_number":1120,"context_line":"        volumes_model_update \u003d []"},{"line_number":1121,"context_line":"        for volume in volumes:"},{"line_number":1122,"context_line":"            try:"},{"line_number":1123,"context_line":"                self._delete_volume(volume[\u0027provider_id\u0027])"},{"line_number":1124,"context_line":"                update_item \u003d {\u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":1125,"context_line":"                               \u0027status\u0027: \u0027deleted\u0027}"},{"line_number":1126,"context_line":"                volumes_model_update.append(update_item)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a5de9d1_a3cd9486","line":1123,"range":{"start_line":1123,"start_character":16,"end_line":1123,"end_character":58},"updated":"2016-01-30 02:02:33.000000000","message":"When delete cg, volume should be delete too? I mean, can\u0027t just remove volume from cg, but not delete volume really.","commit_id":"19bb5877222dbe992767330593138cf7f729ece3"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"0719b7035c5cd92021d6eddd9b4edf66a0109dbc","unresolved":false,"context_lines":[{"line_number":1120,"context_line":"        volumes_model_update \u003d []"},{"line_number":1121,"context_line":"        for volume in volumes:"},{"line_number":1122,"context_line":"            try:"},{"line_number":1123,"context_line":"                self._delete_volume(volume[\u0027provider_id\u0027])"},{"line_number":1124,"context_line":"                update_item \u003d {\u0027id\u0027: volume[\u0027id\u0027],"},{"line_number":1125,"context_line":"                               \u0027status\u0027: \u0027deleted\u0027}"},{"line_number":1126,"context_line":"                volumes_model_update.append(update_item)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a5de9d1_0bc11654","line":1123,"range":{"start_line":1123,"start_character":16,"end_line":1123,"end_character":58},"in_reply_to":"7a5de9d1_a3cd9486","updated":"2016-01-30 20:52:59.000000000","message":"from http://docs.openstack.org/admin-guide-cloud/blockstorage-consistency-groups.html :\n\"A consistency group has to be deleted as a whole with all the volumes.\"\n\nYou can remove a volume from CG with update_cg...","commit_id":"19bb5877222dbe992767330593138cf7f729ece3"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"1f29cca5d9543a4608cfab57386625153a41d4ac","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"                snapshot_model_update.append(update_item)"},{"line_number":1176,"context_line":"                if model_update[\u0027status\u0027] not in error_statuses:"},{"line_number":1177,"context_line":"                    model_update[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":1178,"context_line":"                LOG.error(_LE(\"Failed to delete the volume %(vol)s of CG. \""},{"line_number":1179,"context_line":"                              \"Exception: %(exception)s.\"),"},{"line_number":1180,"context_line":"                          {\u0027vol\u0027: snapshot[\u0027name\u0027], \u0027exception\u0027: err})"},{"line_number":1181,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027deleted\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a5de9d1_8c1404e9","line":1178,"updated":"2016-02-01 22:38:04.000000000","message":"s/volume/snapshot\n\nCan you also print UUID of CG in the message?","commit_id":"19bb5877222dbe992767330593138cf7f729ece3"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"f7eecb156f62db2d2429b88542324b341a4d9f31","unresolved":false,"context_lines":[{"line_number":1175,"context_line":"                snapshot_model_update.append(update_item)"},{"line_number":1176,"context_line":"                if model_update[\u0027status\u0027] not in error_statuses:"},{"line_number":1177,"context_line":"                    model_update[\u0027status\u0027] \u003d \u0027error_deleting\u0027"},{"line_number":1178,"context_line":"                LOG.error(_LE(\"Failed to delete the volume %(vol)s of CG. \""},{"line_number":1179,"context_line":"                              \"Exception: %(exception)s.\"),"},{"line_number":1180,"context_line":"                          {\u0027vol\u0027: snapshot[\u0027name\u0027], \u0027exception\u0027: err})"},{"line_number":1181,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027deleted\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"7a5de9d1_d2b7d1f3","line":1178,"in_reply_to":"7a5de9d1_8c1404e9","updated":"2016-02-02 13:26:43.000000000","message":"Done","commit_id":"19bb5877222dbe992767330593138cf7f729ece3"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"3e3080a3f57c9b4e3e230fe271cbe3e6aa9040f5","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        return self._snapshot_volume(volume_id, snapname)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def delete_volume(self, volume):"},{"line_number":601,"context_line":"        \"\"\"Deletes a self.logicalG volume\"\"\""},{"line_number":602,"context_line":"        volume_id \u003d volume[\u0027provider_id\u0027]"},{"line_number":603,"context_line":"        self._delete_volume(volume_id)"},{"line_number":604,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a5de9d1_aa1c0b6b","line":601,"range":{"start_line":601,"start_character":21,"end_line":601,"end_character":34},"updated":"2016-02-02 19:12:43.000000000","message":"self.logicalG?","commit_id":"67a29649e941c0667abe7e696dafae52ef1a9b3d"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"61159630ffb260e3f3f2f7d5b52a7b3d4ccea950","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        return self._snapshot_volume(volume_id, snapname)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def delete_volume(self, volume):"},{"line_number":601,"context_line":"        \"\"\"Deletes a self.logicalG volume\"\"\""},{"line_number":602,"context_line":"        volume_id \u003d volume[\u0027provider_id\u0027]"},{"line_number":603,"context_line":"        self._delete_volume(volume_id)"},{"line_number":604,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"5a5ae5dd_a976593c","line":601,"range":{"start_line":601,"start_character":21,"end_line":601,"end_character":34},"in_reply_to":"7a5de9d1_aa1c0b6b","updated":"2016-02-03 13:35:11.000000000","message":"Done","commit_id":"67a29649e941c0667abe7e696dafae52ef1a9b3d"},{"author":{"_account_id":14865,"name":"Adriano Freires Rosso","email":"adriano.rosso@fit-tecnologia.org.br","username":"adriano_rosso"},"change_message_id":"3e3080a3f57c9b4e3e230fe271cbe3e6aa9040f5","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":1185,"context_line":"        return model_update, snapshot_model_update"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def create_consistencygroup_from_src(self, context, group, volumes,"},{"line_number":1188,"context_line":"                                         cgsnapshot\u003dNone, snapshots\u003dNone,"},{"line_number":1189,"context_line":"                                         source_cg\u003dNone, source_vols\u003dNone):"},{"line_number":1190,"context_line":"        get_scaleio_snapshot_params \u003d lambda src_volume, trg_volume: {"}],"source_content_type":"text/x-python","patch_set":13,"id":"7a5de9d1_4aa31750","line":1187,"range":{"start_line":1187,"start_character":8,"end_line":1187,"end_character":40},"updated":"2016-02-02 19:12:43.000000000","message":"Please, add docstrings: http://docs.openstack.org/developer/hacking/#docstrings","commit_id":"67a29649e941c0667abe7e696dafae52ef1a9b3d"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"61159630ffb260e3f3f2f7d5b52a7b3d4ccea950","unresolved":false,"context_lines":[{"line_number":1184,"context_line":"        model_update[\u0027status\u0027] \u003d \u0027deleted\u0027"},{"line_number":1185,"context_line":"        return model_update, snapshot_model_update"},{"line_number":1186,"context_line":""},{"line_number":1187,"context_line":"    def create_consistencygroup_from_src(self, context, group, volumes,"},{"line_number":1188,"context_line":"                                         cgsnapshot\u003dNone, snapshots\u003dNone,"},{"line_number":1189,"context_line":"                                         source_cg\u003dNone, source_vols\u003dNone):"},{"line_number":1190,"context_line":"        get_scaleio_snapshot_params \u003d lambda src_volume, trg_volume: {"}],"source_content_type":"text/x-python","patch_set":13,"id":"5a5ae5dd_c973954c","line":1187,"range":{"start_line":1187,"start_character":8,"end_line":1187,"end_character":40},"in_reply_to":"7a5de9d1_4aa31750","updated":"2016-02-03 13:35:11.000000000","message":"Done","commit_id":"67a29649e941c0667abe7e696dafae52ef1a9b3d"},{"author":{"_account_id":14274,"name":"XinXiaohui","email":"xiaohui.xin@intel.com","username":"XinXiaohui"},"change_message_id":"5c24fd538a22ebc7a366df6c70971381862ac024","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"        \"\"\""},{"line_number":1117,"context_line":"        LOG.info(_LI(\"Deleting Consistency Group\"))"},{"line_number":1118,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027deleted\u0027}"},{"line_number":1119,"context_line":"        error_statuses \u003d [\u0027error\u0027, \u0027error_deleting\u0027]"},{"line_number":1120,"context_line":"        volumes_model_update \u003d []"},{"line_number":1121,"context_line":"        for volume in volumes:"},{"line_number":1122,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a5ae5dd_5eeb7913","line":1119,"range":{"start_line":1119,"start_character":8,"end_line":1119,"end_character":22},"updated":"2016-02-05 03:20:29.000000000","message":"The name \"error_statuses\" is somehow curious.  Maybe error_status is better. But don\u0027t care if you really like it.","commit_id":"24bad79004bf79440903754dd49000292e492d3b"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"b2d124635c17e5512f083d02865777e9aca3d0f1","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"        \"\"\""},{"line_number":1117,"context_line":"        LOG.info(_LI(\"Deleting Consistency Group\"))"},{"line_number":1118,"context_line":"        model_update \u003d {\u0027status\u0027: \u0027deleted\u0027}"},{"line_number":1119,"context_line":"        error_statuses \u003d [\u0027error\u0027, \u0027error_deleting\u0027]"},{"line_number":1120,"context_line":"        volumes_model_update \u003d []"},{"line_number":1121,"context_line":"        for volume in volumes:"},{"line_number":1122,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a5ae5dd_a9a347b1","line":1119,"range":{"start_line":1119,"start_character":8,"end_line":1119,"end_character":22},"in_reply_to":"5a5ae5dd_5eeb7913","updated":"2016-02-05 10:35:58.000000000","message":"Thanks, But I prefer to keep it in plural form.","commit_id":"24bad79004bf79440903754dd49000292e492d3b"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b7c5f51fe075537dfd1c7bceb7a5215614ab3a95","unresolved":false,"context_lines":[{"line_number":1094,"context_line":"            )"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":1097,"context_line":"        \"\"\"Create a consistency group."},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"        ScaleIO won\u0027t create CG until cg-snapshot creation,"},{"line_number":1100,"context_line":"        db will maintain the volumes and CG relationship."}],"source_content_type":"text/x-python","patch_set":18,"id":"5a5ae5dd_ef3c83e2","line":1097,"range":{"start_line":1097,"start_character":11,"end_line":1097,"end_character":17},"updated":"2016-02-08 17:36:23.000000000","message":"Creates","commit_id":"d261fd7023df665a601fdf703e27ffcae1363fe8"},{"author":{"_account_id":18997,"name":"Matan Sabag","email":"matan.sabag@emc.com","username":"sabagm"},"change_message_id":"04ea592ac4d0396f214056a5285e0aac2dc39b61","unresolved":false,"context_lines":[{"line_number":1094,"context_line":"            )"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"    def create_consistencygroup(self, context, group):"},{"line_number":1097,"context_line":"        \"\"\"Create a consistency group."},{"line_number":1098,"context_line":""},{"line_number":1099,"context_line":"        ScaleIO won\u0027t create CG until cg-snapshot creation,"},{"line_number":1100,"context_line":"        db will maintain the volumes and CG relationship."}],"source_content_type":"text/x-python","patch_set":18,"id":"5a5ae5dd_6e0f2c37","line":1097,"range":{"start_line":1097,"start_character":11,"end_line":1097,"end_character":17},"in_reply_to":"5a5ae5dd_ef3c83e2","updated":"2016-02-08 21:04:09.000000000","message":"Done","commit_id":"d261fd7023df665a601fdf703e27ffcae1363fe8"}]}
