)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"378a97092f665cf6edfb2d58b5276068c7191983","unresolved":true,"context_lines":[{"line_number":9,"context_line":"The Image Metadata Property is not support in SDK currently."},{"line_number":10,"context_line":"In this patch, I added an operations of image metadata properties."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"- Remove ignore files (.idea/)"},{"line_number":13,"context_line":"- Remove failed test"},{"line_number":14,"context_line":"- Resolve PEP8"},{"line_number":15,"context_line":"- Resolve merge conflict"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"9cf0dfcd_5ba2594b","line":12,"updated":"2023-09-16 12:45:27.000000000","message":"please remove this from the comment message","commit_id":"a150a9e0bcbd584580035cd3015c867fcf3e01bb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0a9ad4eb28e0d45720921f2d4ffc60bf9c586532","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The Image Metadata Property is not support in SDK currently."},{"line_number":10,"context_line":"In this patch, I added an operations of image metadata properties."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"- Remove ignore files (.idea/)"},{"line_number":13,"context_line":"- Remove failed test"},{"line_number":14,"context_line":"- Resolve PEP8"},{"line_number":15,"context_line":"- Resolve merge conflict"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"f33b0282_a623c24b","line":12,"in_reply_to":"9cf0dfcd_5ba2594b","updated":"2023-10-04 16:51:59.000000000","message":"Done","commit_id":"a150a9e0bcbd584580035cd3015c867fcf3e01bb"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":35119,"name":"jihyun huh","email":"huhji.elha@gmail.com","username":"jhhuh"},"change_message_id":"7621d13f52ed4a5f142c5e784363b9782ca45fe8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"128deca5_2df91d9a","updated":"2022-09-14 15:33:24.000000000","message":"still work in progress...","commit_id":"20eead4811a510619cebacffca49872c8b914c84"},{"author":{"_account_id":36163,"name":"YeJun, Jung","display_name":"YeJun, Jung","email":"yejun614@naver.com","username":"yejun614"},"change_message_id":"064b9afa3daa51a55265178fc9a5c0d924b76cc8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"9a9daa74_492e4531","updated":"2023-08-28 13:14:01.000000000","message":"RECHECK","commit_id":"6583fcd79db04c5ab70bff26326398b83a3b84ce"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"424ae309ea09ec47946ecded41372b052e3d3a45","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"c7bbf77b_533133c2","updated":"2023-09-18 08:45:27.000000000","message":"I see now why this override is necessary.","commit_id":"1fb2c517aa3860bd95af856a5b442ab2e1118161"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cc2d8b316ef5ca91ec0ce287a921802cd8ea0742","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"327350fa_1122215d","updated":"2023-10-04 16:50:30.000000000","message":"I added the missing `@classmethod` decorator and added a bit more context explaining why this API is so darn weird. Assuming this passes CI I think this is *finally* ready to merge, some 26 revisions and 8 contributors later 😅","commit_id":"c2600c35b7d4f9878a4d41d40ab9f60f361fb355"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"772d7eec5323a15f4bd5e9ab3b36a8f19f0a5cbb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"8bc521f1_096d9d39","updated":"2023-10-04 16:51:17.000000000","message":"I\u0027m also going to single-approve this as I know that @gtema is away rn and I\u0027d like to get this merged finally","commit_id":"c2600c35b7d4f9878a4d41d40ab9f60f361fb355"}],"openstack/image/v2/metadef_property.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"43b830963895f230eebb9b0ca73b69cc182e60c9","unresolved":true,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    #: A dictionary of key:value pairs, where each value is a property object"},{"line_number":82,"context_line":"    #: as defined by the Metadefs Property Schema."},{"line_number":83,"context_line":"    properties \u003d resource.Body(\u0027properties\u0027, type\u003ddict)"}],"source_content_type":"text/x-python","patch_set":21,"id":"34eb5d0e_4dae477a","line":83,"updated":"2023-09-05 16:53:57.000000000","message":"This isn\u0027t correct. I suspect you did this this way because of the way that the object is returned: instead of the usual list of objects\n\n```json\n{\n    \"properties\": [\n        {\n            \"name\": \"hw_cdrom_bus\",\n            \"type\": \"string\"\n        }\n    ]\n}\n```\n\nGlance returns an object whose keys correspond to the name of each resource.\n\n```json\n{\n    \"properties\": {\n        \"hw_cdrom_bus\": {\n            \"type\": \"string\"\n        }\n    }\n}\n```\n\nFortunately we already have another example of this: placement does so for resource provider inventories, which we added in change I5ea5d0a477147e1a4e30b428f17b44807253deaa. Could you copy and update the `list` method implementation from that to `MetadefProperty`? It should be pretty easy to do. Once done, please validate against a local deployment if possible.","commit_id":"f4ed5a262445a1159fba922eea06474680623ef2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c0fac7ef64c9dad1d3d36957cdc4d89a766afa99","unresolved":true,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    #: A dictionary of key:value pairs, where each value is a property object"},{"line_number":82,"context_line":"    #: as defined by the Metadefs Property Schema."},{"line_number":83,"context_line":"    properties \u003d resource.Body(\u0027properties\u0027, type\u003ddict)"}],"source_content_type":"text/x-python","patch_set":21,"id":"50eeadfd_a581580c","line":83,"in_reply_to":"34eb5d0e_4dae477a","updated":"2023-09-06 16:10:19.000000000","message":"Just to clarify this, the `list` method should go into `MetadefProperty`. You will also need to set `allow_list` to `True` and set `resources_key` (plural). Once done, you should delete `MetadefProperties`.","commit_id":"f4ed5a262445a1159fba922eea06474680623ef2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0a9ad4eb28e0d45720921f2d4ffc60bf9c586532","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    #: A dictionary of key:value pairs, where each value is a property object"},{"line_number":82,"context_line":"    #: as defined by the Metadefs Property Schema."},{"line_number":83,"context_line":"    properties \u003d resource.Body(\u0027properties\u0027, type\u003ddict)"}],"source_content_type":"text/x-python","patch_set":21,"id":"b44e7a64_24453451","line":83,"in_reply_to":"50eeadfd_a581580c","updated":"2023-10-04 16:51:59.000000000","message":"Done","commit_id":"f4ed5a262445a1159fba922eea06474680623ef2"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"378a97092f665cf6edfb2d58b5276068c7191983","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    #: is ``true``, that is equivalent to the empty schema (anything goes)."},{"line_number":71,"context_line":"    additional_items \u003d resource.Body(\u0027additionalItems\u0027, type\u003dbool)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @classmethod"},{"line_number":74,"context_line":"    def list("},{"line_number":75,"context_line":"        cls,"},{"line_number":76,"context_line":"        session,"}],"source_content_type":"text/x-python","patch_set":24,"id":"125fc3d3_52a41eb3","line":73,"updated":"2023-09-16 12:45:27.000000000","message":"I am pretty sure this is not necessary. If you set resources_key to \"properties\" you should get this logic handled by the base list implementation, unless I do not see something important.","commit_id":"a150a9e0bcbd584580035cd3015c867fcf3e01bb"},{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"424ae309ea09ec47946ecded41372b052e3d3a45","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    #: is ``true``, that is equivalent to the empty schema (anything goes)."},{"line_number":71,"context_line":"    additional_items \u003d resource.Body(\u0027additionalItems\u0027, type\u003dbool)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @classmethod"},{"line_number":74,"context_line":"    def list("},{"line_number":75,"context_line":"        cls,"},{"line_number":76,"context_line":"        session,"}],"source_content_type":"text/x-python","patch_set":24,"id":"2d38a32d_76746928","line":73,"in_reply_to":"125fc3d3_52a41eb3","updated":"2023-09-18 08:45:27.000000000","message":"No I see why it is necessary. Sad. Ignore my comment on that point.","commit_id":"a150a9e0bcbd584580035cd3015c867fcf3e01bb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0a9ad4eb28e0d45720921f2d4ffc60bf9c586532","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    #: is ``true``, that is equivalent to the empty schema (anything goes)."},{"line_number":71,"context_line":"    additional_items \u003d resource.Body(\u0027additionalItems\u0027, type\u003dbool)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @classmethod"},{"line_number":74,"context_line":"    def list("},{"line_number":75,"context_line":"        cls,"},{"line_number":76,"context_line":"        session,"}],"source_content_type":"text/x-python","patch_set":24,"id":"d8a513ba_6fcacbc6","line":73,"in_reply_to":"2d38a32d_76746928","updated":"2023-10-04 16:51:59.000000000","message":"Done","commit_id":"a150a9e0bcbd584580035cd3015c867fcf3e01bb"}],"openstack/tests/unit/image/v2/test_metadef_property.py":[{"author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"change_message_id":"378a97092f665cf6edfb2d58b5276068c7191983","unresolved":true,"context_lines":[{"line_number":42,"context_line":"    \u0027additional_items\u0027: None,"},{"line_number":43,"context_line":"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"EXAMPLE_2 \u003d {"},{"line_number":46,"context_line":"    \"properties\": {"},{"line_number":47,"context_line":"        \"Access\": {"},{"line_number":48,"context_line":"            \"type\": \"string\","}],"source_content_type":"text/x-python","patch_set":24,"id":"6051532a_26d6f9e7","line":45,"updated":"2023-09-16 12:45:27.000000000","message":"what is the sense of this dictionary? It is not used","commit_id":"a150a9e0bcbd584580035cd3015c867fcf3e01bb"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0a9ad4eb28e0d45720921f2d4ffc60bf9c586532","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    \u0027additional_items\u0027: None,"},{"line_number":43,"context_line":"}"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"EXAMPLE_2 \u003d {"},{"line_number":46,"context_line":"    \"properties\": {"},{"line_number":47,"context_line":"        \"Access\": {"},{"line_number":48,"context_line":"            \"type\": \"string\","}],"source_content_type":"text/x-python","patch_set":24,"id":"35cf9bc5_100412e7","line":45,"in_reply_to":"6051532a_26d6f9e7","updated":"2023-10-04 16:51:59.000000000","message":"Done","commit_id":"a150a9e0bcbd584580035cd3015c867fcf3e01bb"}]}
