)]}'
{"cinderlib/persistence/dbms.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"62b55e6f792c07905371c83bb3ebb807e25c1f3b","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        migration.db_sync()"},{"line_number":75,"context_line":"        self._create_key_value_table()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        orm_obj \u003d self.db_instance.volume_type_get_by_name(objects.CONTEXT,"},{"line_number":78,"context_line":"                                                           \u0027__DEFAULT__\u0027)"},{"line_number":79,"context_line":"        cls \u003d cinder_objs.VolumeType"},{"line_number":80,"context_line":"        expected_attrs \u003d cls._get_expected_attrs(objects.CONTEXT)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_c7444a1c","line":77,"updated":"2019-08-26 10:54:59.000000000","message":"nit: I know we have to do it like this, but it would be great to have a comment here on why we have to manually create the VolumeType ourselves instead of doing `VolumeType.get_by_name` or something like that.","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"216e97ce659037290d366c3c39af264c0b2a55f7","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        migration.db_sync()"},{"line_number":75,"context_line":"        self._create_key_value_table()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        orm_obj \u003d self.db_instance.volume_type_get_by_name(objects.CONTEXT,"},{"line_number":78,"context_line":"                                                           \u0027__DEFAULT__\u0027)"},{"line_number":79,"context_line":"        cls \u003d cinder_objs.VolumeType"},{"line_number":80,"context_line":"        expected_attrs \u003d cls._get_expected_attrs(objects.CONTEXT)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_636a18ee","line":77,"in_reply_to":"7faddb67_c7444a1c","updated":"2019-08-27 09:49:13.000000000","message":"Done","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"62b55e6f792c07905371c83bb3ebb807e25c1f3b","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"            self.db.volume_type_create(objects.CONTEXT, vol_type_fields)"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            if extra_specs is not None:"},{"line_number":216,"context_line":"                self.db.volume_type_extra_specs_update_or_create("},{"line_number":217,"context_line":"                    objects.CONTEXT, volume.volume_type_id, extra_specs)"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_e7ef061b","line":215,"updated":"2019-08-26 10:54:59.000000000","message":"-1: This is dangerous, because changing the extra specs of any volume that was created without a type (and therefore has the default type) and then saving the volume would modify the volume type extra specs... Which may not be what the user wants..\n\nI think we should just add 1 if before L197:\n\n    if vol_type_id \u003d\u003d self.DEFAULT_TYPE.id:\n        if extra_specs or qos_specs:\n            raise cinder_exception.VolumeTypeUpdateFailed(id\u003dself.DEFAULT_TYPE.name)\n    elif vol_type_id:\n        vol_type_field \u003d ...\n\n\nWhich requires us to import cinder exceptions:\n\n    from cinder import exception as cinder_exception","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"216e97ce659037290d366c3c39af264c0b2a55f7","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"            self.db.volume_type_create(objects.CONTEXT, vol_type_fields)"},{"line_number":214,"context_line":"        else:"},{"line_number":215,"context_line":"            if extra_specs is not None:"},{"line_number":216,"context_line":"                self.db.volume_type_extra_specs_update_or_create("},{"line_number":217,"context_line":"                    objects.CONTEXT, volume.volume_type_id, extra_specs)"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_237420d0","line":215,"in_reply_to":"7faddb67_e7ef061b","updated":"2019-08-27 09:49:13.000000000","message":"Done","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"62b55e6f792c07905371c83bb3ebb807e25c1f3b","unresolved":false,"context_lines":[{"line_number":298,"context_line":"            LOG.debug(\u0027soft deleting volume %s\u0027, volume.id)"},{"line_number":299,"context_line":"            self.db.volume_destroy(objects.CONTEXT, volume.id)"},{"line_number":300,"context_line":"            if (volume.volume_type_id !\u003d self.DEFAULT_TYPE.id"},{"line_number":301,"context_line":"                    and volume.volume_type_id):"},{"line_number":302,"context_line":"                LOG.debug(\u0027soft deleting volume type %s\u0027,"},{"line_number":303,"context_line":"                          volume.volume_type_id)"},{"line_number":304,"context_line":"                self.db.volume_destroy(objects.CONTEXT, volume.volume_type_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_ec104d5c","line":301,"updated":"2019-08-26 10:54:59.000000000","message":"Strictly speaking we don\u0027t need need to check `volume.volume_type_id` since we\u0027ll always have a volume type due to the cinder migration and this new code, but I think we should still have the check like this. Explicit seems the better approach here.","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"62b55e6f792c07905371c83bb3ebb807e25c1f3b","unresolved":false,"context_lines":[{"line_number":309,"context_line":"            LOG.debug(\u0027hard deleting volume %s\u0027, volume.id)"},{"line_number":310,"context_line":"            query \u003d sqla_api.model_query(objects.CONTEXT, models.Volume)"},{"line_number":311,"context_line":"            query.filter_by(id\u003dvolume.id).delete()"},{"line_number":312,"context_line":"            if (volume.volume_type_id !\u003d self.DEFAULT_TYPE.id"},{"line_number":313,"context_line":"                    and volume.volume_type_id):"},{"line_number":314,"context_line":"                LOG.debug(\u0027hard deleting volume type %s\u0027,"},{"line_number":315,"context_line":"                          volume.volume_type_id)"},{"line_number":316,"context_line":"                query \u003d sqla_api.model_query(objects.CONTEXT,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_e705c611","line":313,"range":{"start_line":312,"start_character":0,"end_line":313,"end_character":47},"updated":"2019-08-26 10:54:59.000000000","message":"nit: Since we have the same check here and in L300-301 we can move it to L297 as  `delete_type \u003d volume.volume_type_id !\u003d self.DEFAULT_TYPE.id AND volume.volume_type_id` and then use `delete_type` in both checks.","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"216e97ce659037290d366c3c39af264c0b2a55f7","unresolved":false,"context_lines":[{"line_number":309,"context_line":"            LOG.debug(\u0027hard deleting volume %s\u0027, volume.id)"},{"line_number":310,"context_line":"            query \u003d sqla_api.model_query(objects.CONTEXT, models.Volume)"},{"line_number":311,"context_line":"            query.filter_by(id\u003dvolume.id).delete()"},{"line_number":312,"context_line":"            if (volume.volume_type_id !\u003d self.DEFAULT_TYPE.id"},{"line_number":313,"context_line":"                    and volume.volume_type_id):"},{"line_number":314,"context_line":"                LOG.debug(\u0027hard deleting volume type %s\u0027,"},{"line_number":315,"context_line":"                          volume.volume_type_id)"},{"line_number":316,"context_line":"                query \u003d sqla_api.model_query(objects.CONTEXT,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_0379e4c3","line":313,"range":{"start_line":312,"start_character":0,"end_line":313,"end_character":47},"in_reply_to":"7faddb67_e705c611","updated":"2019-08-27 09:49:13.000000000","message":"Done","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"}],"cinderlib/tests/unit/persistence/test_dbms.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"62b55e6f792c07905371c83bb3ebb807e25c1f3b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        actual \u003d sqla_api.get_session().query(dbms.KeyValue).all()"},{"line_number":105,"context_line":"        self.assertListEqualObj(expected, actual)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def test_default_volume_type(self):"},{"line_number":108,"context_line":"        vol \u003d cinderlib.Volume(self.backend, size\u003d1, name\u003d\u0027disk\u0027)"},{"line_number":109,"context_line":"        self.persistence.set_volume(vol)"},{"line_number":110,"context_line":"        res \u003d sqla_api.volume_type_get(self.context, vol.volume_type_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_a7f58ece","line":107,"updated":"2019-08-26 10:54:59.000000000","message":"-1: With this test name we should just check that the persistence plugin stores the default type in the instance and create a new test name for this test as something like `test_create_volume_with_default_volume_type`.\n\nThe check default volume type check can be something simple:\n\n\n    self.assertIsInstance(cinder_ovos.VolumeType, self.persistence.DEFAULT_TYPE)\n    self.assertEqual(\u0027__DEFAULT__\u0027, self.persistence.DEFAULT_TYPE.name)","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"216e97ce659037290d366c3c39af264c0b2a55f7","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        actual \u003d sqla_api.get_session().query(dbms.KeyValue).all()"},{"line_number":105,"context_line":"        self.assertListEqualObj(expected, actual)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def test_default_volume_type(self):"},{"line_number":108,"context_line":"        vol \u003d cinderlib.Volume(self.backend, size\u003d1, name\u003d\u0027disk\u0027)"},{"line_number":109,"context_line":"        self.persistence.set_volume(vol)"},{"line_number":110,"context_line":"        res \u003d sqla_api.volume_type_get(self.context, vol.volume_type_id)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_a360100f","line":107,"in_reply_to":"7faddb67_a7f58ece","updated":"2019-08-27 09:49:13.000000000","message":"Done","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"62b55e6f792c07905371c83bb3ebb807e25c1f3b","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def test_default_volume_type(self):"},{"line_number":108,"context_line":"        vol \u003d cinderlib.Volume(self.backend, size\u003d1, name\u003d\u0027disk\u0027)"},{"line_number":109,"context_line":"        self.persistence.set_volume(vol)"},{"line_number":110,"context_line":"        res \u003d sqla_api.volume_type_get(self.context, vol.volume_type_id)"},{"line_number":111,"context_line":"        self.assertIsNotNone(res)"},{"line_number":112,"context_line":"        self.assertEqual(\u0027__DEFAULT__\u0027, res[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_a7e34e06","line":109,"updated":"2019-08-26 10:54:59.000000000","message":"self.assertIs(self.persistence.DEFAULT_TYPE.id, vol.volume_type_id)\nself.assertIs(self.persistence.DEFAULT_TYPE, vol.volume_type)","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"216e97ce659037290d366c3c39af264c0b2a55f7","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def test_default_volume_type(self):"},{"line_number":108,"context_line":"        vol \u003d cinderlib.Volume(self.backend, size\u003d1, name\u003d\u0027disk\u0027)"},{"line_number":109,"context_line":"        self.persistence.set_volume(vol)"},{"line_number":110,"context_line":"        res \u003d sqla_api.volume_type_get(self.context, vol.volume_type_id)"},{"line_number":111,"context_line":"        self.assertIsNotNone(res)"},{"line_number":112,"context_line":"        self.assertEqual(\u0027__DEFAULT__\u0027, res[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"7faddb67_c363cc18","line":109,"in_reply_to":"7faddb67_a7e34e06","updated":"2019-08-27 09:49:13.000000000","message":"Done","commit_id":"5286e71b56e7f4f5ef304f2f7ded47dc7b6902e9"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"989b378428291bf8d47a75a96e68eb8f61c29c4f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    def test_create_volume_with_default_volume_type(self):"},{"line_number":108,"context_line":"        vol \u003d cinderlib.Volume(self.backend, size\u003d1, name\u003d\u0027disk\u0027)"},{"line_number":109,"context_line":"        self.persistence.set_volume(vol)"},{"line_number":110,"context_line":"        self.assertIs(self.persistence.DEFAULT_TYPE.id, vol.volume_type_id)"},{"line_number":111,"context_line":"        self.assertIs(self.persistence.DEFAULT_TYPE, vol.volume_type)"},{"line_number":112,"context_line":"        res \u003d sqla_api.volume_type_get(self.context, vol.volume_type_id)"},{"line_number":113,"context_line":"        self.assertIsNotNone(res)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_95abcb86","line":110,"range":{"start_line":110,"start_character":13,"end_line":110,"end_character":21},"updated":"2019-08-27 10:14:44.000000000","message":"Apparently we must use `assertEqual`","commit_id":"fdf0430fdd92af2ebc03854bb31314f9302ae57a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b77ca67a90bcb4ea5be6a75e21aa80f09932b0c0","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    def test_create_volume_with_default_volume_type(self):"},{"line_number":108,"context_line":"        vol \u003d cinderlib.Volume(self.backend, size\u003d1, name\u003d\u0027disk\u0027)"},{"line_number":109,"context_line":"        self.persistence.set_volume(vol)"},{"line_number":110,"context_line":"        self.assertIs(self.persistence.DEFAULT_TYPE.id, vol.volume_type_id)"},{"line_number":111,"context_line":"        self.assertIs(self.persistence.DEFAULT_TYPE, vol.volume_type)"},{"line_number":112,"context_line":"        res \u003d sqla_api.volume_type_get(self.context, vol.volume_type_id)"},{"line_number":113,"context_line":"        self.assertIsNotNone(res)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_f5a9df7b","line":110,"range":{"start_line":110,"start_character":13,"end_line":110,"end_character":21},"in_reply_to":"7faddb67_95abcb86","updated":"2019-08-27 10:18:30.000000000","message":"Done","commit_id":"fdf0430fdd92af2ebc03854bb31314f9302ae57a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"989b378428291bf8d47a75a96e68eb8f61c29c4f","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        self.assertEqual(\u0027__DEFAULT__\u0027, res[\u0027name\u0027])"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_default_volume_type(self):"},{"line_number":117,"context_line":"        self.assertIsInstance(cinder_ovos.VolumeType,"},{"line_number":118,"context_line":"                              self.persistence.DEFAULT_TYPE)"},{"line_number":119,"context_line":"        self.assertEqual(\u0027__DEFAULT__\u0027, self.persistence.DEFAULT_TYPE.name)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_d5a143aa","line":117,"updated":"2019-08-27 10:14:44.000000000","message":"Apparently I\u0027ve forgotten how to write tests... Parameters are in reverse:\n\n        self.assertIsInstance(self.persistence.DEFAULT_TYPE,\n                              cinder_ovos.VolumeType)","commit_id":"fdf0430fdd92af2ebc03854bb31314f9302ae57a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b77ca67a90bcb4ea5be6a75e21aa80f09932b0c0","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        self.assertEqual(\u0027__DEFAULT__\u0027, res[\u0027name\u0027])"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def test_default_volume_type(self):"},{"line_number":117,"context_line":"        self.assertIsInstance(cinder_ovos.VolumeType,"},{"line_number":118,"context_line":"                              self.persistence.DEFAULT_TYPE)"},{"line_number":119,"context_line":"        self.assertEqual(\u0027__DEFAULT__\u0027, self.persistence.DEFAULT_TYPE.name)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_b5b5a7d2","line":117,"in_reply_to":"7faddb67_d5a143aa","updated":"2019-08-27 10:18:30.000000000","message":"I was just correcting that :)\nDone","commit_id":"fdf0430fdd92af2ebc03854bb31314f9302ae57a"}]}
