)]}'
{"cinder/api/v2/volume_metadata.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8af18df8823f2048baae3275b4b07a68df1ae847","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            new_metadata \u003d self.volume_api.create_volume_metadata(context,"},{"line_number":56,"context_line":"                                                                  volume,"},{"line_number":57,"context_line":"                                                                  metadata)"},{"line_number":58,"context_line":"        except (ValueError, AttributeError):"},{"line_number":59,"context_line":"            msg \u003d _(\"Malformed request body\")"},{"line_number":60,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_bdbdcc03","line":58,"updated":"2016-08-18 12:42:20.000000000","message":"Do we have unit tests that verify these errors?","commit_id":"30ecd5b97fbf4e7868edc54c7a13dfc450c98353"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"cd8ed0e0abb089312622a3a49eb0020a2a230fa4","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":51,"context_line":"        metadata \u003d body[\u0027metadata\u0027]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        try:"},{"line_number":54,"context_line":"            volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":55,"context_line":"            new_metadata \u003d self.volume_api.create_volume_metadata(context,"},{"line_number":56,"context_line":"                                                                  volume,"},{"line_number":57,"context_line":"                                                                  metadata)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        except exception.InvalidVolumeMetadata as error:"},{"line_number":60,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        except exception.InvalidVolumeMetadataSize as error:"},{"line_number":63,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        return {\u0027metadata\u0027: new_metadata}"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_fedb8519","line":63,"range":{"start_line":53,"start_character":0,"end_line":63,"end_character":76},"updated":"2016-08-26 09:58:42.000000000","message":"We\u0027re getting more duplicated code that way. Also you\u0027re removing ValueError, AttributeError handling from try-except clause.\n\nCan we just modify _update_volume_metadata to accept additional use_create parameter that will force it to use create_volume_metadata instead of update_volume_metadata?","commit_id":"c2b3084a0e460b8bf02adafa5ed079d747dcabef"},{"author":{"_account_id":14305,"name":"Yuriy Nesenenko","email":"ynesenenko@mirantis.com","username":"yuriy_n"},"change_message_id":"7044aaa8073a6688ee93bb3edc8620462013245c","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        context \u003d req.environ[\u0027cinder.context\u0027]"},{"line_number":51,"context_line":"        metadata \u003d body[\u0027metadata\u0027]"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        try:"},{"line_number":54,"context_line":"            volume \u003d self.volume_api.get(context, volume_id)"},{"line_number":55,"context_line":"            new_metadata \u003d self.volume_api.create_volume_metadata(context,"},{"line_number":56,"context_line":"                                                                  volume,"},{"line_number":57,"context_line":"                                                                  metadata)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        except exception.InvalidVolumeMetadata as error:"},{"line_number":60,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003derror.msg)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        except exception.InvalidVolumeMetadataSize as error:"},{"line_number":63,"context_line":"            raise webob.exc.HTTPRequestEntityTooLarge(explanation\u003derror.msg)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"        return {\u0027metadata\u0027: new_metadata}"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_044c566f","line":63,"range":{"start_line":53,"start_character":0,"end_line":63,"end_character":76},"in_reply_to":"fa7ab95a_fedb8519","updated":"2016-08-26 10:30:25.000000000","message":"Sure, why not? Thanks.","commit_id":"c2b3084a0e460b8bf02adafa5ed079d747dcabef"}],"cinder/tests/unit/test_volume.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"c3e8addca554b34a387ec6e909bfb6b166686cba","unresolved":false,"context_lines":[{"line_number":769,"context_line":"    def test_create_volume_metadata__maintenance(self):"},{"line_number":770,"context_line":"        metadata \u003d {\u0027fake_key\u0027: \u0027fake_value\u0027}"},{"line_number":771,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **self.volume_params)"},{"line_number":772,"context_line":"        volume[\u0027status\u0027] \u003d \u0027maintenance\u0027"},{"line_number":773,"context_line":"        self.assertRaises(exception.InvalidVolume,"},{"line_number":774,"context_line":"                          self.volume_api.create_volume_metadata,"},{"line_number":775,"context_line":"                          self.context,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_3d26df16","line":772,"updated":"2016-08-19 11:56:26.000000000","message":"Please add a test for status \u003d uploading.\n\nBetter to use ddt to test both status.\n\n@ddt.data(\u0027maintenance\u0027, \u0027uploading\u0027)\n\ndef test_create_volume_metadata_with_invalid_volume_status(self, status)","commit_id":"61de5a3b9fa8a9e207a8c07f3c3d83523afd97b9"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"cd8ed0e0abb089312622a3a49eb0020a2a230fa4","unresolved":false,"context_lines":[{"line_number":768,"context_line":"        self.assertEqual(metadata, res)"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"    @ddt.data(\u0027maintenance\u0027, \u0027uploading\u0027)"},{"line_number":771,"context_line":"    def test_create_volume_metadata__maintenance(self, status):"},{"line_number":772,"context_line":"        metadata \u003d {\u0027fake_key\u0027: \u0027fake_value\u0027}"},{"line_number":773,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **self.volume_params)"},{"line_number":774,"context_line":"        volume[\u0027status\u0027] \u003d status"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_dcc5ec5b","line":771,"range":{"start_line":771,"start_character":35,"end_line":771,"end_character":37},"updated":"2016-08-26 09:58:42.000000000","message":"double underscore","commit_id":"c2b3084a0e460b8bf02adafa5ed079d747dcabef"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"2e21eeceee3a1861cd6570301a40d8a91d472dc7","unresolved":false,"context_lines":[{"line_number":768,"context_line":"        self.assertEqual(metadata, res)"},{"line_number":769,"context_line":""},{"line_number":770,"context_line":"    @ddt.data(\u0027maintenance\u0027, \u0027uploading\u0027)"},{"line_number":771,"context_line":"    def test_create_volume_metadata_maintenance(self, status):"},{"line_number":772,"context_line":"        metadata \u003d {\u0027fake_key\u0027: \u0027fake_value\u0027}"},{"line_number":773,"context_line":"        volume \u003d tests_utils.create_volume(self.context, **self.volume_params)"},{"line_number":774,"context_line":"        volume[\u0027status\u0027] \u003d status"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa7ab95a_9e3a6ecc","line":771,"range":{"start_line":771,"start_character":36,"end_line":771,"end_character":47},"updated":"2016-08-26 12:38:30.000000000","message":"nit: maintenance -\u003e invalid_volume_state\n\nit tests both \u0027maintenance\u0027 and \u0027uploading\u0027.","commit_id":"9771c2cd4e32979358f8647e57b4bab355221c0d"}],"cinder/volume/api.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"8af18df8823f2048baae3275b4b07a68df1ae847","unresolved":false,"context_lines":[{"line_number":955,"context_line":"        return dict(rv)"},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"    @wrap_check_policy"},{"line_number":958,"context_line":"    def create_volume_metadata(self, context, volume, metadata):"},{"line_number":959,"context_line":"        \"\"\"Creates volume metadata.\"\"\""},{"line_number":960,"context_line":"        db_meta \u003d self._update_volume_metadata(context, volume, metadata)"},{"line_number":961,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_5d949889","line":958,"updated":"2016-08-18 12:42:20.000000000","message":"Please, add unit test for new method","commit_id":"30ecd5b97fbf4e7868edc54c7a13dfc450c98353"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"42214e6ef2cb0aff942312f2cf9e9ff52d38cf6d","unresolved":false,"context_lines":[{"line_number":990,"context_line":"    @wrap_check_policy"},{"line_number":991,"context_line":"    def update_volume_metadata(self, context, volume, metadata, delete\u003dFalse,"},{"line_number":992,"context_line":"                               meta_type\u003dcommon.METADATA_TYPES.user):"},{"line_number":993,"context_line":"        \"\"\"Updates or creates volume metadata."},{"line_number":994,"context_line":""},{"line_number":995,"context_line":"        If delete is True, metadata items that are not specified in the"},{"line_number":996,"context_line":"        `metadata` argument will be deleted."}],"source_content_type":"text/x-python","patch_set":2,"id":"3ac371cc_9ba731a6","line":993,"range":{"start_line":993,"start_character":19,"end_line":993,"end_character":29},"updated":"2016-08-18 14:35:03.000000000","message":"nit: Please fix this.","commit_id":"8cff6f60e5c0217bd75d24453607c38043a5b0e7"}],"releasenotes/notes/create-update-rules-b46cf9c07c5a3966.yaml":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"e148515648c4f65051ae31fdbdcc5127f0fbdfd1","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Separate create and update rules for volume metadata."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"fa7ab95a_7af868e6","line":3,"range":{"start_line":1,"start_character":0,"end_line":3,"end_character":57},"updated":"2016-08-26 08:23:23.000000000","message":"This needs also upgrade section in the release note - if someone modified policy for update, then before upgrading to Newton he needs to add same rule for create.","commit_id":"3190aa275ea9ea36d93c6369950d35c1dc9d4e09"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"cd8ed0e0abb089312622a3a49eb0020a2a230fa4","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Separate create and update rules for volume metadata."},{"line_number":4,"context_line":"upgrade:"},{"line_number":5,"context_line":"  - If policy for update is modified it\u0027s needed to add rule for create."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"fa7ab95a_1c3114a3","line":5,"range":{"start_line":4,"start_character":0,"end_line":5,"end_character":72},"updated":"2016-08-26 09:58:42.000000000","message":"Try to generate the release notes and take a look how they\u0027re presented. \"features\" and \"upgrade\" notes will go into different independent sections, so this line should as well explicitly state that we\u0027re talking about volume metadata.","commit_id":"c2b3084a0e460b8bf02adafa5ed079d747dcabef"}]}
