)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":32966,"name":"jiang guodao","email":"jguodao@vmware.com","username":"jguodao"},"change_message_id":"ced0a4f7b2e57a0913d2210702dca7cf56f9df57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"655b3026_1d356532","updated":"2022-03-31 02:34:22.000000000","message":"vmware-recheck-patch","commit_id":"955da9b2f82a95ab82aaea77b04337cf9b0d717a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cc281284b0cbf2d6a191dab59c09f003131c135e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"6eed0699_8e096c37","updated":"2022-05-10 13:11:52.000000000","message":"A few questions inline.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"59e67f1327844d1d80393f97af7b0aad77ab86dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1a6e8903_a5e2eef9","updated":"2022-05-10 13:08:26.000000000","message":"recheck\n\ncinder-plugin-ceph-tempest DBConnection errors","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"bde2145a112ba9e7e002cc9e14e2755d8b8fd556","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"eba0f0ca_4f0cbe7d","updated":"2022-05-11 14:10:51.000000000","message":"I think you need to revert the change I suggested (sorry!).","commit_id":"202035a54e689c790d3b75ade9cc634d542aa61a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5558719ebde8eb177985a4fb6bd71978e30a185d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"074b56d7_7f4ad6df","updated":"2022-05-11 13:25:18.000000000","message":"Revisions LGTM.","commit_id":"202035a54e689c790d3b75ade9cc634d542aa61a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5700c5336baea4ad6219ce7b4fb0921903163c8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"3a84903c_5ff926ce","updated":"2022-05-12 13:51:35.000000000","message":"Hijacking this patch to test swap size change for cinder-plugin-ceph-tempest job.","commit_id":"adfc4cc8acd0abd45f7257fd436bfcb6604dd526"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d5cb09c3c54f28f26c96d8b6081233d4656cba23","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"143bfdc5_23c7cc1f","updated":"2022-05-17 22:28:36.000000000","message":"Revisions look good.","commit_id":"85e914656884971a18226bde89e28a672fdfe67f"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"139c1f9343552ee7a2840c745ea93263622c3d7a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"c72cb565_6c829736","updated":"2022-05-17 13:40:25.000000000","message":"recheck","commit_id":"85e914656884971a18226bde89e28a672fdfe67f"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d05f820bf8cf9b2b9693b98df78d4bf46475de6f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"5479d138_05c5b3a9","updated":"2022-05-27 15:51:29.000000000","message":"Revisions LGTM.","commit_id":"04b6700f48f0776f7bedbea7a26ff18070117c1e"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"7c817a187bbb2926aeca4051cc09b1daa932ce92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"014c8b43_9965fba0","updated":"2022-05-23 18:33:44.000000000","message":"The code looks good to me but most of the comments are still open. Waiting for them to be close or update.","commit_id":"04b6700f48f0776f7bedbea7a26ff18070117c1e"},{"author":{"_account_id":20813,"name":"Sofia Enriquez","email":"lsofia.enriquez@gmail.com","username":"enriquetaso"},"change_message_id":"8eb82639db191c2cb25ede1e511ae9a6e01f4a72","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"650796e9_d5e1b7d8","updated":"2022-05-24 13:56:55.000000000","message":"Upgrading vote, LGTM!","commit_id":"04b6700f48f0776f7bedbea7a26ff18070117c1e"}],"cinder/api/schemas/volumes.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cc281284b0cbf2d6a191dab59c09f003131c135e","unresolved":true,"context_lines":[{"line_number":55,"context_line":"                \u0027imageRef\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027], \u0027minLength\u0027: 0,"},{"line_number":56,"context_line":"                             \u0027maxLength\u0027: 255},"},{"line_number":57,"context_line":"            },"},{"line_number":58,"context_line":"            \u0027additionalProperties\u0027: True,"},{"line_number":59,"context_line":"        },"},{"line_number":60,"context_line":"        \u0027OS-SCH-HNT:scheduler_hints\u0027: {"},{"line_number":61,"context_line":"            \u0027type\u0027: [\u0027object\u0027, \u0027null\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"a1ebee9a_cd03fed9","line":58,"updated":"2022-05-10 13:11:52.000000000","message":"no properties of the \u0027volume\u0027 object are indicated as required","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5210da5e23fb4617e2f491d62369c62790ce58b6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                \u0027imageRef\u0027: {\u0027type\u0027: [\u0027string\u0027, \u0027null\u0027], \u0027minLength\u0027: 0,"},{"line_number":56,"context_line":"                             \u0027maxLength\u0027: 255},"},{"line_number":57,"context_line":"            },"},{"line_number":58,"context_line":"            \u0027additionalProperties\u0027: True,"},{"line_number":59,"context_line":"        },"},{"line_number":60,"context_line":"        \u0027OS-SCH-HNT:scheduler_hints\u0027: {"},{"line_number":61,"context_line":"            \u0027type\u0027: [\u0027object\u0027, \u0027null\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"7f63c610_6c1543a1","line":58,"in_reply_to":"a1ebee9a_cd03fed9","updated":"2022-05-10 15:55:56.000000000","message":"Ack","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"}],"cinder/api/v3/volumes.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cc281284b0cbf2d6a191dab59c09f003131c135e","unresolved":true,"context_lines":[{"line_number":375,"context_line":"            kwargs[\u0027backup\u0027] \u003d self.backup_api.get(context,"},{"line_number":376,"context_line":"                                                   backup_id\u003dbackup_id)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        size \u003d volume.get(\u0027size\u0027, None)"},{"line_number":379,"context_line":"        if size is None and kwargs[\u0027snapshot\u0027] is not None:"},{"line_number":380,"context_line":"            size \u003d kwargs[\u0027snapshot\u0027][\u0027volume_size\u0027]"},{"line_number":381,"context_line":"        elif size is None and kwargs[\u0027source_volume\u0027] is not None:"},{"line_number":382,"context_line":"            size \u003d kwargs[\u0027source_volume\u0027][\u0027size\u0027]"},{"line_number":383,"context_line":"        elif size is None and kwargs.get(\u0027backup\u0027) is not None:"},{"line_number":384,"context_line":"            size \u003d kwargs[\u0027backup\u0027][\u0027size\u0027]"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        LOG.info(\"Create volume of %s GB\", size)"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"d259df0e_289d5780","line":384,"range":{"start_line":378,"start_character":0,"end_line":384,"end_character":43},"updated":"2022-05-10 13:11:52.000000000","message":"I may be missing a validation somewhere, but none of the volume properties are required by the create request schema, and even if \u0027size\u0027 is included, the schema allows it to be null, so it looks to me like you could get past this block of code and size \u003d\u003d None.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"2900004c8e7e5a79a050ab3b03a10551a80c614a","unresolved":true,"context_lines":[{"line_number":375,"context_line":"            kwargs[\u0027backup\u0027] \u003d self.backup_api.get(context,"},{"line_number":376,"context_line":"                                                   backup_id\u003dbackup_id)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        size \u003d volume.get(\u0027size\u0027, None)"},{"line_number":379,"context_line":"        if size is None and kwargs[\u0027snapshot\u0027] is not None:"},{"line_number":380,"context_line":"            size \u003d kwargs[\u0027snapshot\u0027][\u0027volume_size\u0027]"},{"line_number":381,"context_line":"        elif size is None and kwargs[\u0027source_volume\u0027] is not None:"},{"line_number":382,"context_line":"            size \u003d kwargs[\u0027source_volume\u0027][\u0027size\u0027]"},{"line_number":383,"context_line":"        elif size is None and kwargs.get(\u0027backup\u0027) is not None:"},{"line_number":384,"context_line":"            size \u003d kwargs[\u0027backup\u0027][\u0027size\u0027]"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        LOG.info(\"Create volume of %s GB\", size)"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"dba8628b_4e11f400","line":384,"range":{"start_line":378,"start_character":0,"end_line":384,"end_character":43},"in_reply_to":"d259df0e_289d5780","updated":"2022-05-10 14:11:12.000000000","message":"It seems to me that none of the properties are required because there are multiple ways of creating a volume (from a snap, a backup, or another vol, or from none of the above). When you consider each property, there\u0027s a scenario where that property isn\u0027t required.\n\nI agree there may be a paradoxical path to L386 with size still being None, and it would be good to catch that. But I\u0027m not sure this deficiency has a big impact on the rest of this patch.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"017ca34105b952b3c226a59c8d5e6bedc7daf11b","unresolved":false,"context_lines":[{"line_number":375,"context_line":"            kwargs[\u0027backup\u0027] \u003d self.backup_api.get(context,"},{"line_number":376,"context_line":"                                                   backup_id\u003dbackup_id)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        size \u003d volume.get(\u0027size\u0027, None)"},{"line_number":379,"context_line":"        if size is None and kwargs[\u0027snapshot\u0027] is not None:"},{"line_number":380,"context_line":"            size \u003d kwargs[\u0027snapshot\u0027][\u0027volume_size\u0027]"},{"line_number":381,"context_line":"        elif size is None and kwargs[\u0027source_volume\u0027] is not None:"},{"line_number":382,"context_line":"            size \u003d kwargs[\u0027source_volume\u0027][\u0027size\u0027]"},{"line_number":383,"context_line":"        elif size is None and kwargs.get(\u0027backup\u0027) is not None:"},{"line_number":384,"context_line":"            size \u003d kwargs[\u0027backup\u0027][\u0027size\u0027]"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        LOG.info(\"Create volume of %s GB\", size)"},{"line_number":387,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3b2db52e_6ece01c9","line":384,"range":{"start_line":378,"start_character":0,"end_line":384,"end_character":43},"in_reply_to":"dba8628b_4e11f400","updated":"2022-05-24 13:54:51.000000000","message":"Ack","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"}],"cinder/volume/api.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cc281284b0cbf2d6a191dab59c09f003131c135e","unresolved":true,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def create(self,"},{"line_number":217,"context_line":"               context: context.RequestContext,"},{"line_number":218,"context_line":"               size: Union[str, int],"},{"line_number":219,"context_line":"               name: Optional[str],"},{"line_number":220,"context_line":"               description: Optional[str],"},{"line_number":221,"context_line":"               snapshot: Optional[objects.Snapshot] \u003d None,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ffd4e6dd_c2b4782e","line":218,"range":{"start_line":218,"start_character":21,"end_line":218,"end_character":37},"updated":"2022-05-10 13:11:52.000000000","message":"I\u0027m not sure about this.  See my comment in api/v3/volumes.py","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5210da5e23fb4617e2f491d62369c62790ce58b6","unresolved":true,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def create(self,"},{"line_number":217,"context_line":"               context: context.RequestContext,"},{"line_number":218,"context_line":"               size: Union[str, int],"},{"line_number":219,"context_line":"               name: Optional[str],"},{"line_number":220,"context_line":"               description: Optional[str],"},{"line_number":221,"context_line":"               snapshot: Optional[objects.Snapshot] \u003d None,"}],"source_content_type":"text/x-python","patch_set":9,"id":"8cc1e102_3e30410d","line":218,"range":{"start_line":218,"start_character":21,"end_line":218,"end_character":37},"in_reply_to":"810ac039_dbbd749f","updated":"2022-05-10 15:55:56.000000000","message":"Hmm, this is complex...\n\nThe call at line 267 to volume_types.provision_filter_on_size clearly requires size to have a value already.  (That method is annotated it being required, and if you read the code, it definitely needs to be.)","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b5080367119efd0ddfc8f25807cd29a33655159b","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def create(self,"},{"line_number":217,"context_line":"               context: context.RequestContext,"},{"line_number":218,"context_line":"               size: Union[str, int],"},{"line_number":219,"context_line":"               name: Optional[str],"},{"line_number":220,"context_line":"               description: Optional[str],"},{"line_number":221,"context_line":"               snapshot: Optional[objects.Snapshot] \u003d None,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7d2328e0_db11eb99","line":218,"range":{"start_line":218,"start_character":21,"end_line":218,"end_character":37},"in_reply_to":"8cc1e102_3e30410d","updated":"2022-05-24 13:54:40.000000000","message":"Ack","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"2900004c8e7e5a79a050ab3b03a10551a80c614a","unresolved":true,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def create(self,"},{"line_number":217,"context_line":"               context: context.RequestContext,"},{"line_number":218,"context_line":"               size: Union[str, int],"},{"line_number":219,"context_line":"               name: Optional[str],"},{"line_number":220,"context_line":"               description: Optional[str],"},{"line_number":221,"context_line":"               snapshot: Optional[objects.Snapshot] \u003d None,"}],"source_content_type":"text/x-python","patch_set":9,"id":"810ac039_dbbd749f","line":218,"range":{"start_line":218,"start_character":21,"end_line":218,"end_character":37},"in_reply_to":"ffd4e6dd_c2b4782e","updated":"2022-05-10 14:11:12.000000000","message":"I think the intent is there will be a size once the request reaches c-vol (c-api should be responsible for ensuring size isn\u0027t None).","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cc281284b0cbf2d6a191dab59c09f003131c135e","unresolved":true,"context_lines":[{"line_number":247,"context_line":"                    \"available.\")"},{"line_number":248,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        # NOTE(jdg): we can have a create without size if we\u0027re"},{"line_number":251,"context_line":"        # doing a create from snap or volume.  Currently"},{"line_number":252,"context_line":"        # the taskflow api will handle this and pull in the"},{"line_number":253,"context_line":"        # size from the source."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        # NOTE(jdg): cinderclient sends in a string representation"},{"line_number":256,"context_line":"        # of the size value.  BUT there is a possibility that somebody"}],"source_content_type":"text/x-python","patch_set":9,"id":"c1af9689_b62518bf","line":253,"range":{"start_line":250,"start_character":0,"end_line":253,"end_character":31},"updated":"2022-05-10 13:11:52.000000000","message":"I\u0027m not sure this is true any more, because the v3 volumes controller checks for snapshot, backup, or source_volume and fills in the size.  Though as I indicated in api/v3/volumes.py, it\u0027s not clear to me that you can\u0027t slip a size\u003d\u003dNone past the goalie.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5210da5e23fb4617e2f491d62369c62790ce58b6","unresolved":true,"context_lines":[{"line_number":247,"context_line":"                    \"available.\")"},{"line_number":248,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        # NOTE(jdg): we can have a create without size if we\u0027re"},{"line_number":251,"context_line":"        # doing a create from snap or volume.  Currently"},{"line_number":252,"context_line":"        # the taskflow api will handle this and pull in the"},{"line_number":253,"context_line":"        # size from the source."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        # NOTE(jdg): cinderclient sends in a string representation"},{"line_number":256,"context_line":"        # of the size value.  BUT there is a possibility that somebody"}],"source_content_type":"text/x-python","patch_set":9,"id":"900184d8_0008df56","line":253,"range":{"start_line":250,"start_character":0,"end_line":253,"end_character":31},"in_reply_to":"2afc7e3b_9d848157","updated":"2022-05-10 15:55:56.000000000","message":"Note that this code is in in c-api.  It goes to c-vol via the volume_rpcapi setup at line 351.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"1a19ee4b54a9e1f1b53b59f067913b6fb8a5c27e","unresolved":true,"context_lines":[{"line_number":247,"context_line":"                    \"available.\")"},{"line_number":248,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        # NOTE(jdg): we can have a create without size if we\u0027re"},{"line_number":251,"context_line":"        # doing a create from snap or volume.  Currently"},{"line_number":252,"context_line":"        # the taskflow api will handle this and pull in the"},{"line_number":253,"context_line":"        # size from the source."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        # NOTE(jdg): cinderclient sends in a string representation"},{"line_number":256,"context_line":"        # of the size value.  BUT there is a possibility that somebody"}],"source_content_type":"text/x-python","patch_set":9,"id":"e8aadd82_afc706d8","line":253,"range":{"start_line":250,"start_character":0,"end_line":253,"end_character":31},"in_reply_to":"900184d8_0008df56","updated":"2022-05-11 14:49:23.000000000","message":"Yes, I agree what I wrote is incorrect. This code does execute in the c-api process. I guess what I meant is code in cinder/api/... executes first, and that code should ensure size !\u003d None.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"2900004c8e7e5a79a050ab3b03a10551a80c614a","unresolved":true,"context_lines":[{"line_number":247,"context_line":"                    \"available.\")"},{"line_number":248,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        # NOTE(jdg): we can have a create without size if we\u0027re"},{"line_number":251,"context_line":"        # doing a create from snap or volume.  Currently"},{"line_number":252,"context_line":"        # the taskflow api will handle this and pull in the"},{"line_number":253,"context_line":"        # size from the source."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        # NOTE(jdg): cinderclient sends in a string representation"},{"line_number":256,"context_line":"        # of the size value.  BUT there is a possibility that somebody"}],"source_content_type":"text/x-python","patch_set":9,"id":"2afc7e3b_9d848157","line":253,"range":{"start_line":250,"start_character":0,"end_line":253,"end_character":31},"in_reply_to":"c1af9689_b62518bf","updated":"2022-05-10 14:11:12.000000000","message":"Per my other comments, I think c-api should ensure size !\u003d None before sending the request on to c-vol.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b5080367119efd0ddfc8f25807cd29a33655159b","unresolved":false,"context_lines":[{"line_number":247,"context_line":"                    \"available.\")"},{"line_number":248,"context_line":"            raise exception.InvalidInput(reason\u003dmsg)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        # NOTE(jdg): we can have a create without size if we\u0027re"},{"line_number":251,"context_line":"        # doing a create from snap or volume.  Currently"},{"line_number":252,"context_line":"        # the taskflow api will handle this and pull in the"},{"line_number":253,"context_line":"        # size from the source."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        # NOTE(jdg): cinderclient sends in a string representation"},{"line_number":256,"context_line":"        # of the size value.  BUT there is a possibility that somebody"}],"source_content_type":"text/x-python","patch_set":9,"id":"93487414_f2d41991","line":253,"range":{"start_line":250,"start_character":0,"end_line":253,"end_character":31},"in_reply_to":"e8aadd82_afc706d8","updated":"2022-05-24 13:54:40.000000000","message":"Ack","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"5558719ebde8eb177985a4fb6bd71978e30a185d","unresolved":true,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def create(self,"},{"line_number":217,"context_line":"               context: context.RequestContext,"},{"line_number":218,"context_line":"               size: Optional[Union[str, int]],"},{"line_number":219,"context_line":"               name: Optional[str],"},{"line_number":220,"context_line":"               description: Optional[str],"},{"line_number":221,"context_line":"               snapshot: Optional[objects.Snapshot] \u003d None,"}],"source_content_type":"text/x-python","patch_set":10,"id":"c546ac41_af822703","line":218,"updated":"2022-05-11 13:25:18.000000000","message":"We\u0027ll have to revisit the issue of these Optional parameters once we\u0027ve got cinder mostly type annotated.  (So it\u0027s good that we\u0027re not allowing implicit optionals any more!)","commit_id":"202035a54e689c790d3b75ade9cc634d542aa61a"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"1a19ee4b54a9e1f1b53b59f067913b6fb8a5c27e","unresolved":true,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def create(self,"},{"line_number":217,"context_line":"               context: context.RequestContext,"},{"line_number":218,"context_line":"               size: Optional[Union[str, int]],"},{"line_number":219,"context_line":"               name: Optional[str],"},{"line_number":220,"context_line":"               description: Optional[str],"},{"line_number":221,"context_line":"               snapshot: Optional[objects.Snapshot] \u003d None,"}],"source_content_type":"text/x-python","patch_set":10,"id":"e987042c_a9296f34","line":218,"in_reply_to":"550df870_26ca07df","updated":"2022-05-11 14:49:23.000000000","message":"Ack. I\u0027m still holding to my view that size should not be None by the time processing reaches this code.","commit_id":"202035a54e689c790d3b75ade9cc634d542aa61a"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"bde2145a112ba9e7e002cc9e14e2755d8b8fd556","unresolved":true,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def create(self,"},{"line_number":217,"context_line":"               context: context.RequestContext,"},{"line_number":218,"context_line":"               size: Optional[Union[str, int]],"},{"line_number":219,"context_line":"               name: Optional[str],"},{"line_number":220,"context_line":"               description: Optional[str],"},{"line_number":221,"context_line":"               snapshot: Optional[objects.Snapshot] \u003d None,"}],"source_content_type":"text/x-python","patch_set":10,"id":"550df870_26ca07df","line":218,"in_reply_to":"c546ac41_af822703","updated":"2022-05-11 14:10:51.000000000","message":"Actually, this breaks the mypy job on this patch, so let\u0027s revert to what you had on PS9, and we can deal with the REST API issue when we mypy that file.","commit_id":"202035a54e689c790d3b75ade9cc634d542aa61a"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b5080367119efd0ddfc8f25807cd29a33655159b","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def create(self,"},{"line_number":217,"context_line":"               context: context.RequestContext,"},{"line_number":218,"context_line":"               size: Optional[Union[str, int]],"},{"line_number":219,"context_line":"               name: Optional[str],"},{"line_number":220,"context_line":"               description: Optional[str],"},{"line_number":221,"context_line":"               snapshot: Optional[objects.Snapshot] \u003d None,"}],"source_content_type":"text/x-python","patch_set":10,"id":"15077c04_12001587","line":218,"in_reply_to":"e987042c_a9296f34","updated":"2022-05-24 13:54:40.000000000","message":"Done","commit_id":"202035a54e689c790d3b75ade9cc634d542aa61a"}],"cinder/volume/volume_types.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b9023eea58268e185f581fba64d30605f48fb275","unresolved":true,"context_lines":[{"line_number":154,"context_line":"                  filters: Optional[dict] \u003d None,"},{"line_number":155,"context_line":"                  marker\u003dNone,"},{"line_number":156,"context_line":"                  limit: Optional[int] \u003d None,"},{"line_number":157,"context_line":"                  sort_keys: Optional[str] \u003d None,"},{"line_number":158,"context_line":"                  sort_dirs: Optional[str] \u003d None,"},{"line_number":159,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":160,"context_line":"                  list_result: Optional[bool] \u003d False) -\u003e Union[dict, list]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"e5fb0b58_6837d19d","line":157,"range":{"start_line":157,"start_character":29,"end_line":157,"end_character":42},"updated":"2022-05-09 14:01:14.000000000","message":"This needs to be Optional[List[str]]","commit_id":"3e561e4c46967bd727a2c4e51fb58cc60a15c74b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5210da5e23fb4617e2f491d62369c62790ce58b6","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                  filters: Optional[dict] \u003d None,"},{"line_number":155,"context_line":"                  marker\u003dNone,"},{"line_number":156,"context_line":"                  limit: Optional[int] \u003d None,"},{"line_number":157,"context_line":"                  sort_keys: Optional[str] \u003d None,"},{"line_number":158,"context_line":"                  sort_dirs: Optional[str] \u003d None,"},{"line_number":159,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":160,"context_line":"                  list_result: Optional[bool] \u003d False) -\u003e Union[dict, list]:"}],"source_content_type":"text/x-python","patch_set":6,"id":"c939a7e7_d850ba92","line":157,"range":{"start_line":157,"start_character":29,"end_line":157,"end_character":42},"in_reply_to":"e5fb0b58_6837d19d","updated":"2022-05-10 15:55:56.000000000","message":"Done","commit_id":"3e561e4c46967bd727a2c4e51fb58cc60a15c74b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b9023eea58268e185f581fba64d30605f48fb275","unresolved":true,"context_lines":[{"line_number":155,"context_line":"                  marker\u003dNone,"},{"line_number":156,"context_line":"                  limit: Optional[int] \u003d None,"},{"line_number":157,"context_line":"                  sort_keys: Optional[str] \u003d None,"},{"line_number":158,"context_line":"                  sort_dirs: Optional[str] \u003d None,"},{"line_number":159,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":160,"context_line":"                  list_result: Optional[bool] \u003d False) -\u003e Union[dict, list]:"},{"line_number":161,"context_line":"    \"\"\"Get all non-deleted volume_types."}],"source_content_type":"text/x-python","patch_set":6,"id":"18477c96_cf7ac429","line":158,"range":{"start_line":158,"start_character":29,"end_line":158,"end_character":42},"updated":"2022-05-09 14:01:14.000000000","message":"Same","commit_id":"3e561e4c46967bd727a2c4e51fb58cc60a15c74b"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5210da5e23fb4617e2f491d62369c62790ce58b6","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                  marker\u003dNone,"},{"line_number":156,"context_line":"                  limit: Optional[int] \u003d None,"},{"line_number":157,"context_line":"                  sort_keys: Optional[str] \u003d None,"},{"line_number":158,"context_line":"                  sort_dirs: Optional[str] \u003d None,"},{"line_number":159,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":160,"context_line":"                  list_result: Optional[bool] \u003d False) -\u003e Union[dict, list]:"},{"line_number":161,"context_line":"    \"\"\"Get all non-deleted volume_types."}],"source_content_type":"text/x-python","patch_set":6,"id":"09c77e01_ff51fbc2","line":158,"range":{"start_line":158,"start_character":29,"end_line":158,"end_character":42},"in_reply_to":"18477c96_cf7ac429","updated":"2022-05-10 15:55:56.000000000","message":"Done","commit_id":"3e561e4c46967bd727a2c4e51fb58cc60a15c74b"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fe6646ba59d3f96704e6895ad3d63a83075ce346","unresolved":true,"context_lines":[{"line_number":51,"context_line":"def create(context: context.RequestContext,"},{"line_number":52,"context_line":"           name: str,"},{"line_number":53,"context_line":"           extra_specs: Optional[Dict[str, Any]] \u003d None,"},{"line_number":54,"context_line":"           is_public: Optional[bool] \u003d True,"},{"line_number":55,"context_line":"           projects\u003dNone,"},{"line_number":56,"context_line":"           description: Optional[str] \u003d None):"},{"line_number":57,"context_line":"    \"\"\"Creates volume types.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"cc83d7b6_f6613030","line":54,"range":{"start_line":54,"start_character":22,"end_line":54,"end_character":30},"updated":"2022-05-09 14:38:49.000000000","message":"-1: As I see it this parameter should never the None value, only True or False, so Optional is not required.","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"aa412917293dd2b1a45d2f0a278cc5658b64825d","unresolved":false,"context_lines":[{"line_number":51,"context_line":"def create(context: context.RequestContext,"},{"line_number":52,"context_line":"           name: str,"},{"line_number":53,"context_line":"           extra_specs: Optional[Dict[str, Any]] \u003d None,"},{"line_number":54,"context_line":"           is_public: Optional[bool] \u003d True,"},{"line_number":55,"context_line":"           projects\u003dNone,"},{"line_number":56,"context_line":"           description: Optional[str] \u003d None):"},{"line_number":57,"context_line":"    \"\"\"Creates volume types.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"e4d38600_a35c42f5","line":54,"range":{"start_line":54,"start_character":22,"end_line":54,"end_character":30},"in_reply_to":"cc83d7b6_f6613030","updated":"2022-05-09 16:50:55.000000000","message":"Done","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fe6646ba59d3f96704e6895ad3d63a83075ce346","unresolved":true,"context_lines":[{"line_number":52,"context_line":"           name: str,"},{"line_number":53,"context_line":"           extra_specs: Optional[Dict[str, Any]] \u003d None,"},{"line_number":54,"context_line":"           is_public: Optional[bool] \u003d True,"},{"line_number":55,"context_line":"           projects\u003dNone,"},{"line_number":56,"context_line":"           description: Optional[str] \u003d None):"},{"line_number":57,"context_line":"    \"\"\"Creates volume types.\"\"\""},{"line_number":58,"context_line":"    extra_specs \u003d extra_specs or {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"64b3478c_96a5181b","line":55,"range":{"start_line":55,"start_character":20,"end_line":55,"end_character":24},"updated":"2022-05-09 14:38:49.000000000","message":"nit: Isn\u0027t this: Optional[List[str]]","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"aa412917293dd2b1a45d2f0a278cc5658b64825d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"           name: str,"},{"line_number":53,"context_line":"           extra_specs: Optional[Dict[str, Any]] \u003d None,"},{"line_number":54,"context_line":"           is_public: Optional[bool] \u003d True,"},{"line_number":55,"context_line":"           projects\u003dNone,"},{"line_number":56,"context_line":"           description: Optional[str] \u003d None):"},{"line_number":57,"context_line":"    \"\"\"Creates volume types.\"\"\""},{"line_number":58,"context_line":"    extra_specs \u003d extra_specs or {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"9e250e6b_b62e99d6","line":55,"range":{"start_line":55,"start_character":20,"end_line":55,"end_character":24},"in_reply_to":"64b3478c_96a5181b","updated":"2022-05-09 16:50:55.000000000","message":"Done","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fe6646ba59d3f96704e6895ad3d63a83075ce346","unresolved":true,"context_lines":[{"line_number":154,"context_line":"                  filters: Optional[dict] \u003d None,"},{"line_number":155,"context_line":"                  marker\u003dNone,"},{"line_number":156,"context_line":"                  limit: Optional[int] \u003d None,"},{"line_number":157,"context_line":"                  sort_keys: Optional[list[str]] \u003d None,"},{"line_number":158,"context_line":"                  sort_dirs: Optional[list[str]] \u003d None,"},{"line_number":159,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":160,"context_line":"                  list_result: Optional[bool] \u003d False) -\u003e Union[dict, list]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"e83fee2f_899c1d6c","line":157,"range":{"start_line":157,"start_character":38,"end_line":157,"end_character":42},"updated":"2022-05-09 14:38:49.000000000","message":"?: Can we use list instead of List? I thought this was like dict and Dict","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"aa412917293dd2b1a45d2f0a278cc5658b64825d","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                  filters: Optional[dict] \u003d None,"},{"line_number":155,"context_line":"                  marker\u003dNone,"},{"line_number":156,"context_line":"                  limit: Optional[int] \u003d None,"},{"line_number":157,"context_line":"                  sort_keys: Optional[list[str]] \u003d None,"},{"line_number":158,"context_line":"                  sort_dirs: Optional[list[str]] \u003d None,"},{"line_number":159,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":160,"context_line":"                  list_result: Optional[bool] \u003d False) -\u003e Union[dict, list]:"}],"source_content_type":"text/x-python","patch_set":7,"id":"2c490ab0_381f99e4","line":157,"range":{"start_line":157,"start_character":38,"end_line":157,"end_character":42},"in_reply_to":"e83fee2f_899c1d6c","updated":"2022-05-09 16:50:55.000000000","message":"Yes, if we import annotations from __future__.  Missing this caused the py38 job to fail.","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fe6646ba59d3f96704e6895ad3d63a83075ce346","unresolved":true,"context_lines":[{"line_number":155,"context_line":"                  marker\u003dNone,"},{"line_number":156,"context_line":"                  limit: Optional[int] \u003d None,"},{"line_number":157,"context_line":"                  sort_keys: Optional[list[str]] \u003d None,"},{"line_number":158,"context_line":"                  sort_dirs: Optional[list[str]] \u003d None,"},{"line_number":159,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":160,"context_line":"                  list_result: Optional[bool] \u003d False) -\u003e Union[dict, list]:"},{"line_number":161,"context_line":"    \"\"\"Get all non-deleted volume_types."}],"source_content_type":"text/x-python","patch_set":7,"id":"22ca2525_ab826254","line":158,"range":{"start_line":158,"start_character":38,"end_line":158,"end_character":42},"updated":"2022-05-09 14:38:49.000000000","message":"ditto","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"aa412917293dd2b1a45d2f0a278cc5658b64825d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                  marker\u003dNone,"},{"line_number":156,"context_line":"                  limit: Optional[int] \u003d None,"},{"line_number":157,"context_line":"                  sort_keys: Optional[list[str]] \u003d None,"},{"line_number":158,"context_line":"                  sort_dirs: Optional[list[str]] \u003d None,"},{"line_number":159,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":160,"context_line":"                  list_result: Optional[bool] \u003d False) -\u003e Union[dict, list]:"},{"line_number":161,"context_line":"    \"\"\"Get all non-deleted volume_types."}],"source_content_type":"text/x-python","patch_set":7,"id":"5060dcf9_cad41222","line":158,"range":{"start_line":158,"start_character":38,"end_line":158,"end_character":42},"in_reply_to":"22ca2525_ab826254","updated":"2022-05-09 16:50:55.000000000","message":"Done","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fe6646ba59d3f96704e6895ad3d63a83075ce346","unresolved":true,"context_lines":[{"line_number":157,"context_line":"                  sort_keys: Optional[list[str]] \u003d None,"},{"line_number":158,"context_line":"                  sort_dirs: Optional[list[str]] \u003d None,"},{"line_number":159,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":160,"context_line":"                  list_result: Optional[bool] \u003d False) -\u003e Union[dict, list]:"},{"line_number":161,"context_line":"    \"\"\"Get all non-deleted volume_types."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    Pass true as argument if you want deleted volume types returned also."}],"source_content_type":"text/x-python","patch_set":7,"id":"f6e1ba38_c86b8d27","line":160,"range":{"start_line":160,"start_character":31,"end_line":160,"end_character":39},"updated":"2022-05-09 14:38:49.000000000","message":"-1: I don\u0027t think this should be Optional, are we passing None somewhere?","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"aa412917293dd2b1a45d2f0a278cc5658b64825d","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                  sort_keys: Optional[list[str]] \u003d None,"},{"line_number":158,"context_line":"                  sort_dirs: Optional[list[str]] \u003d None,"},{"line_number":159,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":160,"context_line":"                  list_result: Optional[bool] \u003d False) -\u003e Union[dict, list]:"},{"line_number":161,"context_line":"    \"\"\"Get all non-deleted volume_types."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    Pass true as argument if you want deleted volume types returned also."}],"source_content_type":"text/x-python","patch_set":7,"id":"2551cc88_e675fe6b","line":160,"range":{"start_line":160,"start_character":31,"end_line":160,"end_character":39},"in_reply_to":"f6e1ba38_c86b8d27","updated":"2022-05-09 16:50:55.000000000","message":"Done","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"fe6646ba59d3f96704e6895ad3d63a83075ce346","unresolved":true,"context_lines":[{"line_number":384,"context_line":"                           {...}}"},{"line_number":385,"context_line":"        }"},{"line_number":386,"context_line":"    \"\"\""},{"line_number":387,"context_line":"    def _fix_qos_specs(qos_specs: dict) -\u003e None:"},{"line_number":388,"context_line":"        if qos_specs:"},{"line_number":389,"context_line":"            for key in QOS_IGNORED_FIELDS:"},{"line_number":390,"context_line":"                qos_specs.pop(key, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"f994c98c_1d399089","line":387,"range":{"start_line":387,"start_character":34,"end_line":387,"end_character":38},"updated":"2022-05-09 14:38:49.000000000","message":"-1: Optional[Dict] because on L431 and 432 we can see value can be None","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"aa412917293dd2b1a45d2f0a278cc5658b64825d","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                           {...}}"},{"line_number":385,"context_line":"        }"},{"line_number":386,"context_line":"    \"\"\""},{"line_number":387,"context_line":"    def _fix_qos_specs(qos_specs: dict) -\u003e None:"},{"line_number":388,"context_line":"        if qos_specs:"},{"line_number":389,"context_line":"            for key in QOS_IGNORED_FIELDS:"},{"line_number":390,"context_line":"                qos_specs.pop(key, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"b334d099_33e6770d","line":387,"range":{"start_line":387,"start_character":34,"end_line":387,"end_character":38},"in_reply_to":"f994c98c_1d399089","updated":"2022-05-09 16:50:55.000000000","message":"Done","commit_id":"d680a678da31a0a325b80d136b0931557caf2d70"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"244807df96734d7f67f26713a7c9b990b36605f5","unresolved":true,"context_lines":[{"line_number":54,"context_line":"           name: str,"},{"line_number":55,"context_line":"           extra_specs: Optional[Dict[str, Any]] \u003d None,"},{"line_number":56,"context_line":"           is_public: bool \u003d True,"},{"line_number":57,"context_line":"           projects: list[str] \u003d None,"},{"line_number":58,"context_line":"           description: Optional[str] \u003d None):"},{"line_number":59,"context_line":"    \"\"\"Creates volume types.\"\"\""},{"line_number":60,"context_line":"    extra_specs \u003d extra_specs or {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"918d564f_0ece837f","line":57,"range":{"start_line":57,"start_character":11,"end_line":57,"end_character":37},"updated":"2022-05-09 17:42:08.000000000","message":"This will fail the no_implicit_optional check if this patch lands first:\n    https://review.opendev.org/c/openstack/cinder/+/782260","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"962f7336c8db4ce36473ab28b00edabe2b5f8def","unresolved":true,"context_lines":[{"line_number":54,"context_line":"           name: str,"},{"line_number":55,"context_line":"           extra_specs: Optional[Dict[str, Any]] \u003d None,"},{"line_number":56,"context_line":"           is_public: bool \u003d True,"},{"line_number":57,"context_line":"           projects: list[str] \u003d None,"},{"line_number":58,"context_line":"           description: Optional[str] \u003d None):"},{"line_number":59,"context_line":"    \"\"\"Creates volume types.\"\"\""},{"line_number":60,"context_line":"    extra_specs \u003d extra_specs or {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"cca67fe2_c9e01058","line":57,"range":{"start_line":57,"start_character":11,"end_line":57,"end_character":37},"in_reply_to":"918d564f_0ece837f","updated":"2022-05-09 21:01:04.000000000","message":"Any reason to not add an Optional here?","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b555462131c9023f394a8c5a0f46c57c240cbfb6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"           name: str,"},{"line_number":55,"context_line":"           extra_specs: Optional[Dict[str, Any]] \u003d None,"},{"line_number":56,"context_line":"           is_public: bool \u003d True,"},{"line_number":57,"context_line":"           projects: list[str] \u003d None,"},{"line_number":58,"context_line":"           description: Optional[str] \u003d None):"},{"line_number":59,"context_line":"    \"\"\"Creates volume types.\"\"\""},{"line_number":60,"context_line":"    extra_specs \u003d extra_specs or {}"}],"source_content_type":"text/x-python","patch_set":8,"id":"f4fb343d_48f5e518","line":57,"range":{"start_line":57,"start_character":11,"end_line":57,"end_character":37},"in_reply_to":"cca67fe2_c9e01058","updated":"2022-05-10 13:06:55.000000000","message":"Done","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"962f7336c8db4ce36473ab28b00edabe2b5f8def","unresolved":true,"context_lines":[{"line_number":111,"context_line":"        raise exception.VolumeTypeUpdateFailed(id\u003did)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"def destroy(context: context.RequestContext, id: str) -\u003e dict:"},{"line_number":115,"context_line":"    \"\"\"Marks volume types as deleted."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    There must exist at least one volume type (i.e. the default type) in"}],"source_content_type":"text/x-python","patch_set":8,"id":"a70985b8_899f7a8a","line":114,"range":{"start_line":114,"start_character":57,"end_line":114,"end_character":61},"updated":"2022-05-09 21:01:04.000000000","message":"VolumeTypeDict?","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b555462131c9023f394a8c5a0f46c57c240cbfb6","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        raise exception.VolumeTypeUpdateFailed(id\u003did)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"def destroy(context: context.RequestContext, id: str) -\u003e dict:"},{"line_number":115,"context_line":"    \"\"\"Marks volume types as deleted."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    There must exist at least one volume type (i.e. the default type) in"}],"source_content_type":"text/x-python","patch_set":8,"id":"18637b7a_76f200c2","line":114,"range":{"start_line":114,"start_character":57,"end_line":114,"end_character":61},"in_reply_to":"a70985b8_899f7a8a","updated":"2022-05-10 13:06:55.000000000","message":"Done","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"962f7336c8db4ce36473ab28b00edabe2b5f8def","unresolved":true,"context_lines":[{"line_number":154,"context_line":"def get_all_types(context: context.RequestContext,"},{"line_number":155,"context_line":"                  inactive: int \u003d 0,"},{"line_number":156,"context_line":"                  filters: Optional[dict] \u003d None,"},{"line_number":157,"context_line":"                  marker\u003dNone,"},{"line_number":158,"context_line":"                  limit: Optional[int] \u003d None,"},{"line_number":159,"context_line":"                  sort_keys: Optional[list[str]] \u003d None,"},{"line_number":160,"context_line":"                  sort_dirs: Optional[list[str]] \u003d None,"}],"source_content_type":"text/x-python","patch_set":8,"id":"21a2688e_b03cce7e","line":157,"updated":"2022-05-09 21:01:04.000000000","message":"From cinder/db/sqlalchemy/api.py, marker is \"the last item of the previous page, used to determine the next page of results to return.\"\n\nSo would this be accurate?\n\n                 marker: Optional[VolumeTypeDict],","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b555462131c9023f394a8c5a0f46c57c240cbfb6","unresolved":false,"context_lines":[{"line_number":154,"context_line":"def get_all_types(context: context.RequestContext,"},{"line_number":155,"context_line":"                  inactive: int \u003d 0,"},{"line_number":156,"context_line":"                  filters: Optional[dict] \u003d None,"},{"line_number":157,"context_line":"                  marker\u003dNone,"},{"line_number":158,"context_line":"                  limit: Optional[int] \u003d None,"},{"line_number":159,"context_line":"                  sort_keys: Optional[list[str]] \u003d None,"},{"line_number":160,"context_line":"                  sort_dirs: Optional[list[str]] \u003d None,"}],"source_content_type":"text/x-python","patch_set":8,"id":"43fc348e_c701be30","line":157,"in_reply_to":"21a2688e_b03cce7e","updated":"2022-05-10 13:06:55.000000000","message":"Done","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"962f7336c8db4ce36473ab28b00edabe2b5f8def","unresolved":true,"context_lines":[{"line_number":159,"context_line":"                  sort_keys: Optional[list[str]] \u003d None,"},{"line_number":160,"context_line":"                  sort_dirs: Optional[list[str]] \u003d None,"},{"line_number":161,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":162,"context_line":"                  list_result: bool \u003d False) -\u003e Union[dict, list]:"},{"line_number":163,"context_line":"    \"\"\"Get all non-deleted volume_types."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    Pass true as argument if you want deleted volume types returned also."}],"source_content_type":"text/x-python","patch_set":8,"id":"8bd3a5cc_1e5b9048","line":162,"range":{"start_line":162,"start_character":54,"end_line":162,"end_character":58},"updated":"2022-05-09 21:01:04.000000000","message":"VolumeTypeDict?","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b555462131c9023f394a8c5a0f46c57c240cbfb6","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                  sort_keys: Optional[list[str]] \u003d None,"},{"line_number":160,"context_line":"                  sort_dirs: Optional[list[str]] \u003d None,"},{"line_number":161,"context_line":"                  offset: Optional[int] \u003d None,"},{"line_number":162,"context_line":"                  list_result: bool \u003d False) -\u003e Union[dict, list]:"},{"line_number":163,"context_line":"    \"\"\"Get all non-deleted volume_types."},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    Pass true as argument if you want deleted volume types returned also."}],"source_content_type":"text/x-python","patch_set":8,"id":"09fe1e51_ca68bd25","line":162,"range":{"start_line":162,"start_character":54,"end_line":162,"end_character":58},"in_reply_to":"8bd3a5cc_1e5b9048","updated":"2022-05-10 13:06:55.000000000","message":"Done","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"962f7336c8db4ce36473ab28b00edabe2b5f8def","unresolved":true,"context_lines":[{"line_number":392,"context_line":"                qos_specs.pop(key, None)"},{"line_number":393,"context_line":"            qos_specs.update(qos_specs.pop(\u0027specs\u0027, {}))"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def _fix_encryption_specs(encryption: dict) -\u003e dict:"},{"line_number":396,"context_line":"        if encryption:"},{"line_number":397,"context_line":"            encryption \u003d dict(encryption)"},{"line_number":398,"context_line":"            for param in ENCRYPTION_IGNORED_FIELDS:"}],"source_content_type":"text/x-python","patch_set":8,"id":"860b60e0_66a96e89","line":395,"range":{"start_line":395,"start_character":42,"end_line":395,"end_character":46},"updated":"2022-05-09 21:01:04.000000000","message":"Optional[dict] per L396","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b555462131c9023f394a8c5a0f46c57c240cbfb6","unresolved":false,"context_lines":[{"line_number":392,"context_line":"                qos_specs.pop(key, None)"},{"line_number":393,"context_line":"            qos_specs.update(qos_specs.pop(\u0027specs\u0027, {}))"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"    def _fix_encryption_specs(encryption: dict) -\u003e dict:"},{"line_number":396,"context_line":"        if encryption:"},{"line_number":397,"context_line":"            encryption \u003d dict(encryption)"},{"line_number":398,"context_line":"            for param in ENCRYPTION_IGNORED_FIELDS:"}],"source_content_type":"text/x-python","patch_set":8,"id":"d519cedf_eaa0474e","line":395,"range":{"start_line":395,"start_character":42,"end_line":395,"end_character":46},"in_reply_to":"860b60e0_66a96e89","updated":"2022-05-10 13:06:55.000000000","message":"Done","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":21129,"name":"Alan Bishop","email":"abishopsweng@gmail.com","username":"ASBishop","status":"ex Red Hat"},"change_message_id":"962f7336c8db4ce36473ab28b00edabe2b5f8def","unresolved":true,"context_lines":[{"line_number":421,"context_line":"    diff \u003d {}"},{"line_number":422,"context_line":"    vol_type_data \u003d []"},{"line_number":423,"context_line":"    for vol_type_id in (vol_type_id1, vol_type_id2):"},{"line_number":424,"context_line":"        specs: Dict[str, Any]"},{"line_number":425,"context_line":"        if vol_type_id is None:"},{"line_number":426,"context_line":"            specs \u003d {\u0027extra_specs\u0027: None,"},{"line_number":427,"context_line":"                     \u0027qos_specs\u0027: None,"}],"source_content_type":"text/x-python","patch_set":8,"id":"29234a39_53ea24fe","line":424,"updated":"2022-05-09 21:01:04.000000000","message":"What does this do?","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5210da5e23fb4617e2f491d62369c62790ce58b6","unresolved":false,"context_lines":[{"line_number":421,"context_line":"    diff \u003d {}"},{"line_number":422,"context_line":"    vol_type_data \u003d []"},{"line_number":423,"context_line":"    for vol_type_id in (vol_type_id1, vol_type_id2):"},{"line_number":424,"context_line":"        specs: Dict[str, Any]"},{"line_number":425,"context_line":"        if vol_type_id is None:"},{"line_number":426,"context_line":"            specs \u003d {\u0027extra_specs\u0027: None,"},{"line_number":427,"context_line":"                     \u0027qos_specs\u0027: None,"}],"source_content_type":"text/x-python","patch_set":8,"id":"2d6bced4_a8c0bf72","line":424,"in_reply_to":"1c1f5502_d527ad05","updated":"2022-05-10 15:55:56.000000000","message":"Done","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b555462131c9023f394a8c5a0f46c57c240cbfb6","unresolved":true,"context_lines":[{"line_number":421,"context_line":"    diff \u003d {}"},{"line_number":422,"context_line":"    vol_type_data \u003d []"},{"line_number":423,"context_line":"    for vol_type_id in (vol_type_id1, vol_type_id2):"},{"line_number":424,"context_line":"        specs: Dict[str, Any]"},{"line_number":425,"context_line":"        if vol_type_id is None:"},{"line_number":426,"context_line":"            specs \u003d {\u0027extra_specs\u0027: None,"},{"line_number":427,"context_line":"                     \u0027qos_specs\u0027: None,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1c1f5502_d527ad05","line":424,"in_reply_to":"29234a39_53ea24fe","updated":"2022-05-10 13:06:55.000000000","message":"I probably had it here when using some narrower types while working on this, since lines 426 and 430 imply different types for \"specs\", but it seems to not be needed now, so I\u0027ll remove it.","commit_id":"187142ccaef8e942ad9b34baa4e8ab9b8f42af9e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cc281284b0cbf2d6a191dab59c09f003131c135e","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        LOG.exception(\u0027DB error:\u0027)"},{"line_number":72,"context_line":"        raise exception.VolumeTypeCreateFailed(name\u003dname,"},{"line_number":73,"context_line":"                                               extra_specs\u003dextra_specs)"},{"line_number":74,"context_line":"    return type_ref"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def update(context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":9,"id":"8c31073f_e401e788","line":74,"range":{"start_line":74,"start_character":11,"end_line":74,"end_character":19},"updated":"2022-05-10 13:11:52.000000000","message":"I guess with the extra layer of the cinder.db.api, we really have no idea what type this thing is.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5210da5e23fb4617e2f491d62369c62790ce58b6","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        LOG.exception(\u0027DB error:\u0027)"},{"line_number":72,"context_line":"        raise exception.VolumeTypeCreateFailed(name\u003dname,"},{"line_number":73,"context_line":"                                               extra_specs\u003dextra_specs)"},{"line_number":74,"context_line":"    return type_ref"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def update(context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":9,"id":"a5825395_d4afcb71","line":74,"range":{"start_line":74,"start_character":11,"end_line":74,"end_character":19},"in_reply_to":"8c31073f_e401e788","updated":"2022-05-10 15:55:56.000000000","message":"I\u0027ll poke at this.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"98b5e1edf8e28107548016c7e04f9cb926663ce9","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        LOG.exception(\u0027DB error:\u0027)"},{"line_number":72,"context_line":"        raise exception.VolumeTypeCreateFailed(name\u003dname,"},{"line_number":73,"context_line":"                                               extra_specs\u003dextra_specs)"},{"line_number":74,"context_line":"    return type_ref"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def update(context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":9,"id":"cce6457a_2e06cd94","line":74,"range":{"start_line":74,"start_character":11,"end_line":74,"end_character":19},"in_reply_to":"a5825395_d4afcb71","updated":"2022-05-10 19:03:40.000000000","message":"It\u0027s a cinder.db.sqlalchemy.models.VolumeType object.  Not sure how to best annotate that given our move to get rid of cinder.db.sqlalchemy soon...","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"b5080367119efd0ddfc8f25807cd29a33655159b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        LOG.exception(\u0027DB error:\u0027)"},{"line_number":72,"context_line":"        raise exception.VolumeTypeCreateFailed(name\u003dname,"},{"line_number":73,"context_line":"                                               extra_specs\u003dextra_specs)"},{"line_number":74,"context_line":"    return type_ref"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def update(context: context.RequestContext,"}],"source_content_type":"text/x-python","patch_set":9,"id":"ee3c1531_ef5bedf0","line":74,"range":{"start_line":74,"start_character":11,"end_line":74,"end_character":19},"in_reply_to":"cce6457a_2e06cd94","updated":"2022-05-24 13:54:40.000000000","message":"Ack","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cc281284b0cbf2d6a191dab59c09f003131c135e","unresolved":true,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"def get_all_types(context: context.RequestContext,"},{"line_number":155,"context_line":"                  inactive: int \u003d 0,"},{"line_number":156,"context_line":"                  filters: Optional[dict] \u003d None,"},{"line_number":157,"context_line":"                  marker: Optional[VolumeTypeDict] \u003d None,"},{"line_number":158,"context_line":"                  limit: Optional[int] \u003d None,"}],"source_content_type":"text/x-python","patch_set":9,"id":"78fe3842_032ca832","line":155,"range":{"start_line":155,"start_character":18,"end_line":155,"end_character":36},"updated":"2022-05-10 13:11:52.000000000","message":"Both the db.api and db.sqlalchemy.api expect to be receiving a boolean at line 168, and we\u0027re not doing any conversion before making that call.\n\nhttps://review.opendev.org/c/openstack/cinder/+/835881/9/cinder/db/api.py#754\nhttps://review.opendev.org/c/openstack/cinder/+/835881/9/cinder/db/sqlalchemy/api.py#4050","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"d5cb09c3c54f28f26c96d8b6081233d4656cba23","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"def get_all_types(context: context.RequestContext,"},{"line_number":155,"context_line":"                  inactive: int \u003d 0,"},{"line_number":156,"context_line":"                  filters: Optional[dict] \u003d None,"},{"line_number":157,"context_line":"                  marker: Optional[VolumeTypeDict] \u003d None,"},{"line_number":158,"context_line":"                  limit: Optional[int] \u003d None,"}],"source_content_type":"text/x-python","patch_set":9,"id":"90892bb6_b1f21e45","line":155,"range":{"start_line":155,"start_character":18,"end_line":155,"end_character":36},"in_reply_to":"112aae8f_44ba1755","updated":"2022-05-17 22:28:36.000000000","message":"Removing it makes sense, so I think this is OK as an int for now.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5210da5e23fb4617e2f491d62369c62790ce58b6","unresolved":true,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"def get_all_types(context: context.RequestContext,"},{"line_number":155,"context_line":"                  inactive: int \u003d 0,"},{"line_number":156,"context_line":"                  filters: Optional[dict] \u003d None,"},{"line_number":157,"context_line":"                  marker: Optional[VolumeTypeDict] \u003d None,"},{"line_number":158,"context_line":"                  limit: Optional[int] \u003d None,"}],"source_content_type":"text/x-python","patch_set":9,"id":"112aae8f_44ba1755","line":155,"range":{"start_line":155,"start_character":18,"end_line":155,"end_character":36},"in_reply_to":"78fe3842_032ca832","updated":"2022-05-10 15:55:56.000000000","message":"If you look at the volume_type_get_all method in sqlalchemy/api.py, it looks like this parameter does nothing anyway, because it isn\u0027t actually used there... submitted this patch to remove it:\n    https://review.opendev.org/c/openstack/cinder/+/841302","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"cc281284b0cbf2d6a191dab59c09f003131c135e","unresolved":true,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"def get_volume_type("},{"line_number":177,"context_line":"        ctxt: context.RequestContext,"},{"line_number":178,"context_line":"        id: Optional[str],"},{"line_number":179,"context_line":"        expected_fields: Optional[Iterable[str]] \u003d None) -\u003e VolumeTypeDict:"},{"line_number":180,"context_line":"    \"\"\"Retrieves single volume type by id.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"11f97d5d_4bcf9b52","line":177,"range":{"start_line":177,"start_character":14,"end_line":177,"end_character":36},"updated":"2022-05-10 13:11:52.000000000","message":"from line 185, looks like ctxt could be None?","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5210da5e23fb4617e2f491d62369c62790ce58b6","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"def get_volume_type("},{"line_number":177,"context_line":"        ctxt: context.RequestContext,"},{"line_number":178,"context_line":"        id: Optional[str],"},{"line_number":179,"context_line":"        expected_fields: Optional[Iterable[str]] \u003d None) -\u003e VolumeTypeDict:"},{"line_number":180,"context_line":"    \"\"\"Retrieves single volume type by id.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"96b6988d_29de2cb8","line":177,"range":{"start_line":177,"start_character":14,"end_line":177,"end_character":36},"in_reply_to":"11f97d5d_4bcf9b52","updated":"2022-05-10 15:55:56.000000000","message":"Yes, will update this.","commit_id":"5dd65aff18c6f1b3c8fe13458f8ee54e9fefce2e"}]}
