)]}'
{"cinder/cmd/manage.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d4318c1895c0153b054f53e0c9af816a21136d35","unresolved":true,"context_lines":[{"line_number":154,"context_line":"    #    # Added in Queens remove in Rocky"},{"line_number":155,"context_line":"    #    db.service_uuids_online_data_migration,"},{"line_number":156,"context_line":"    online_migrations \u003d ("},{"line_number":157,"context_line":"        # TODO: (Z Release) Remove next line and this comment"},{"line_number":158,"context_line":"        # TODO: (Y Release) Uncomment next line and remove this comment"},{"line_number":159,"context_line":"        # db.remove_temporary_admin_metadata_data_migration,"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"063a6a9c_9ecb2cf4","line":157,"updated":"2021-08-26 02:30:24.000000000","message":"I see you are thinking 2 steps ahead!","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8a9594cef44f7647a9b3f1dba9e551dc7bd2fbf8","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    #    # Added in Queens remove in Rocky"},{"line_number":155,"context_line":"    #    db.service_uuids_online_data_migration,"},{"line_number":156,"context_line":"    online_migrations \u003d ("},{"line_number":157,"context_line":"        # TODO: (Z Release) Remove next line and this comment"},{"line_number":158,"context_line":"        # TODO: (Y Release) Uncomment next line and remove this comment"},{"line_number":159,"context_line":"        # db.remove_temporary_admin_metadata_data_migration,"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"cee5dfb3_74ac1397","line":157,"in_reply_to":"063a6a9c_9ecb2cf4","updated":"2021-08-26 09:36:13.000000000","message":"Better document our technical debt to avoid me forgetting what needs to be done.  ;-)","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"}],"cinder/db/sqlalchemy/api.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dcf4a5b9e4f84a13de62fa967d711b2ac82d2f0","unresolved":true,"context_lines":[{"line_number":3304,"context_line":"def snapshot_data_get_for_project(context, project_id,"},{"line_number":3305,"context_line":"                                  volume_type_id\u003dNone, host\u003dNone):"},{"line_number":3306,"context_line":"    return _snapshot_data_get_for_project(context, project_id, volume_type_id,"},{"line_number":3307,"context_line":"                                          host\u003dhost, skip_internal\u003dFalse)"},{"line_number":3308,"context_line":""},{"line_number":3309,"context_line":""},{"line_number":3310,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":9,"id":"16af3303_134c3add","line":3307,"range":{"start_line":3307,"start_character":53,"end_line":3307,"end_character":72},"updated":"2021-08-26 12:54:53.000000000","message":"why are we passing skip_internal as False here? it will override the default value (True) in _snapshot_data_get_for_project and return us with the temp resource count as well.","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f4e323557f850797fd1e9cd45e4378b24f8f477c","unresolved":false,"context_lines":[{"line_number":3304,"context_line":"def snapshot_data_get_for_project(context, project_id,"},{"line_number":3305,"context_line":"                                  volume_type_id\u003dNone, host\u003dNone):"},{"line_number":3306,"context_line":"    return _snapshot_data_get_for_project(context, project_id, volume_type_id,"},{"line_number":3307,"context_line":"                                          host\u003dhost, skip_internal\u003dFalse)"},{"line_number":3308,"context_line":""},{"line_number":3309,"context_line":""},{"line_number":3310,"context_line":"@require_context"}],"source_content_type":"text/x-python","patch_set":9,"id":"664435ea_d0033de1","line":3307,"range":{"start_line":3307,"start_character":53,"end_line":3307,"end_character":72},"in_reply_to":"16af3303_134c3add","updated":"2021-08-26 15:23:36.000000000","message":"Because the methods that use the method require all snapshots to be returned:\n\n- quota sync methods\n- os-host extensions: https://docs.openstack.org/api-ref/block-storage/v3/?expanded\u003dshow-host-details-for-a-project-detail#hosts-extension-os-hosts\n\nThere are no callers of this method that require us to skip the internal ones.\n\nI\u0027ll add a comment, since the reason is not obvious.","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dcf4a5b9e4f84a13de62fa967d711b2ac82d2f0","unresolved":true,"context_lines":[{"line_number":7391,"context_line":"# TODO: (Y Release) remove method and this comment"},{"line_number":7392,"context_line":"@enginefacade.writer"},{"line_number":7393,"context_line":"def volume_use_quota_online_data_migration(context, max_count):"},{"line_number":7394,"context_line":"    def calculate_use_quota(volume):"},{"line_number":7395,"context_line":"        return not (volume.migration_status.startswith(\u0027target:\u0027) or"},{"line_number":7396,"context_line":"                    volume.admin_metadata.get(\u0027temporary\u0027) \u003d\u003d \u0027True\u0027)"},{"line_number":7397,"context_line":""},{"line_number":7398,"context_line":"    return use_quota_online_data_migration(context, max_count, \u0027Volume\u0027,"},{"line_number":7399,"context_line":"                                           calculate_use_quota)"}],"source_content_type":"text/x-python","patch_set":9,"id":"60c7cee1_b3995f78","line":7396,"range":{"start_line":7394,"start_character":0,"end_line":7396,"end_character":69},"updated":"2021-08-26 12:54:53.000000000","message":"Why are we defining this as an inner function here and passing the function, wouldn\u0027t it make sense to define it as a normal method outside or inside use_quota_online_data_migration, like:\n    def calculate_use_quota(resource_name, resource):\n        if resource_name \u003d\u003d \u0027Snapshot\u0027:\n            return True\n        return not (resource.migration_status.startswith(\u0027target:\u0027) or\n                    resource.admin_metadata.get(\u0027temporary\u0027) \u003d\u003d \u0027True\u0027)","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f4e323557f850797fd1e9cd45e4378b24f8f477c","unresolved":true,"context_lines":[{"line_number":7391,"context_line":"# TODO: (Y Release) remove method and this comment"},{"line_number":7392,"context_line":"@enginefacade.writer"},{"line_number":7393,"context_line":"def volume_use_quota_online_data_migration(context, max_count):"},{"line_number":7394,"context_line":"    def calculate_use_quota(volume):"},{"line_number":7395,"context_line":"        return not (volume.migration_status.startswith(\u0027target:\u0027) or"},{"line_number":7396,"context_line":"                    volume.admin_metadata.get(\u0027temporary\u0027) \u003d\u003d \u0027True\u0027)"},{"line_number":7397,"context_line":""},{"line_number":7398,"context_line":"    return use_quota_online_data_migration(context, max_count, \u0027Volume\u0027,"},{"line_number":7399,"context_line":"                                           calculate_use_quota)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1771b6c6_f358e8f0","line":7396,"range":{"start_line":7394,"start_character":0,"end_line":7396,"end_character":69},"in_reply_to":"60c7cee1_b3995f78","updated":"2021-08-26 15:23:36.000000000","message":"I used an inner definition to avoid polluting the higher level list of methods, and I prefer to keep the calculation of the use_quota separated for volumes and snapshots.  The volume is easy to understand, but the snapshot one has a long comment to explain our decission.\n\nIn any case these methods will be short lived, as they will be removed on the next release.","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f4e323557f850797fd1e9cd45e4378b24f8f477c","unresolved":false,"context_lines":[{"line_number":7402,"context_line":"# TODO: (Y Release) remove method and this comment"},{"line_number":7403,"context_line":"@enginefacade.writer"},{"line_number":7404,"context_line":"def snapshot_use_quota_online_data_migration(context, max_count):"},{"line_number":7405,"context_line":"    # Temp volumes are created in"},{"line_number":7406,"context_line":"    # - cinder.volume.manager.VolumeManager._create_backup_snapshot"},{"line_number":7407,"context_line":"    # - cinder.volume.driver.BaseVD.driver _create_temp_snapshot"},{"line_number":7408,"context_line":"    #"}],"source_content_type":"text/x-python","patch_set":9,"id":"d3155029_5098cd13","line":7405,"range":{"start_line":7405,"start_character":11,"end_line":7405,"end_character":18},"updated":"2021-08-26 15:23:36.000000000","message":"nit: snapshots","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"}],"cinder/db/sqlalchemy/migrate_repo/versions/145_add_use_quota_fields.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dcf4a5b9e4f84a13de62fa967d711b2ac82d2f0","unresolved":true,"context_lines":[{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from sqlalchemy import Boolean, Column, MetaData, Table"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":9,"id":"a67d98a3_872a4621","line":16,"range":{"start_line":16,"start_character":23,"end_line":16,"end_character":55},"updated":"2021-08-26 12:54:53.000000000","message":"This is inconsistent with the recent change we merged as part of sqlalchemy to alembic migration, i would recommend to follow the same to keep consistency\nhttps://review.opendev.org/c/openstack/cinder/+/786927/3/cinder/db/sqlalchemy/migrate_repo/versions/135_cinder_init.py","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f4e323557f850797fd1e9cd45e4378b24f8f477c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"# under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from sqlalchemy import Boolean, Column, MetaData, Table"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":9,"id":"9167af14_f47d6c30","line":16,"range":{"start_line":16,"start_character":23,"end_line":16,"end_character":55},"in_reply_to":"a67d98a3_872a4621","updated":"2021-08-26 15:23:36.000000000","message":"Done","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"}],"cinder/db/sqlalchemy/models.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9dcf4a5b9e4f84a13de62fa967d711b2ac82d2f0","unresolved":true,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    id \u003d sa.Column(sa.String(36), primary_key\u003dTrue)"},{"line_number":254,"context_line":"    _name_id \u003d sa.Column(sa.String(36))  # Don\u0027t access/modify this directly!"},{"line_number":255,"context_line":"    # TODO: (Y release) Change default to True and nullable to False"},{"line_number":256,"context_line":"    use_quota \u003d Column(sa.Boolean, nullable\u003dTrue, default\u003dTrue,"},{"line_number":257,"context_line":"                       doc\u003d\u0027Ignore volume in quota usage\u0027)"},{"line_number":258,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"b4027c36_a5597476","line":255,"range":{"start_line":255,"start_character":31,"end_line":255,"end_character":50},"updated":"2021-08-26 12:54:53.000000000","message":"given the code below and explanation supporting it, we can remove this part.","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f4e323557f850797fd1e9cd45e4378b24f8f477c","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    id \u003d sa.Column(sa.String(36), primary_key\u003dTrue)"},{"line_number":254,"context_line":"    _name_id \u003d sa.Column(sa.String(36))  # Don\u0027t access/modify this directly!"},{"line_number":255,"context_line":"    # TODO: (Y release) Change default to True and nullable to False"},{"line_number":256,"context_line":"    use_quota \u003d Column(sa.Boolean, nullable\u003dTrue, default\u003dTrue,"},{"line_number":257,"context_line":"                       doc\u003d\u0027Ignore volume in quota usage\u0027)"},{"line_number":258,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"28b0e7c6_45b2d8a2","line":255,"range":{"start_line":255,"start_character":31,"end_line":255,"end_character":50},"in_reply_to":"b4027c36_a5597476","updated":"2021-08-26 15:23:36.000000000","message":"Done","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d4318c1895c0153b054f53e0c9af816a21136d35","unresolved":true,"context_lines":[{"line_number":253,"context_line":"    id \u003d sa.Column(sa.String(36), primary_key\u003dTrue)"},{"line_number":254,"context_line":"    _name_id \u003d sa.Column(sa.String(36))  # Don\u0027t access/modify this directly!"},{"line_number":255,"context_line":"    # TODO: (Y release) Change default to True and nullable to False"},{"line_number":256,"context_line":"    use_quota \u003d Column(sa.Boolean, nullable\u003dTrue, default\u003dTrue,"},{"line_number":257,"context_line":"                       doc\u003d\u0027Ignore volume in quota usage\u0027)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":9,"id":"6adc4b9f_37198ede","line":256,"range":{"start_line":256,"start_character":50,"end_line":256,"end_character":62},"updated":"2021-08-26 02:30:24.000000000","message":"I think this should be default\u003dNone for use_quota_online_data_migration()?","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"f4e323557f850797fd1e9cd45e4378b24f8f477c","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    id \u003d sa.Column(sa.String(36), primary_key\u003dTrue)"},{"line_number":254,"context_line":"    _name_id \u003d sa.Column(sa.String(36))  # Don\u0027t access/modify this directly!"},{"line_number":255,"context_line":"    # TODO: (Y release) Change default to True and nullable to False"},{"line_number":256,"context_line":"    use_quota \u003d Column(sa.Boolean, nullable\u003dTrue, default\u003dTrue,"},{"line_number":257,"context_line":"                       doc\u003d\u0027Ignore volume in quota usage\u0027)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":9,"id":"931ce17f_b080e0a1","line":256,"range":{"start_line":256,"start_character":50,"end_line":256,"end_character":62},"in_reply_to":"1e43b496_23a7d6ff","updated":"2021-08-26 15:23:36.000000000","message":"marking as resolved","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"8a9594cef44f7647a9b3f1dba9e551dc7bd2fbf8","unresolved":true,"context_lines":[{"line_number":253,"context_line":"    id \u003d sa.Column(sa.String(36), primary_key\u003dTrue)"},{"line_number":254,"context_line":"    _name_id \u003d sa.Column(sa.String(36))  # Don\u0027t access/modify this directly!"},{"line_number":255,"context_line":"    # TODO: (Y release) Change default to True and nullable to False"},{"line_number":256,"context_line":"    use_quota \u003d Column(sa.Boolean, nullable\u003dTrue, default\u003dTrue,"},{"line_number":257,"context_line":"                       doc\u003d\u0027Ignore volume in quota usage\u0027)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":9,"id":"9e5d27cd_c267638d","line":256,"range":{"start_line":256,"start_character":50,"end_line":256,"end_character":62},"in_reply_to":"6adc4b9f_37198ede","updated":"2021-08-26 09:36:13.000000000","message":"The way the code works this will not be used for old resources that were created before we add the use_quota DB fields.\n\nThe DB migration creates a new column, but you can see in file `cinder/db/sqlalchemy/migrate_repo/versions/145_add_use_quota_fields.py` that it doesn\u0027t set a default, and since the new column is nullable it will be set to NULL/None.\n\nSo after running the DB migration all existing resources will have a NULL/None value, which is what the online migration code looks for (both in the OVO and the cinder-manage command) to write an actual value.\n\nSo for this release `use_quota` will have 2 states and 3 values so we can tell when a resource has valid data: Unset (value is None) and Set (value is False or True).\nIn the next release all resources will have a valid value in `use_quota`, and that\u0027s why we have to make the `nullable` to False, to make sure it always have a valid value.\n\nIn this release old resources will start with an undefined value in `use_quota` and it will be set when we save it using the OVO or when we run the online data migrations.\n\nFor new resources the value will be usually set by the caller of the resource creation, but if it\u0027s not set there it will be either set by the OVO code or this default value.\n\nIn other words, this default only takes place when we use ORM instances and don\u0027t set a value, but the DB migration doesn\u0027t use it.","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"6c8f1dfa9d3704af9e4001aaf85ab6a0e59c3629","unresolved":true,"context_lines":[{"line_number":253,"context_line":"    id \u003d sa.Column(sa.String(36), primary_key\u003dTrue)"},{"line_number":254,"context_line":"    _name_id \u003d sa.Column(sa.String(36))  # Don\u0027t access/modify this directly!"},{"line_number":255,"context_line":"    # TODO: (Y release) Change default to True and nullable to False"},{"line_number":256,"context_line":"    use_quota \u003d Column(sa.Boolean, nullable\u003dTrue, default\u003dTrue,"},{"line_number":257,"context_line":"                       doc\u003d\u0027Ignore volume in quota usage\u0027)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":9,"id":"1e43b496_23a7d6ff","line":256,"range":{"start_line":256,"start_character":50,"end_line":256,"end_character":62},"in_reply_to":"9e5d27cd_c267638d","updated":"2021-08-26 13:00:12.000000000","message":"Thanks for the explanation, makes complete sense.","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d4318c1895c0153b054f53e0c9af816a21136d35","unresolved":true,"context_lines":[{"line_number":829,"context_line":"    \"\"\"Represents a backup of a volume to Swift.\"\"\""},{"line_number":830,"context_line":"    __tablename__ \u003d \u0027backups\u0027"},{"line_number":831,"context_line":"    id \u003d sa.Column(sa.String(36), primary_key\u003dTrue)"},{"line_number":832,"context_line":"    # Backups don\u0027t have use_quota field since we don\u0027t have temporary backups"},{"line_number":833,"context_line":""},{"line_number":834,"context_line":"    @property"},{"line_number":835,"context_line":"    def name(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fe48333c_42344655","line":832,"updated":"2021-08-26 02:30:24.000000000","message":"This is worth pointing out.","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"82ee693a01ba7e029ada7076b12a096723688a7a","unresolved":true,"context_lines":[{"line_number":758,"context_line":"    \"\"\"Represents a snapshot of volume.\"\"\""},{"line_number":759,"context_line":"    __tablename__ \u003d \u0027snapshots\u0027"},{"line_number":760,"context_line":"    id \u003d sa.Column(sa.String(36), primary_key\u003dTrue)"},{"line_number":761,"context_line":"    # TODO: (Y release) Change nullable to False"},{"line_number":762,"context_line":"    use_quota \u003d Column(sa.Boolean, nullable\u003dTrue, default\u003dNone,"},{"line_number":763,"context_line":"                       doc\u003d\u0027Ignore volume in quota usage\u0027)"},{"line_number":764,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3d041c13_73541d55","line":761,"range":{"start_line":761,"start_character":24,"end_line":761,"end_character":48},"updated":"2021-08-26 16:00:52.000000000","message":"i think we still need the \"default to True\" part here, since here default\u003dFalse (unlike the above case where default\u003dTrue)","commit_id":"17fefa6bce9f0841b8b8598bf0512328cb7c5cad"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"0134233f051751d24d08bea7e6e96a212addc378","unresolved":true,"context_lines":[{"line_number":759,"context_line":"    __tablename__ \u003d \u0027snapshots\u0027"},{"line_number":760,"context_line":"    id \u003d sa.Column(sa.String(36), primary_key\u003dTrue)"},{"line_number":761,"context_line":"    # TODO: (Y release) Change nullable to False"},{"line_number":762,"context_line":"    use_quota \u003d Column(sa.Boolean, nullable\u003dTrue, default\u003dNone,"},{"line_number":763,"context_line":"                       doc\u003d\u0027Ignore volume in quota usage\u0027)"},{"line_number":764,"context_line":""},{"line_number":765,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":10,"id":"c000f18b_46969fe6","line":762,"range":{"start_line":762,"start_character":50,"end_line":762,"end_character":62},"updated":"2021-08-26 15:59:26.000000000","message":"shouldn\u0027t this be True ?","commit_id":"17fefa6bce9f0841b8b8598bf0512328cb7c5cad"}],"cinder/tests/unit/objects/test_snapshot.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"52ff69bc009df1a5157934227a20f589d9bec990","unresolved":true,"context_lines":[{"line_number":238,"context_line":"        primitive \u003d serializer.serialize_entity(self.context, snapshot)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        converted_snapshot \u003d objects.Snapshot.obj_from_primitive(primitive)"},{"line_number":241,"context_line":"        expected \u003d version !\u003d \u00271.39\u0027"},{"line_number":242,"context_line":"        self.assertIs(expected, converted_snapshot.use_quota)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"0075e2bf_1887e6be","line":241,"range":{"start_line":241,"start_character":19,"end_line":241,"end_character":36},"updated":"2021-08-26 15:56:47.000000000","message":"nit: a bracket would be better for readability here","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"}],"cinder/tests/unit/volume/test_image.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d4318c1895c0153b054f53e0c9af816a21136d35","unresolved":true,"context_lines":[{"line_number":481,"context_line":"    @mock.patch(\u0027cinder.quota.QUOTAS.reserve\u0027, return_value\u003d[\"RESERVATION\"])"},{"line_number":482,"context_line":"    def test_clone_image_volume(self, mock_reserve, mock_commit,"},{"line_number":483,"context_line":"                                mock_rollback, mock_cloned_volume):"},{"line_number":484,"context_line":"        # Confirm  cloning does not copy quota use field"},{"line_number":485,"context_line":"        vol \u003d tests_utils.create_volume(self.context, use_quota\u003dFalse,"},{"line_number":486,"context_line":"                                        **self.volume_params)"},{"line_number":487,"context_line":"        # unnecessary attributes should be removed from image volume"}],"source_content_type":"text/x-python","patch_set":9,"id":"f5d0a9c2_05d55647","line":484,"updated":"2021-08-26 02:30:24.000000000","message":"Yes, this is good to check.","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"}],"cinder/volume/api.py":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"52ff69bc009df1a5157934227a20f589d9bec990","unresolved":true,"context_lines":[{"line_number":403,"context_line":"            try:"},{"line_number":404,"context_line":"                reservations \u003d None"},{"line_number":405,"context_line":"                if volume.status !\u003d \u0027error_managing\u0027 and volume.use_quota:"},{"line_number":406,"context_line":"                    LOG.debug(\"Decrease volume quotas only if status is not \""},{"line_number":407,"context_line":"                              \"error_managing.\")"},{"line_number":408,"context_line":"                    reserve_opts \u003d {\u0027volumes\u0027: -1, \u0027gigabytes\u0027: -volume.size}"},{"line_number":409,"context_line":"                    QUOTAS.add_volume_type_opts(context,"},{"line_number":410,"context_line":"                                                reserve_opts,"}],"source_content_type":"text/x-python","patch_set":9,"id":"a60346b4_9a50f8c8","line":407,"range":{"start_line":406,"start_character":31,"end_line":407,"end_character":46},"updated":"2021-08-26 15:56:47.000000000","message":"Decrease volume quotas if status is not error_managing or it is not a temporary volume.\nOr anything else you feel suitable","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"}],"releasenotes/notes/quota-temp-snapshots-9d032f97f80050c5.yaml":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"52ff69bc009df1a5157934227a20f589d9bec990","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    `Bug #1923828 \u003chttps://bugs.launchpad.net/cinder/+bug/1923828\u003e`_: Fix"},{"line_number":5,"context_line":"    quota usage sync counting temporary snapshots from backups and revert to"},{"line_number":6,"context_line":"    snapshot."},{"line_number":7,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"dc04c6eb_2fb06edd","line":4,"range":{"start_line":4,"start_character":70,"end_line":4,"end_character":73},"updated":"2021-08-26 15:56:47.000000000","message":"nit: Fixed","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"52ff69bc009df1a5157934227a20f589d9bec990","unresolved":true,"context_lines":[{"line_number":5,"context_line":"    quota usage sync counting temporary snapshots from backups and revert to"},{"line_number":6,"context_line":"    snapshot."},{"line_number":7,"context_line":"  - |"},{"line_number":8,"context_line":"    `Bug #1923829 \u003chttps://bugs.launchpad.net/cinder/+bug/1923829\u003e`_: Fix"},{"line_number":9,"context_line":"    manually deleting temporary snapshots from backups and revert to snapshots"},{"line_number":10,"context_line":"    after failure leads to incorrect quota usage."},{"line_number":11,"context_line":"  - |"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"3c9e41b7_9200411f","line":8,"range":{"start_line":8,"start_character":70,"end_line":8,"end_character":73},"updated":"2021-08-26 15:56:47.000000000","message":"same","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"52ff69bc009df1a5157934227a20f589d9bec990","unresolved":true,"context_lines":[{"line_number":9,"context_line":"    manually deleting temporary snapshots from backups and revert to snapshots"},{"line_number":10,"context_line":"    after failure leads to incorrect quota usage."},{"line_number":11,"context_line":"  - |"},{"line_number":12,"context_line":"    `Bug #1923830 \u003chttps://bugs.launchpad.net/cinder/+bug/1923830\u003e`_: Fix"},{"line_number":13,"context_line":"    successfully backing up an in-use volume using a temporary snapshot instead"},{"line_number":14,"context_line":"    of a clone leads to incorrect quota usage."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"ab375f6e_1daffea5","line":12,"range":{"start_line":12,"start_character":70,"end_line":12,"end_character":73},"updated":"2021-08-26 15:56:47.000000000","message":"same","commit_id":"f848c02cc78eefa3f0a9c301028e389e6688b594"}]}
