)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e563305c61d22688ddc35e68a101ea81f9f3f992","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0b5bee4f_ecf0150a","updated":"2024-10-17 13:11:25.000000000","message":"Thanks, Takashi! Very nice work.","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"f925ce90502479560469fde133c2678a838cd4be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9f5d1b4f_0903e182","updated":"2024-10-18 15:46:02.000000000","message":"recheck","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e7e391527ce986c96a264875f9ac0382c836b014","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"fae6d6e5_3f1288ea","updated":"2024-10-18 00:52:26.000000000","message":"recheck different jobs failed this time...","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"53cf523dd232a63a4b402452fc7b57c12fc9e31e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"57b6ae9d_19d11ef5","updated":"2024-10-17 21:39:57.000000000","message":"recheck the failure appears randomly... probably it\u0027s a timing problem we have to look into later.","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"d03f6095acb748117a7d2a07bb957873dd81072f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cce2cd97_2ce0aff7","updated":"2024-10-18 07:54:07.000000000","message":"recheck the failure is not really consistent","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"}],"cinder/backup/manager.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e563305c61d22688ddc35e68a101ea81f9f3f992","unresolved":true,"context_lines":[{"line_number":384,"context_line":"        self._notify_about_backup_usage(context, backup, \"create.start\")"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"        expected_status \u003d \"backing-up\""},{"line_number":387,"context_line":"        if snapshot:"},{"line_number":388,"context_line":"            actual_status \u003d snapshot[\u0027status\u0027]"},{"line_number":389,"context_line":"            if actual_status !\u003d expected_status:"},{"line_number":390,"context_line":"                err \u003d _(\u0027Create backup aborted, expected snapshot status \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"7e18fe99_17bd9071","line":387,"updated":"2024-10-17 13:11:25.000000000","message":"This is set at line 365, and since it\u0027s what we\u0027re using in this block, it makes sense to gate on this rather than the id.","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"}],"cinder/volume/flows/api/create_volume.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"5ceedaf44767e393f7ab4b61e598e6b939bd0ea7","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        volume_type \u003d self._get_volume_type("},{"line_number":473,"context_line":"            context, volume_type, source_volume, snapshot, image_volume_type)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        volume_type_id \u003d volume_type.get(\u0027id\u0027)"},{"line_number":476,"context_line":""},{"line_number":477,"context_line":"        availability_zones, refresh_az \u003d self._extract_availability_zones("},{"line_number":478,"context_line":"            availability_zone, snapshot, source_volume, group,"}],"source_content_type":"text/x-python","patch_set":2,"id":"cd46cc79_8f70da76","line":475,"updated":"2024-10-15 19:06:52.000000000","message":"_get_volume_type() never returns None, so this looks right.","commit_id":"930d2976749b3748a03086660c02d47586157125"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e563305c61d22688ddc35e68a101ea81f9f3f992","unresolved":true,"context_lines":[{"line_number":356,"context_line":"            self,"},{"line_number":357,"context_line":"            key_manager,"},{"line_number":358,"context_line":"            context: context.RequestContext,"},{"line_number":359,"context_line":"            volume_type_id: Optional[str],"},{"line_number":360,"context_line":"            snapshot: Optional[objects.Snapshot],"},{"line_number":361,"context_line":"            source_volume: Optional[objects.Volume],"},{"line_number":362,"context_line":"            image_metadata: Optional[dict[str, Any]]) -\u003e Optional[str]:"}],"source_content_type":"text/x-python","patch_set":5,"id":"66987fc8_a73d86ce","line":359,"updated":"2024-10-17 13:11:25.000000000","message":"See line 476 for why we have to do this.","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e563305c61d22688ddc35e68a101ea81f9f3f992","unresolved":true,"context_lines":[{"line_number":360,"context_line":"            snapshot: Optional[objects.Snapshot],"},{"line_number":361,"context_line":"            source_volume: Optional[objects.Volume],"},{"line_number":362,"context_line":"            image_metadata: Optional[dict[str, Any]]) -\u003e Optional[str]:"},{"line_number":363,"context_line":"        if volume_type_id and volume_types.is_encrypted("},{"line_number":364,"context_line":"                context, volume_type_id):"},{"line_number":365,"context_line":"            encryption_key_id \u003d None"},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"be7eaa21_a5fa5da9","line":363,"range":{"start_line":363,"start_character":11,"end_line":363,"end_character":25},"updated":"2024-10-17 13:11:25.000000000","message":"I thought your change to volume_types.is_encrypted() would make the left side of the conjunction unnecessary, but we still need to check it because it\u0027s not Optional in volume_utils.create_encryption_key() [0], which we call at line 387.\n\n[0] https://opendev.org/openstack/cinder/src/commit/8c5b35a1a96b10fa3af657e5ca83004278096ddf/cinder/volume/volume_utils.py#L953","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e563305c61d22688ddc35e68a101ea81f9f3f992","unresolved":true,"context_lines":[{"line_number":473,"context_line":"        volume_type \u003d self._get_volume_type("},{"line_number":474,"context_line":"            context, volume_type, source_volume, snapshot, image_volume_type)"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        volume_type_id \u003d volume_type.get(\u0027id\u0027) if volume_type else None"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        availability_zones, refresh_az \u003d self._extract_availability_zones("},{"line_number":479,"context_line":"            availability_zone, snapshot, source_volume, group,"}],"source_content_type":"text/x-python","patch_set":5,"id":"be4f36c3_c74abc75","line":476,"updated":"2024-10-17 13:11:25.000000000","message":"OK, this is why we need to allow the Optional in the method signature for \u0027_get_encryption_key_id\u0027 even though we have not allowed there to be untyped volumes since somewhere around the Train timeframe.","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"}],"cinder/volume/volume_types.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e563305c61d22688ddc35e68a101ea81f9f3f992","unresolved":true,"context_lines":[{"line_number":324,"context_line":""},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"def is_encrypted(context: context.RequestContext,"},{"line_number":327,"context_line":"                 volume_type_id: Optional[str]) -\u003e bool:"},{"line_number":328,"context_line":"    return get_volume_type_encryption(context, volume_type_id) is not None"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"a1d6403a_8e2bcf0c","line":327,"updated":"2024-10-17 13:11:25.000000000","message":"I hate to see this as Optional, but it makes this function signature consistent with get_volume_type_encryption() (see line 333), so I think it\u0027s the right way to go for now (see my comment at line 447).","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"e563305c61d22688ddc35e68a101ea81f9f3f992","unresolved":true,"context_lines":[{"line_number":444,"context_line":""},{"line_number":445,"context_line":"def volume_types_encryption_changed("},{"line_number":446,"context_line":"        context: context.RequestContext,"},{"line_number":447,"context_line":"        vol_type_id1: Optional[str], vol_type_id2: Optional[str]) -\u003e bool:"},{"line_number":448,"context_line":"    \"\"\"Return whether encryptions of two volume types are same.\"\"\""},{"line_number":449,"context_line":"    def _get_encryption(enc: dict) -\u003e dict:"},{"line_number":450,"context_line":"        enc \u003d dict(enc)"}],"source_content_type":"text/x-python","patch_set":5,"id":"93a33cf8_d099e5a5","line":447,"updated":"2024-10-17 13:11:25.000000000","message":"Need this change because of the way it\u0027s called at\nhttps://opendev.org/openstack/cinder/src/commit/8c5b35a1a96b10fa3af657e5ca83004278096ddf/cinder/volume/api.py#L171-L172\n\nWe shouldn\u0027t really need those null reference checks, but I guess we\u0027re stuck for now.  The good thing is that if we have really good mypy coverage, we should be able to make volume types non-Optional everywhere without breaking anything.","commit_id":"a820cd461925c3d6f61a8527bc4bcc4df844a687"}]}
