)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e3b6e535e982fd978784b7fe84902e0e7293fd7c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In creating snapshot, we use \"Best Effort\" retention policy."},{"line_number":10,"context_line":"In this policy snapshot may be deleted in case capacity is running"},{"line_number":11,"context_line":"out, causing an inconsistency between K2 state and cinder DB."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In order to avoid this inconsistency, add \"is_auto_deleteable\u003dFalse\""},{"line_number":14,"context_line":"to the snapshot properties, in order to avoid auto deleting"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bacf61ea_81225750","line":11,"range":{"start_line":11,"start_character":5,"end_line":11,"end_character":61},"updated":"2016-08-01 09:44:18.000000000","message":"We need a bug report for this patch.","commit_id":"43adaaa5a2b1d6dd29ae5c9d719b9512898e3c9e"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9aa01f4b61c314662ba9334062fc8556ccd09f0e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"to the snapshot properties, in order to avoid auto deleting"},{"line_number":15,"context_line":"the snapshot."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I70f770ce42ff56314b893a48ff7ed1a46a4ae55f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"bacf61ea_ed29bd9c","line":17,"updated":"2016-08-04 14:54:12.000000000","message":"-1: Closes-bug: #1608488\n\nIt was there in the previous patch, but missing in the latest.","commit_id":"fb9418dafa4022b8a96d0911dde61ea6449b24d2"}],"cinder/tests/unit/volume/drivers/test_kaminario.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9aa01f4b61c314662ba9334062fc8556ccd09f0e","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_create_snapshot(self):"},{"line_number":144,"context_line":"        \"\"\"Test create_snapshot.\"\"\""},{"line_number":145,"context_line":"        snap_res \u003d self.driver.client.new(\"snapshots\", short_name\u003d\u0027test\u0027,"},{"line_number":146,"context_line":"                                          source\u003d\u0027vg\u0027, retention_policy\u003d\u0027poli\u0027,"},{"line_number":147,"context_line":"                                          is_auto_deleteable\u003dFalse).save()"},{"line_number":148,"context_line":"        self.assertEqual(548, snap_res.snapshot.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_dfb0dc45","line":145,"updated":"2016-08-04 14:54:12.000000000","message":"Qn: driver.create_snapshot will call client.new and we should assert that call in the test. What are we doing here? I don\u0027t understand.","commit_id":"fb9418dafa4022b8a96d0911dde61ea6449b24d2"},{"author":{"_account_id":14732,"name":"lakshman","email":"Lakshmi.Narayana.ctr@kaminario.com","username":"lakshman"},"change_message_id":"40977205f04b7fe53185b8c2a0a15818fe400144","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_create_snapshot(self):"},{"line_number":144,"context_line":"        \"\"\"Test create_snapshot.\"\"\""},{"line_number":145,"context_line":"        snap_res \u003d self.driver.client.new(\"snapshots\", short_name\u003d\u0027test\u0027,"},{"line_number":146,"context_line":"                                          source\u003d\u0027vg\u0027, retention_policy\u003d\u0027poli\u0027,"},{"line_number":147,"context_line":"                                          is_auto_deleteable\u003dFalse).save()"},{"line_number":148,"context_line":"        self.assertEqual(548, snap_res.snapshot.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_5ada0f4c","line":145,"in_reply_to":"bacf61ea_7e039210","updated":"2016-08-05 10:21:31.000000000","message":"Done","commit_id":"fb9418dafa4022b8a96d0911dde61ea6449b24d2"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"45ef81dfbcfa5ed73b4369e5b9371edf79f88721","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_create_snapshot(self):"},{"line_number":144,"context_line":"        \"\"\"Test create_snapshot.\"\"\""},{"line_number":145,"context_line":"        snap_res \u003d self.driver.client.new(\"snapshots\", short_name\u003d\u0027test\u0027,"},{"line_number":146,"context_line":"                                          source\u003d\u0027vg\u0027, retention_policy\u003d\u0027poli\u0027,"},{"line_number":147,"context_line":"                                          is_auto_deleteable\u003dFalse).save()"},{"line_number":148,"context_line":"        self.assertEqual(548, snap_res.snapshot.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_7e039210","line":145,"in_reply_to":"bacf61ea_bb2cfc4a","updated":"2016-08-05 06:36:10.000000000","message":"I assume that this is the test for kaminario_common.create_snapshot. I also assume that, to create the snapshot in the backed, it invokes self.client.new(). So the unit test should call create_snapshot() and assert the expectations. One of the expectation here is that self.client.new() is called with appropriate arguments (to create the snapshot in the backend) which include is_auto_deleteable\u003dFalse.","commit_id":"fb9418dafa4022b8a96d0911dde61ea6449b24d2"},{"author":{"_account_id":14732,"name":"lakshman","email":"Lakshmi.Narayana.ctr@kaminario.com","username":"lakshman"},"change_message_id":"ff0db81a8f63a2d1a4826893b118ede102e52948","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_create_snapshot(self):"},{"line_number":144,"context_line":"        \"\"\"Test create_snapshot.\"\"\""},{"line_number":145,"context_line":"        snap_res \u003d self.driver.client.new(\"snapshots\", short_name\u003d\u0027test\u0027,"},{"line_number":146,"context_line":"                                          source\u003d\u0027vg\u0027, retention_policy\u003d\u0027poli\u0027,"},{"line_number":147,"context_line":"                                          is_auto_deleteable\u003dFalse).save()"},{"line_number":148,"context_line":"        self.assertEqual(548, snap_res.snapshot.id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bacf61ea_bb2cfc4a","line":145,"in_reply_to":"bacf61ea_dfb0dc45","updated":"2016-08-05 05:39:03.000000000","message":"We also don\u0027t understand exactly what you expecting from us.\nCan you give any reference or example to resolve that issue exactly?","commit_id":"fb9418dafa4022b8a96d0911dde61ea6449b24d2"}],"cinder/volume/drivers/kaminario/kaminario_common.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"e3b6e535e982fd978784b7fe84902e0e7293fd7c","unresolved":false,"context_lines":[{"line_number":318,"context_line":"            vg \u003d self.client.search(\"volume_groups\", name\u003dvg_name).hits[0]"},{"line_number":319,"context_line":"            LOG.debug(\"Creating a snapshot: %(snap)s from vg: %(vg)s\","},{"line_number":320,"context_line":"                      {\u0027snap\u0027: snap_name, \u0027vg\u0027: vg_name})"},{"line_number":321,"context_line":"            self.client.new(\"snapshots\", short_name\u003dsnap_name,"},{"line_number":322,"context_line":"                            source\u003dvg, retention_policy\u003drpolicy,"},{"line_number":323,"context_line":"                            is_auto_deleteable\u003dFalse).save()"},{"line_number":324,"context_line":"        except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_e1a7d3ba","line":321,"updated":"2016-08-01 09:44:18.000000000","message":"Please add a unit test to assert that this call is made with the auto delete flag set to False.","commit_id":"43adaaa5a2b1d6dd29ae5c9d719b9512898e3c9e"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"911a5f158869698a811fcb395f69c748e9d7c785","unresolved":false,"context_lines":[{"line_number":318,"context_line":"            vg \u003d self.client.search(\"volume_groups\", name\u003dvg_name).hits[0]"},{"line_number":319,"context_line":"            LOG.debug(\"Creating a snapshot: %(snap)s from vg: %(vg)s\","},{"line_number":320,"context_line":"                      {\u0027snap\u0027: snap_name, \u0027vg\u0027: vg_name})"},{"line_number":321,"context_line":"            self.client.new(\"snapshots\", short_name\u003dsnap_name,"},{"line_number":322,"context_line":"                            source\u003dvg, retention_policy\u003drpolicy,"},{"line_number":323,"context_line":"                            is_auto_deleteable\u003dFalse).save()"},{"line_number":324,"context_line":"        except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_fdc80857","line":321,"in_reply_to":"bacf61ea_e1a7d3ba","updated":"2016-08-01 13:56:39.000000000","message":"This flag is always False with current implementation so it is not worthful to assert it.","commit_id":"43adaaa5a2b1d6dd29ae5c9d719b9512898e3c9e"},{"author":{"_account_id":18462,"name":"Rahul U Nair","email":"rahulunair@gmail.com","username":"rahulunair"},"change_message_id":"e3d9433f45356e7df27fd970c86cfcd1e543b934","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                      {\u0027snap\u0027: snap_name, \u0027vg\u0027: vg_name})"},{"line_number":321,"context_line":"            self.client.new(\"snapshots\", short_name\u003dsnap_name,"},{"line_number":322,"context_line":"                            source\u003dvg, retention_policy\u003drpolicy,"},{"line_number":323,"context_line":"                            is_auto_deleteable\u003dFalse).save()"},{"line_number":324,"context_line":"        except Exception as ex:"},{"line_number":325,"context_line":"            LOG.exception(_LE(\"Creation of snapshot: %s failed.\"), snap_name)"},{"line_number":326,"context_line":"            raise exception.KaminarioCinderDriverException("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_d358cc8c","line":323,"range":{"start_line":323,"start_character":28,"end_line":323,"end_character":46},"updated":"2016-07-29 23:58:43.000000000","message":"typo: should be:  is_auto_deletable\nAlso, is there is an option to mitigate the situation where capacity is running out and auto_deletable is False?","commit_id":"43adaaa5a2b1d6dd29ae5c9d719b9512898e3c9e"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"4e846af426a00ebbe5d663e6a63d057c694003cf","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                      {\u0027snap\u0027: snap_name, \u0027vg\u0027: vg_name})"},{"line_number":321,"context_line":"            self.client.new(\"snapshots\", short_name\u003dsnap_name,"},{"line_number":322,"context_line":"                            source\u003dvg, retention_policy\u003drpolicy,"},{"line_number":323,"context_line":"                            is_auto_deleteable\u003dFalse).save()"},{"line_number":324,"context_line":"        except Exception as ex:"},{"line_number":325,"context_line":"            LOG.exception(_LE(\"Creation of snapshot: %s failed.\"), snap_name)"},{"line_number":326,"context_line":"            raise exception.KaminarioCinderDriverException("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_913809f1","line":323,"range":{"start_line":323,"start_character":28,"end_line":323,"end_character":46},"in_reply_to":"bacf61ea_d1b9e17a","updated":"2016-07-30 04:37:11.000000000","message":"There is no such option","commit_id":"43adaaa5a2b1d6dd29ae5c9d719b9512898e3c9e"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"3bab62dfda223bd9ec58bbb62c2c5b8d1909bf03","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                      {\u0027snap\u0027: snap_name, \u0027vg\u0027: vg_name})"},{"line_number":321,"context_line":"            self.client.new(\"snapshots\", short_name\u003dsnap_name,"},{"line_number":322,"context_line":"                            source\u003dvg, retention_policy\u003drpolicy,"},{"line_number":323,"context_line":"                            is_auto_deleteable\u003dFalse).save()"},{"line_number":324,"context_line":"        except Exception as ex:"},{"line_number":325,"context_line":"            LOG.exception(_LE(\"Creation of snapshot: %s failed.\"), snap_name)"},{"line_number":326,"context_line":"            raise exception.KaminarioCinderDriverException("}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_d1b9e17a","line":323,"range":{"start_line":323,"start_character":28,"end_line":323,"end_character":46},"in_reply_to":"bacf61ea_d358cc8c","updated":"2016-07-30 04:31:14.000000000","message":"Our K2 array support \"is_auto_deleteable\u003dFalse\" itself.\nSo it is not typo on cinder driver level.\n\n\n\nPreviously, In creating the snapshot, we use \"Best Effort\" retention policy.In this policy snapshot may be deleted in case capacity is running out, causing an inconsistency between K2 state and cinder DB.\n\nIn order to avoid this inconsistency, add \"is_auto_deleteable\u003dFalse\"\nto the snapshot properties, in order to avoid auto deleting\nthe snapshot.","commit_id":"43adaaa5a2b1d6dd29ae5c9d719b9512898e3c9e"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"b8e13ea30a590bc7e36846e4d9a8bd501b27a2d9","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                      {\u0027snap\u0027: snap_name, \u0027vg\u0027: vg_name})"},{"line_number":321,"context_line":"            self.client.new(\"snapshots\", short_name\u003dsnap_name,"},{"line_number":322,"context_line":"                            source\u003dvg, retention_policy\u003drpolicy,"},{"line_number":323,"context_line":"                            is_auto_deleteable\u003dFalse).save()"},{"line_number":324,"context_line":"        except Exception as ex:"},{"line_number":325,"context_line":"            LOG.exception(_LE(\"Creation of snapshot: %s failed.\"), snap_name)"},{"line_number":326,"context_line":"            raise exception.KaminarioCinderDriverException("}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_3db90016","line":323,"range":{"start_line":323,"start_character":58,"end_line":323,"end_character":60},"updated":"2016-08-01 14:07:00.000000000","message":"It is not worthful to assert for","commit_id":"96bea5f333ed19efb5064d6c38e75a6d60c3a670"},{"author":{"_account_id":14732,"name":"lakshman","email":"Lakshmi.Narayana.ctr@kaminario.com","username":"lakshman"},"change_message_id":"e1a205c991a1f386c5e780d83729ba3ee2da9571","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                      {\u0027snap\u0027: snap_name, \u0027vg\u0027: vg_name})"},{"line_number":321,"context_line":"            self.client.new(\"snapshots\", short_name\u003dsnap_name,"},{"line_number":322,"context_line":"                            source\u003dvg, retention_policy\u003drpolicy,"},{"line_number":323,"context_line":"                            is_auto_deleteable\u003dFalse).save()"},{"line_number":324,"context_line":"        except Exception as ex:"},{"line_number":325,"context_line":"            LOG.exception(_LE(\"Creation of snapshot: %s failed.\"), snap_name)"},{"line_number":326,"context_line":"            raise exception.KaminarioCinderDriverException("}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_d6f3c59d","line":323,"range":{"start_line":323,"start_character":58,"end_line":323,"end_character":60},"in_reply_to":"bacf61ea_087c3571","updated":"2016-08-04 04:20:03.000000000","message":"Done","commit_id":"96bea5f333ed19efb5064d6c38e75a6d60c3a670"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"fe1d258697ecdb48cbc351cda327f983dfd1412f","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                      {\u0027snap\u0027: snap_name, \u0027vg\u0027: vg_name})"},{"line_number":321,"context_line":"            self.client.new(\"snapshots\", short_name\u003dsnap_name,"},{"line_number":322,"context_line":"                            source\u003dvg, retention_policy\u003drpolicy,"},{"line_number":323,"context_line":"                            is_auto_deleteable\u003dFalse).save()"},{"line_number":324,"context_line":"        except Exception as ex:"},{"line_number":325,"context_line":"            LOG.exception(_LE(\"Creation of snapshot: %s failed.\"), snap_name)"},{"line_number":326,"context_line":"            raise exception.KaminarioCinderDriverException("}],"source_content_type":"text/x-python","patch_set":2,"id":"bacf61ea_087c3571","line":323,"range":{"start_line":323,"start_character":58,"end_line":323,"end_character":60},"in_reply_to":"bacf61ea_3db90016","updated":"2016-08-03 17:07:35.000000000","message":"IMO, this is a high priority bug. We don\u0027t want snapshots to get automatically deleted. This would have been caught if there was a unit which asserted for the client.new call with appropriate arguments.\n\nAlso, as per Cinder developer guidelines, we need a unit test for this.\n\nSee https://github.com/openstack/cinder/blob/master/HACKING.rst","commit_id":"96bea5f333ed19efb5064d6c38e75a6d60c3a670"}]}
