)]}'
{"cinder/tests/unit/volume/test_volume_retype.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"4003dd828bf848c43d88f4d81e43c46d03568d68","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                               vol,"},{"line_number":100,"context_line":"                               \u0027fake_vol_type2\u0027)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        mock_authorize.assert_has_calls("},{"line_number":103,"context_line":"            [mock.call(vol_action_policies.RETYPE_POLICY, target_obj\u003dmock.ANY),"},{"line_number":104,"context_line":"             ])"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_47e1cacf","line":102,"updated":"2020-07-16 09:31:48.000000000","message":"I think we only have 1 call and should use mock_authorize.assert_called_once_with instead","commit_id":"106b38eadebf52bdaa76ea587cef2c81a7958914"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8ebfdf963e61a9e684b2743d0b1a0791d15892c5","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                               vol,"},{"line_number":100,"context_line":"                               \u0027fake_vol_type2\u0027)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        mock_authorize.assert_has_calls("},{"line_number":103,"context_line":"            [mock.call(vol_action_policies.RETYPE_POLICY, target_obj\u003dmock.ANY),"},{"line_number":104,"context_line":"             ])"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_f8423b3a","line":102,"in_reply_to":"bf51134e_47e1cacf","updated":"2020-07-16 12:14:38.000000000","message":"Done","commit_id":"106b38eadebf52bdaa76ea587cef2c81a7958914"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"4003dd828bf848c43d88f4d81e43c46d03568d68","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            \u0027availability_zones\u0027: [\u0027nova\u0027],"},{"line_number":114,"context_line":"        }"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        mock_rpc.assert_has_calls("},{"line_number":117,"context_line":"            [mock.call(self.user_context, mock.ANY,"},{"line_number":118,"context_line":"                       request_spec\u003dfake_spec,"},{"line_number":119,"context_line":"                       filter_properties\u003dmock.ANY)]"},{"line_number":120,"context_line":"        )"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":123,"context_line":"    def test_non_multi_to_multi_retype(self, mock_authorize):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_27c3f639","line":120,"range":{"start_line":116,"start_character":0,"end_line":120,"end_character":9},"updated":"2020-07-16 09:31:48.000000000","message":"We should use: mock_rpc.assert_called_once_with","commit_id":"106b38eadebf52bdaa76ea587cef2c81a7958914"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8ebfdf963e61a9e684b2743d0b1a0791d15892c5","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            \u0027availability_zones\u0027: [\u0027nova\u0027],"},{"line_number":114,"context_line":"        }"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        mock_rpc.assert_has_calls("},{"line_number":117,"context_line":"            [mock.call(self.user_context, mock.ANY,"},{"line_number":118,"context_line":"                       request_spec\u003dfake_spec,"},{"line_number":119,"context_line":"                       filter_properties\u003dmock.ANY)]"},{"line_number":120,"context_line":"        )"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    @mock.patch(\u0027cinder.context.RequestContext.authorize\u0027)"},{"line_number":123,"context_line":"    def test_non_multi_to_multi_retype(self, mock_authorize):"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_387af386","line":120,"range":{"start_line":116,"start_character":0,"end_line":120,"end_character":9},"in_reply_to":"bf51134e_27c3f639","updated":"2020-07-16 12:14:38.000000000","message":"Done","commit_id":"106b38eadebf52bdaa76ea587cef2c81a7958914"}],"cinder/volume/api.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"a164a8e77518f491f2ff139949b90129efb4f983","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"                        \u0027migration_policy\u0027: migration_policy,"},{"line_number":1742,"context_line":"                        \u0027quota_reservations\u0027: reservations,"},{"line_number":1743,"context_line":"                        \u0027old_reservations\u0027: old_reservations,"},{"line_number":1744,"context_line":"                        \u0027resource_properties\u0027: {"},{"line_number":1745,"context_line":"                            \u0027availability_zone\u0027: volume.availability_zone"},{"line_number":1746,"context_line":"                        }}"},{"line_number":1747,"context_line":""},{"line_number":1748,"context_line":"        type_azs \u003d volume_utils.extract_availability_zones_from_volume_type("},{"line_number":1749,"context_line":"            new_type)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_9f1c3e78","line":1746,"range":{"start_line":1744,"start_character":0,"end_line":1746,"end_character":26},"updated":"2020-07-08 15:28:50.000000000","message":"-1: This doesn\u0027t look right.  To me the bug isn\u0027t here and it\u0027s somewhere else.\n\nIt\u0027s either in the AvailabilityZoneFilter, that isn\u0027t using \u0027volume_properties\u0027 (where we have the volume\u0027s availability zone) and itt\u0027s using \u0027resource_properties\u0027 instead.\n\nOr it can also be that we need to move the code were we set \u0027resource_properties\u0027 in the the scheduler [1] to an earlier stage on the scheduler request processing\n\nI\u0027m inclined to think it\u0027s the latter.\n\nPS: All this would get fixed if we were actually using OVOs instead of dictionaries, since the RequestSpec OVO already has the \"resource_properties\" property.\n\n\n[1]: https://github.com/openstack/cinder/blob/a323a026f432e5ffb1d34ea52894e8f467f7bbfd/cinder/scheduler/filter_scheduler.py#L374-L381","commit_id":"81a8745de2c1e895b83659e85ec46bfc05891007"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"a17c81d5f69a3303028d846b58df790ac70be85f","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"                        \u0027migration_policy\u0027: migration_policy,"},{"line_number":1742,"context_line":"                        \u0027quota_reservations\u0027: reservations,"},{"line_number":1743,"context_line":"                        \u0027old_reservations\u0027: old_reservations,"},{"line_number":1744,"context_line":"                        \u0027resource_properties\u0027: {"},{"line_number":1745,"context_line":"                            \u0027availability_zone\u0027: volume.availability_zone"},{"line_number":1746,"context_line":"                        }}"},{"line_number":1747,"context_line":""},{"line_number":1748,"context_line":"        type_azs \u003d volume_utils.extract_availability_zones_from_volume_type("},{"line_number":1749,"context_line":"            new_type)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_707838c3","line":1746,"range":{"start_line":1744,"start_character":0,"end_line":1746,"end_character":26},"in_reply_to":"bf51134e_5410b24e","updated":"2020-07-13 18:49:41.000000000","message":"The AZFilter is what\u0027s looking for it, and it\u0027s never been available specifically only for the retype method.   It should be added in the API call, like all the other fields are.  I don\u0027t think it\u0027s proper to have the scheduler updating/changing the request spec that\u0027s coming from the API.","commit_id":"81a8745de2c1e895b83659e85ec46bfc05891007"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"b87a2d4e157d98f2401a11407e09bc881122a014","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"                        \u0027migration_policy\u0027: migration_policy,"},{"line_number":1742,"context_line":"                        \u0027quota_reservations\u0027: reservations,"},{"line_number":1743,"context_line":"                        \u0027old_reservations\u0027: old_reservations,"},{"line_number":1744,"context_line":"                        \u0027resource_properties\u0027: {"},{"line_number":1745,"context_line":"                            \u0027availability_zone\u0027: volume.availability_zone"},{"line_number":1746,"context_line":"                        }}"},{"line_number":1747,"context_line":""},{"line_number":1748,"context_line":"        type_azs \u003d volume_utils.extract_availability_zones_from_volume_type("},{"line_number":1749,"context_line":"            new_type)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_5410b24e","line":1746,"range":{"start_line":1744,"start_character":0,"end_line":1746,"end_character":26},"in_reply_to":"bf51134e_5a958386","updated":"2020-07-09 16:18:05.000000000","message":"I agree, the OVO stuff should not be covered in this patch to fix this.\n\nBut I if our code still looks for that specific location, the more reason to fix it on the scheduler, because we could still be missing other data in \u0027resource_properties\u0027 that is used by other scheduler filters.\n\nFor this specific bug we could do\n  `\u0027resource_properties\u0027: volume,`\n\nBut that duplicates data on the RPC transmission, so it would be better to add it on the other end [1]:\n\n    setdefault(request_spec, \u0027resource_properties\u0027, request_spec[\u0027volume_properties\u0027])\n\nAlthough if this is aproblem it should probably be added with a decorator to all the scheduler manager methods that receive a request_spec.\n\n[1]: https://github.com/openstack/cinder/blob/a323a026f432e5ffb1d34ea52894e8f467f7bbfd/cinder/scheduler/manager.py#L350","commit_id":"81a8745de2c1e895b83659e85ec46bfc05891007"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"65a2d289987d691c2e71f55bbfded0a9486e2c0a","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"                        \u0027migration_policy\u0027: migration_policy,"},{"line_number":1742,"context_line":"                        \u0027quota_reservations\u0027: reservations,"},{"line_number":1743,"context_line":"                        \u0027old_reservations\u0027: old_reservations,"},{"line_number":1744,"context_line":"                        \u0027resource_properties\u0027: {"},{"line_number":1745,"context_line":"                            \u0027availability_zone\u0027: volume.availability_zone"},{"line_number":1746,"context_line":"                        }}"},{"line_number":1747,"context_line":""},{"line_number":1748,"context_line":"        type_azs \u003d volume_utils.extract_availability_zones_from_volume_type("},{"line_number":1749,"context_line":"            new_type)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_ae9ff6b1","line":1746,"range":{"start_line":1744,"start_character":0,"end_line":1746,"end_character":26},"in_reply_to":"bf51134e_707838c3","updated":"2020-07-15 11:12:05.000000000","message":"In this case \"resource_properties\" is the old name which was used back when we used filters from oslo incubator, but the same field was renamed to \"volume_properties\" on the filters when we imported them into our project, so their contents should be the same.  So it looks like we forgot to update the AvailabilityZoneFilter when we imported it [0]. \n\nIn any case, once the scheduler receives the request from the API it is acceptable to massage the data to match its needs.  In this case add a field for backward compatibility.  And this is something we are already doing [1].\n\nYou can see how \"resource_properties\" and \"volume_properties\" must be the same thing by the treatment we give to the former in our OVO where we throw it away [2] and replace it with a property [3] that returns the \"volume_properties\".\n\n\n[0]: https://review.opendev.org/#/c/249255/\n\n[1]: https://github.com/openstack/cinder/blob/a323a026f432e5ffb1d34ea52894e8f467f7bbfd/cinder/scheduler/filter_scheduler.py#L374-L381\n\n[2]: https://github.com/openstack/cinder/blob/cdfee5608b725e6be35d85f5b04cf51dc756cac5/cinder/objects/request_spec.py#L91\n\n[3]: https://github.com/openstack/cinder/blob/cdfee5608b725e6be35d85f5b04cf51dc756cac5/cinder/objects/request_spec.py#L56-L57","commit_id":"81a8745de2c1e895b83659e85ec46bfc05891007"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"72c69570bc642a5948d48c1995d3200810e455b9","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"                        \u0027migration_policy\u0027: migration_policy,"},{"line_number":1742,"context_line":"                        \u0027quota_reservations\u0027: reservations,"},{"line_number":1743,"context_line":"                        \u0027old_reservations\u0027: old_reservations,"},{"line_number":1744,"context_line":"                        \u0027resource_properties\u0027: {"},{"line_number":1745,"context_line":"                            \u0027availability_zone\u0027: volume.availability_zone"},{"line_number":1746,"context_line":"                        }}"},{"line_number":1747,"context_line":""},{"line_number":1748,"context_line":"        type_azs \u003d volume_utils.extract_availability_zones_from_volume_type("},{"line_number":1749,"context_line":"            new_type)"}],"source_content_type":"text/x-python","patch_set":2,"id":"bf51134e_5a958386","line":1746,"range":{"start_line":1744,"start_character":0,"end_line":1746,"end_character":26},"in_reply_to":"bf51134e_9f1c3e78","updated":"2020-07-09 11:48:45.000000000","message":"Changing the AZFilter to not use the already existing resource_properties might break things elsewhere.   It\u0027s been looking for this specific location forever.   It\u0027s just never worked because the resource_properties field was never provided.   This provides what it is already looking for.  Migrating to OVO is a different topic completely, and this fixes the bug.","commit_id":"81a8745de2c1e895b83659e85ec46bfc05891007"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"4003dd828bf848c43d88f4d81e43c46d03568d68","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"                        \u0027migration_policy\u0027: migration_policy,"},{"line_number":1742,"context_line":"                        \u0027quota_reservations\u0027: reservations,"},{"line_number":1743,"context_line":"                        \u0027old_reservations\u0027: old_reservations,"},{"line_number":1744,"context_line":"                        }"},{"line_number":1745,"context_line":""},{"line_number":1746,"context_line":"        type_azs \u003d volume_utils.extract_availability_zones_from_volume_type("},{"line_number":1747,"context_line":"            new_type)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_c7903a51","line":1744,"updated":"2020-07-16 09:31:48.000000000","message":"nit: unnecessary change","commit_id":"106b38eadebf52bdaa76ea587cef2c81a7958914"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"8ebfdf963e61a9e684b2743d0b1a0791d15892c5","unresolved":false,"context_lines":[{"line_number":1741,"context_line":"                        \u0027migration_policy\u0027: migration_policy,"},{"line_number":1742,"context_line":"                        \u0027quota_reservations\u0027: reservations,"},{"line_number":1743,"context_line":"                        \u0027old_reservations\u0027: old_reservations,"},{"line_number":1744,"context_line":"                        }"},{"line_number":1745,"context_line":""},{"line_number":1746,"context_line":"        type_azs \u003d volume_utils.extract_availability_zones_from_volume_type("},{"line_number":1747,"context_line":"            new_type)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bf51134e_986dffcd","line":1744,"in_reply_to":"bf51134e_c7903a51","updated":"2020-07-16 12:14:38.000000000","message":"Done","commit_id":"106b38eadebf52bdaa76ea587cef2c81a7958914"}],"releasenotes/notes/fix-retype-with-az-e048123d982f213d.yaml":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"4bd0b422e80eda585a9365289f0449fa500b591d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Fixed a problem with volume retype not honoring the existing volume\u0027s"},{"line_number":5,"context_line":"    Availability Zone if one isn\u0027t specified."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"9f560f44_0243be14","line":4,"updated":"2020-09-04 11:30:47.000000000","message":"This is missing the bug number and link, as per our docs: https://docs.openstack.org/cinder/latest/contributor/releasenotes.html#bugs","commit_id":"d1b3cceea6d3fddcdfe106a504ffcb63938bf991"}]}
