)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f369070ecbb824bb19987c3fa397c9e18ca571bc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3fa0c359_c702223f","line":16,"updated":"2018-02-16 13:46:42.000000000","message":"Please refer to the blueprint as well by adding the following line:\nImplements: bp add-action-initiator-to-instance-action-notifications","commit_id":"2770fe47fc0c4d6afb6c03f9b81b2c2b209f6a8a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e3759335a2e2c5c8801961bbcec8a67ccf508505","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5f7c97a3_d86fed5d","line":17,"updated":"2018-06-11 14:41:00.000000000","message":"please also refer to the bp with the following line:\n\nblueprint: add-action-initiator-to-instance-action-notifications","commit_id":"50e5a3723663cb8fcc006e499e66542ac14b666a"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"9195f1aa0d919826bc13f8b80e43e76bced6b8c1","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add action initiator attribute to the payload"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when do some actions to the vm, it will be recorded in"},{"line_number":10,"context_line":"the log. However, the log shows instance ower id simply."},{"line_number":11,"context_line":"No action initiator info founded in log which may confuse someone"},{"line_number":12,"context_line":"else. So fix this small problem by adding two new attributes to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_a472d9e1","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":4},"updated":"2018-06-13 08:03:07.000000000","message":"When","commit_id":"da99886adc5cf0035775039d2ae9bcf31e4f7e98"},{"author":{"_account_id":24268,"name":"jiang wei","email":"wei.jiang@easystack.cn","username":"jiangwei"},"change_message_id":"3775e77a04e05280d9049ba179a3b16920636481","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add action initiator attribute to the payload"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when do some actions to the vm, it will be recorded in"},{"line_number":10,"context_line":"the log. However, the log shows instance ower id simply."},{"line_number":11,"context_line":"No action initiator info founded in log which may confuse someone"},{"line_number":12,"context_line":"else. So fix this small problem by adding two new attributes to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_4747474d","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":4},"in_reply_to":"5f7c97a3_a472d9e1","updated":"2018-06-13 08:16:22.000000000","message":"Done","commit_id":"da99886adc5cf0035775039d2ae9bcf31e4f7e98"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"9195f1aa0d919826bc13f8b80e43e76bced6b8c1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add action initiator attribute to the payload"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when do some actions to the vm, it will be recorded in"},{"line_number":10,"context_line":"the log. However, the log shows instance ower id simply."},{"line_number":11,"context_line":"No action initiator info founded in log which may confuse someone"},{"line_number":12,"context_line":"else. So fix this small problem by adding two new attributes to"},{"line_number":13,"context_line":"the payload ."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_c437d5fd","line":10,"range":{"start_line":10,"start_character":4,"end_line":10,"end_character":7},"updated":"2018-06-13 08:03:07.000000000","message":"notification?","commit_id":"da99886adc5cf0035775039d2ae9bcf31e4f7e98"},{"author":{"_account_id":24268,"name":"jiang wei","email":"wei.jiang@easystack.cn","username":"jiangwei"},"change_message_id":"3775e77a04e05280d9049ba179a3b16920636481","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add action initiator attribute to the payload"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"when do some actions to the vm, it will be recorded in"},{"line_number":10,"context_line":"the log. However, the log shows instance ower id simply."},{"line_number":11,"context_line":"No action initiator info founded in log which may confuse someone"},{"line_number":12,"context_line":"else. So fix this small problem by adding two new attributes to"},{"line_number":13,"context_line":"the payload ."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"5f7c97a3_6742833d","line":10,"range":{"start_line":10,"start_character":4,"end_line":10,"end_character":7},"in_reply_to":"5f7c97a3_c437d5fd","updated":"2018-06-13 08:16:22.000000000","message":"Done","commit_id":"da99886adc5cf0035775039d2ae9bcf31e4f7e98"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"c2f948c98fb39fe36af4ac59e4b67349cd51a4b5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     jiang wei \u003cwei.jiang@easystack.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-06-14 05:36:54 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add action initiator attribute to the payload"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Doing some actions(such as reboot migrate)to the vm, payload will be"},{"line_number":10,"context_line":"set to notification. However, the notification shows instance\u0027s"},{"line_number":11,"context_line":"ower_id simply and no action initiator info which may confuse someone"},{"line_number":12,"context_line":"else. So fix this small problem by adding two new attributes to"},{"line_number":13,"context_line":"the payload ."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: I649d8a27baa8840bc1bb567fef027c749c663432"},{"line_number":16,"context_line":"Closes-bug: #1744658"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"5f7c97a3_b34446b9","line":13,"range":{"start_line":7,"start_character":0,"end_line":13,"end_character":13},"updated":"2018-06-14 07:24:14.000000000","message":"I\u0027d say this commit message is realy hard to understand, maybe you can just copy the message from launchpad here.","commit_id":"4e7a3e303751135acec5c7529c34707e1ccd081b"}],"doc/notification_samples/common_payloads/InstancePayload.json":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"0a8dc4d99c75260c75c1e8944fdef765b617a7ab","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        \"user_id\":\"fake\","},{"line_number":37,"context_line":"        \"uuid\":\"178b0921-8f85-4257-88b6-2e743b5a975c\","},{"line_number":38,"context_line":"        \"request_id\": \"req-5b6c791d-5709-4f36-8fbe-c3e02869e35d\","},{"line_number":39,"context_line":"        \"action_initiator_user\": \"admin\","},{"line_number":40,"context_line":"        \"action_initiator_project\": \"6f70656e737461636b20342065766572\""},{"line_number":41,"context_line":"    },"},{"line_number":42,"context_line":"    \"nova_object.name\":\"InstancePayload\","}],"source_content_type":"application/json","patch_set":16,"id":"5f7c97a3_abe5020c","line":39,"range":{"start_line":39,"start_character":34,"end_line":39,"end_character":39},"updated":"2018-06-22 03:47:24.000000000","message":"fake","commit_id":"3896367699a6706fe35bf52834e97bed0ade4b06"},{"author":{"_account_id":24268,"name":"jiang wei","email":"wei.jiang@easystack.cn","username":"jiangwei"},"change_message_id":"35c9933b1c9236375000069a64d4389c7d1b674b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        \"user_id\":\"fake\","},{"line_number":37,"context_line":"        \"uuid\":\"178b0921-8f85-4257-88b6-2e743b5a975c\","},{"line_number":38,"context_line":"        \"request_id\": \"req-5b6c791d-5709-4f36-8fbe-c3e02869e35d\","},{"line_number":39,"context_line":"        \"action_initiator_user\": \"admin\","},{"line_number":40,"context_line":"        \"action_initiator_project\": \"6f70656e737461636b20342065766572\""},{"line_number":41,"context_line":"    },"},{"line_number":42,"context_line":"    \"nova_object.name\":\"InstancePayload\","}],"source_content_type":"application/json","patch_set":16,"id":"5f7c97a3_26c60918","line":39,"range":{"start_line":39,"start_character":34,"end_line":39,"end_character":39},"in_reply_to":"5f7c97a3_abe5020c","updated":"2018-06-22 04:13:18.000000000","message":"Done","commit_id":"3896367699a6706fe35bf52834e97bed0ade4b06"}],"doc/notification_samples/common_payloads/InstanceUpdatePayload.json":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"f9f8701c66ed156eed5d31d069105971ef250698","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \"tags\": [],"},{"line_number":28,"context_line":"        \"updated_at\": \"2012-10-29T13:42:11Z\","},{"line_number":29,"context_line":"        \"action_initiator_user\": \"243e052f5d114a919f5bd71d01541354\","},{"line_number":30,"context_line":"        \"action_initiator_project\": \"5849d048a8244387b63d49f20fd18643\""},{"line_number":31,"context_line":"    },"},{"line_number":32,"context_line":"    \"nova_object.name\": \"InstanceUpdatePayload\","},{"line_number":33,"context_line":"    \"nova_object.namespace\": \"nova\","}],"source_content_type":"application/json","patch_set":5,"id":"5f7c97a3_7946c87d","line":30,"range":{"start_line":30,"start_character":37,"end_line":30,"end_character":69},"updated":"2018-06-12 08:45:29.000000000","message":"We have default project id(6f70656e737461636b20342065766572) in ref[1], you need fix this, otherwise functional test would be failed.\n\n[1] https://github.com/openstack/nova/blob/589c495c1ae62129e20ab5e2641e330541eee01f/nova/tests/functional/api/client.py#L135","commit_id":"5a6bf1f754fe88add95e9da7da428a143262d3ec"},{"author":{"_account_id":24268,"name":"jiang wei","email":"wei.jiang@easystack.cn","username":"jiangwei"},"change_message_id":"7c43660b793cab597649b5d883e856e224894460","unresolved":false,"context_lines":[{"line_number":27,"context_line":"        \"tags\": [],"},{"line_number":28,"context_line":"        \"updated_at\": \"2012-10-29T13:42:11Z\","},{"line_number":29,"context_line":"        \"action_initiator_user\": \"243e052f5d114a919f5bd71d01541354\","},{"line_number":30,"context_line":"        \"action_initiator_project\": \"5849d048a8244387b63d49f20fd18643\""},{"line_number":31,"context_line":"    },"},{"line_number":32,"context_line":"    \"nova_object.name\": \"InstanceUpdatePayload\","},{"line_number":33,"context_line":"    \"nova_object.namespace\": \"nova\","}],"source_content_type":"application/json","patch_set":5,"id":"5f7c97a3_ca02980c","line":30,"range":{"start_line":30,"start_character":37,"end_line":30,"end_character":69},"in_reply_to":"5f7c97a3_7946c87d","updated":"2018-06-13 01:29:32.000000000","message":"Done","commit_id":"5a6bf1f754fe88add95e9da7da428a143262d3ec"}],"doc/notification_samples/instance-live_migration_rollback-end.json":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"cf7cc0024129b11d69f7a20a6a6c7418dc8742cd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"event_type\":\"instance.live_migration_rollback.end\","},{"line_number":3,"context_line":"    \"payload\":{\"$ref\":\"common_payloads/InstanceActionPayload.json#\","},{"line_number":4,"context_line":"               \"nova_object.data\":{"},{"line_number":5,"context_line":"                   \"action_initiator_user\": \"admin\""},{"line_number":6,"context_line":"               }"},{"line_number":7,"context_line":"    },"},{"line_number":8,"context_line":"    \"priority\":\"INFO\","},{"line_number":9,"context_line":"    \"publisher_id\":\"nova-compute:compute\""}],"source_content_type":"application/json","patch_set":20,"id":"5f7c97a3_637d05b1","line":6,"range":{"start_line":3,"start_character":16,"end_line":6,"end_character":16},"updated":"2018-07-03 02:20:19.000000000","message":"nit: Indent","commit_id":"b80bff6789d189c8e820d0105a5520db6c2472b6"}],"doc/notification_samples/instance-live_migration_rollback-start.json":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"cf7cc0024129b11d69f7a20a6a6c7418dc8742cd","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"event_type\":\"instance.live_migration_rollback.start\","},{"line_number":3,"context_line":"    \"payload\":{\"$ref\":\"common_payloads/InstanceActionPayload.json#\","},{"line_number":4,"context_line":"               \"nova_object.data\":{"},{"line_number":5,"context_line":"                   \"action_initiator_user\": \"admin\""},{"line_number":6,"context_line":"               }"},{"line_number":7,"context_line":"    },"},{"line_number":8,"context_line":"    \"priority\":\"INFO\","},{"line_number":9,"context_line":"    \"publisher_id\":\"nova-compute:compute\""}],"source_content_type":"application/json","patch_set":20,"id":"5f7c97a3_837861c1","line":6,"range":{"start_line":3,"start_character":15,"end_line":6,"end_character":16},"updated":"2018-07-03 02:20:19.000000000","message":"ditto","commit_id":"b80bff6789d189c8e820d0105a5520db6c2472b6"}],"nova/notifications/base.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"45bebb554507f40bf186145edfd69eb74c46b26f","unresolved":false,"context_lines":[{"line_number":404,"context_line":"    instance_info \u003d dict("},{"line_number":405,"context_line":"        # Owner properties"},{"line_number":406,"context_line":"        tenant_id\u003dinstance.project_id,"},{"line_number":407,"context_line":"        user_id\u003dcontext.user_id,"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        # Identity properties"},{"line_number":410,"context_line":"        instance_id\u003dinstance.uuid,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f96bb07_108cb47d","line":407,"updated":"2018-01-22 20:54:05.000000000","message":"This particular data is supposed to be the user_id of the instance owner, not the user_id of the user who initiated the action. (This is the info_from_instance method).\n\nSo, the question is, is there another area in a notification payload where the user who performed an action can be recorded?","commit_id":"2770fe47fc0c4d6afb6c03f9b81b2c2b209f6a8a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f369070ecbb824bb19987c3fa397c9e18ca571bc","unresolved":false,"context_lines":[{"line_number":404,"context_line":"    instance_info \u003d dict("},{"line_number":405,"context_line":"        # Owner properties"},{"line_number":406,"context_line":"        tenant_id\u003dinstance.project_id,"},{"line_number":407,"context_line":"        user_id\u003dcontext.user_id,"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"        # Identity properties"},{"line_number":410,"context_line":"        instance_id\u003dinstance.uuid,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa0c359_67cb0e1e","line":407,"in_reply_to":"7f96bb07_108cb47d","updated":"2018-02-16 13:46:42.000000000","message":"We agreed in the specless blueprint [1] to add this information as a separate field to the notification payload. This we we can keep backward compatibility and provide information both about the actual owner and the initiator of the action.\n\n[1]https://blueprints.launchpad.net/nova/+spec/add-action-initiator-to-instance-action-notifications","commit_id":"2770fe47fc0c4d6afb6c03f9b81b2c2b209f6a8a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e3759335a2e2c5c8801961bbcec8a67ccf508505","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    out_bytes\u003dbw[\u0027bw_out\u0027])"},{"line_number":227,"context_line":"                 for label, bw in payload[\u0027bandwidth\u0027].items()]"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    versioned_payload \u003d instance_notification.InstanceUpdatePayload("},{"line_number":230,"context_line":"        context\u003dcontext,"},{"line_number":231,"context_line":"        instance\u003dinstance,"},{"line_number":232,"context_line":"        state_update\u003dstate_update,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_1ec8ed52","line":229,"range":{"start_line":229,"start_character":46,"end_line":229,"end_character":67},"updated":"2018-06-11 14:41:00.000000000","message":"We would only change the versioned instance update notification (as we are planning to drop the legacy ones at some point). So we have to make sure that the InstanceUpdatePayload has the two new fields populated from the context.","commit_id":"50e5a3723663cb8fcc006e499e66542ac14b666a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e3759335a2e2c5c8801961bbcec8a67ccf508505","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        # Operator properties"},{"line_number":379,"context_line":"        action_initiator\u003dcontext.user_id,"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        # Identity properties"},{"line_number":382,"context_line":"        instance_id\u003dinstance.uuid,"},{"line_number":383,"context_line":"        display_name\u003dinstance.display_name,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_9e095dde","line":380,"updated":"2018-06-11 14:41:00.000000000","message":"I think this is not needed here as this only ends up in the legacy notifications and not the versioned ones. See my comment above.\n\n\nAlso the bp https://blueprints.launchpad.net/nova/+spec/add-action-initiator-to-instance-action-notifications talks about two new fields one for the user and one for the project.","commit_id":"50e5a3723663cb8fcc006e499e66542ac14b666a"}],"nova/notifications/objects/instance.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"9195f1aa0d919826bc13f8b80e43e76bced6b8c1","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        \u0027bandwidth\u0027: fields.ListOfObjectsField(\u0027BandwidthPayload\u0027),"},{"line_number":272,"context_line":"        \u0027old_display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":273,"context_line":"        \u0027tags\u0027: fields.ListOfStringsField(),"},{"line_number":274,"context_line":"        \u0027action_initiator_user\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":275,"context_line":"        \u0027action_initiator_project\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":276,"context_line":"    }"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def __init__(self, context, instance, state_update, audit_period,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_240a4989","line":275,"range":{"start_line":274,"start_character":0,"end_line":275,"end_character":68},"updated":"2018-06-13 08:03:07.000000000","message":"I\u0027m not sure why you use \u0027UUIDField\u0027 in here rather than StringField. \nI think project and user id format is something like \u00276f70656e737461636b20342065766572\u0027, So, we really need a StringField in here. \n\nYou can also see ref[1].\n\n[1] https://github.com/openstack/nova/blob/c4397d5/nova/notifications/objects/server_group.py#L36-L37","commit_id":"da99886adc5cf0035775039d2ae9bcf31e4f7e98"},{"author":{"_account_id":24268,"name":"jiang wei","email":"wei.jiang@easystack.cn","username":"jiangwei"},"change_message_id":"3775e77a04e05280d9049ba179a3b16920636481","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        \u0027bandwidth\u0027: fields.ListOfObjectsField(\u0027BandwidthPayload\u0027),"},{"line_number":272,"context_line":"        \u0027old_display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":273,"context_line":"        \u0027tags\u0027: fields.ListOfStringsField(),"},{"line_number":274,"context_line":"        \u0027action_initiator_user\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":275,"context_line":"        \u0027action_initiator_project\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":276,"context_line":"    }"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def __init__(self, context, instance, state_update, audit_period,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_c7535715","line":275,"range":{"start_line":274,"start_character":0,"end_line":275,"end_character":68},"in_reply_to":"5f7c97a3_240a4989","updated":"2018-06-13 08:16:22.000000000","message":"Done","commit_id":"da99886adc5cf0035775039d2ae9bcf31e4f7e98"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"1e784b310d57061c244c9f39c1e5b28863ad982f","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        \u0027bandwidth\u0027: fields.ListOfObjectsField(\u0027BandwidthPayload\u0027),"},{"line_number":272,"context_line":"        \u0027old_display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":273,"context_line":"        \u0027tags\u0027: fields.ListOfStringsField(),"},{"line_number":274,"context_line":"        \u0027action_initiator_user\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":275,"context_line":"        \u0027action_initiator_project\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":276,"context_line":"    }"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def __init__(self, context, instance, state_update, audit_period,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_674043a3","line":275,"range":{"start_line":274,"start_character":0,"end_line":275,"end_character":68},"in_reply_to":"5f7c97a3_240a4989","updated":"2018-06-13 08:39:48.000000000","message":"Sorry, I think I didn\u0027t point the root reason why we shouldn\u0027t use UUIDField in here.\n\nBoth 4e3242c8-54fa-4bbe-824f-fe732b88e7ee and 4e3242c854fa4bbe824ffe732b88e7ee is UUID format, we validate it in [1] \n\nBut we have another user_id, which is not UUID format(such as LDAP, use SHA256 as user_id).\n\n[1] https://github.com/openstack/oslo.versionedobjects/blob/8f3213f8c6140e22995a33effca08213318a5a29/oslo_versionedobjects/fields.py#L355","commit_id":"da99886adc5cf0035775039d2ae9bcf31e4f7e98"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"c2f948c98fb39fe36af4ac59e4b67349cd51a4b5","unresolved":false,"context_lines":[{"line_number":262,"context_line":"    # Version 1.5: Add BDM related data"},{"line_number":263,"context_line":"    # Version 1.6: Added updated_at field to InstancePayload"},{"line_number":264,"context_line":"    # Version 1.7: Added request_id field to InstancePayload"},{"line_number":265,"context_line":"    # Version 1.8: Added action_initiator_user and action_initiator_project to"},{"line_number":266,"context_line":"    #              InstancePayload"},{"line_number":267,"context_line":"    VERSION \u003d \u00271.8\u0027"},{"line_number":268,"context_line":"    fields \u003d {"},{"line_number":269,"context_line":"        \u0027state_update\u0027: fields.ObjectField(\u0027InstanceStateUpdatePayload\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_d346a2a7","line":266,"range":{"start_line":265,"start_character":0,"end_line":266,"end_character":34},"updated":"2018-06-14 07:24:14.000000000","message":"Why are we only changing instance update payload? if that is the case, this comment is incorrect.","commit_id":"4e7a3e303751135acec5c7529c34707e1ccd081b"},{"author":{"_account_id":24268,"name":"jiang wei","email":"wei.jiang@easystack.cn","username":"jiangwei"},"change_message_id":"f1057833c7cb2df7c2628f0a913c09e819beea89","unresolved":false,"context_lines":[{"line_number":262,"context_line":"    # Version 1.5: Add BDM related data"},{"line_number":263,"context_line":"    # Version 1.6: Added updated_at field to InstancePayload"},{"line_number":264,"context_line":"    # Version 1.7: Added request_id field to InstancePayload"},{"line_number":265,"context_line":"    # Version 1.8: Added action_initiator_user and action_initiator_project to"},{"line_number":266,"context_line":"    #              InstancePayload"},{"line_number":267,"context_line":"    VERSION \u003d \u00271.8\u0027"},{"line_number":268,"context_line":"    fields \u003d {"},{"line_number":269,"context_line":"        \u0027state_update\u0027: fields.ObjectField(\u0027InstanceStateUpdatePayload\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_33309be9","line":266,"range":{"start_line":265,"start_character":0,"end_line":266,"end_character":34},"in_reply_to":"5f7c97a3_043d69dc","updated":"2018-06-21 13:08:56.000000000","message":"Done","commit_id":"4e7a3e303751135acec5c7529c34707e1ccd081b"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fc53f43b4cee2ab248382fc1048630955fb0bfd2","unresolved":false,"context_lines":[{"line_number":262,"context_line":"    # Version 1.5: Add BDM related data"},{"line_number":263,"context_line":"    # Version 1.6: Added updated_at field to InstancePayload"},{"line_number":264,"context_line":"    # Version 1.7: Added request_id field to InstancePayload"},{"line_number":265,"context_line":"    # Version 1.8: Added action_initiator_user and action_initiator_project to"},{"line_number":266,"context_line":"    #              InstancePayload"},{"line_number":267,"context_line":"    VERSION \u003d \u00271.8\u0027"},{"line_number":268,"context_line":"    fields \u003d {"},{"line_number":269,"context_line":"        \u0027state_update\u0027: fields.ObjectField(\u0027InstanceStateUpdatePayload\u0027),"}],"source_content_type":"text/x-python","patch_set":13,"id":"5f7c97a3_043d69dc","line":266,"range":{"start_line":265,"start_character":0,"end_line":266,"end_character":34},"in_reply_to":"5f7c97a3_d346a2a7","updated":"2018-06-18 15:08:15.000000000","message":"Good point. I guess I was misleading in my original comment [1]. As at that time this patch tried to change the legacy instance update notification and we do not want to change legacy notification any more. But I might hinted in the comment that _only_ the versioned instance.update notification needs to be changed. If I did that It was unintentional and I\u0027m sorry. \n\nThe bp is pretty clearly state \"we need to add two new fields to the instance action notifications\". So I\u0027d like to stick to that if there are no clear objections from the user side of this notification. \n\nBottom line. Zhenyu is right. We need to add these fields to the InstancePayload which will ensures that all the instance action notifications and the instance.update notification will get these new fields.\n\n[1]https://review.openstack.org/#/c/536243/4/nova/notifications/base.py@229","commit_id":"4e7a3e303751135acec5c7529c34707e1ccd081b"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"362e1ca243de25cb3d111aa17d4b51915007d76c","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    #         1.8: Added request_id field to InstancePayload"},{"line_number":227,"context_line":"    #         1.9: Add trusted_image_certificates field to"},{"line_number":228,"context_line":"    #              InstanceCreatePayload"},{"line_number":229,"context_line":"    #         2.0: Added action_initiator_user and action_initiator_project to"},{"line_number":230,"context_line":"    #              InstancePayload"},{"line_number":231,"context_line":"    VERSION \u003d \u00272.0\u0027"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    fields \u003d {"},{"line_number":234,"context_line":"        \u0027keypairs\u0027: fields.ListOfObjectsField(\u0027KeypairPayload\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_8d3b59cf","line":231,"range":{"start_line":229,"start_character":0,"end_line":231,"end_character":19},"updated":"2018-06-25 08:46:54.000000000","message":"why this bumped to 2.0?","commit_id":"6ab6dade95382efa31ba3edfe670266a2ce38daf"},{"author":{"_account_id":24268,"name":"jiang wei","email":"wei.jiang@easystack.cn","username":"jiangwei"},"change_message_id":"42a67aa90742242e35920976510b27b4cd0e7ea2","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    #         1.8: Added request_id field to InstancePayload"},{"line_number":227,"context_line":"    #         1.9: Add trusted_image_certificates field to"},{"line_number":228,"context_line":"    #              InstanceCreatePayload"},{"line_number":229,"context_line":"    #         2.0: Added action_initiator_user and action_initiator_project to"},{"line_number":230,"context_line":"    #              InstancePayload"},{"line_number":231,"context_line":"    VERSION \u003d \u00272.0\u0027"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    fields \u003d {"},{"line_number":234,"context_line":"        \u0027keypairs\u0027: fields.ListOfObjectsField(\u0027KeypairPayload\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_c4a6f5c0","line":231,"range":{"start_line":229,"start_character":0,"end_line":231,"end_character":19},"in_reply_to":"5f7c97a3_8d3b59cf","updated":"2018-06-26 05:17:57.000000000","message":"could you speak more specifically?","commit_id":"6ab6dade95382efa31ba3edfe670266a2ce38daf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"8db839fdf9eb218b68fc583036e0e80e0620644b","unresolved":false,"context_lines":[{"line_number":226,"context_line":"    #         1.8: Added request_id field to InstancePayload"},{"line_number":227,"context_line":"    #         1.9: Add trusted_image_certificates field to"},{"line_number":228,"context_line":"    #              InstanceCreatePayload"},{"line_number":229,"context_line":"    #         2.0: Added action_initiator_user and action_initiator_project to"},{"line_number":230,"context_line":"    #              InstancePayload"},{"line_number":231,"context_line":"    VERSION \u003d \u00272.0\u0027"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    fields \u003d {"},{"line_number":234,"context_line":"        \u0027keypairs\u0027: fields.ListOfObjectsField(\u0027KeypairPayload\u0027),"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f7c97a3_345fd241","line":231,"range":{"start_line":229,"start_character":0,"end_line":231,"end_character":19},"in_reply_to":"5f7c97a3_c4a6f5c0","updated":"2018-06-26 13:13:06.000000000","message":"This should be 1.10 The major bump to 2.0 would mean we did an backward incompatible change.","commit_id":"6ab6dade95382efa31ba3edfe670266a2ce38daf"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"cf7cc0024129b11d69f7a20a6a6c7418dc8742cd","unresolved":false,"context_lines":[{"line_number":699,"context_line":"@nova_base.NovaObjectRegistry.register_notification"},{"line_number":700,"context_line":"class InstanceExistsPayload(InstancePayload):"},{"line_number":701,"context_line":"    # Version 1.0: Initial version"},{"line_number":702,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":703,"context_line":"    fields \u003d {"},{"line_number":704,"context_line":"        \u0027audit_period\u0027: fields.ObjectField(\u0027AuditPeriodPayload\u0027),"},{"line_number":705,"context_line":"        \u0027bandwidth\u0027: fields.ListOfObjectsField(\u0027BandwidthPayload\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_033bf1e9","line":702,"range":{"start_line":702,"start_character":15,"end_line":702,"end_character":18},"updated":"2018-07-03 02:20:19.000000000","message":"1.1\n\nIt should be bumped.","commit_id":"b80bff6789d189c8e820d0105a5520db6c2472b6"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9bbb4d7989041288968ef39fb18dfe3c3f731fdb","unresolved":false,"context_lines":[{"line_number":699,"context_line":"@nova_base.NovaObjectRegistry.register_notification"},{"line_number":700,"context_line":"class InstanceExistsPayload(InstancePayload):"},{"line_number":701,"context_line":"    # Version 1.0: Initial version"},{"line_number":702,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":703,"context_line":"    fields \u003d {"},{"line_number":704,"context_line":"        \u0027audit_period\u0027: fields.ObjectField(\u0027AuditPeriodPayload\u0027),"},{"line_number":705,"context_line":"        \u0027bandwidth\u0027: fields.ListOfObjectsField(\u0027BandwidthPayload\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_ac58dc89","line":702,"range":{"start_line":702,"start_character":15,"end_line":702,"end_character":18},"in_reply_to":"5f7c97a3_033bf1e9","updated":"2018-07-03 17:16:29.000000000","message":"Good catch!","commit_id":"b80bff6789d189c8e820d0105a5520db6c2472b6"}],"nova/tests/unit/notifications/objects/test_notification.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"cf7cc0024129b11d69f7a20a6a6c7418dc8742cd","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"},{"line_number":397,"context_line":"    \u0027InstanceActionSnapshotPayload\u0027: \u00271.8-6a3a66f823b56268ea4b759c83e38c31\u0027,"},{"line_number":398,"context_line":"    \u0027InstanceExistsNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"},{"line_number":399,"context_line":"    \u0027InstanceExistsPayload\u0027: \u00271.0-b7095abb18f5b75f39dc1aa59942535d\u0027,"},{"line_number":400,"context_line":"    \u0027InstanceStateUpdatePayload\u0027: \u00271.0-07e111c0fa0f6db0f79b0726d593e3da\u0027,"},{"line_number":401,"context_line":"    \u0027InstanceUpdateNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"},{"line_number":402,"context_line":"    \u0027InstanceUpdatePayload\u0027: \u00271.8-375131acb12e612a460f68211a2b3a35\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5f7c97a3_431a497c","line":399,"range":{"start_line":399,"start_character":30,"end_line":399,"end_character":33},"updated":"2018-07-03 02:20:19.000000000","message":"1.1","commit_id":"b80bff6789d189c8e820d0105a5520db6c2472b6"}],"nova/tests/unit/test_notifications.py":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"9195f1aa0d919826bc13f8b80e43e76bced6b8c1","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                         [\u0027payload\u0027][\u0027nova_object.data\u0027][\u0027tags\u0027])"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def test_send_versioned_action_initiator_update(self):"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        notifications.send_update(self.context, self.instance, self.instance)"},{"line_number":471,"context_line":"        action_initiator_user \u003d self.context.user_id"},{"line_number":472,"context_line":"        action_initiator_project \u003d self.context.project_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_c4aef57f","line":469,"updated":"2018-06-13 08:03:07.000000000","message":"nit: redundant newline","commit_id":"da99886adc5cf0035775039d2ae9bcf31e4f7e98"},{"author":{"_account_id":24268,"name":"jiang wei","email":"wei.jiang@easystack.cn","username":"jiangwei"},"change_message_id":"3775e77a04e05280d9049ba179a3b16920636481","unresolved":false,"context_lines":[{"line_number":466,"context_line":"                         [\u0027payload\u0027][\u0027nova_object.data\u0027][\u0027tags\u0027])"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def test_send_versioned_action_initiator_update(self):"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        notifications.send_update(self.context, self.instance, self.instance)"},{"line_number":471,"context_line":"        action_initiator_user \u003d self.context.user_id"},{"line_number":472,"context_line":"        action_initiator_project \u003d self.context.project_id"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_a73c1bbf","line":469,"in_reply_to":"5f7c97a3_c4aef57f","updated":"2018-06-13 08:16:22.000000000","message":"Done","commit_id":"da99886adc5cf0035775039d2ae9bcf31e4f7e98"}],"releasenotes/notes/add-action-initiator-to-instance-action-notifications-27e6a3031da274c5.yaml":[{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"fe116640feb5566d778a616a5ec5d76bea417baa","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add action initiator information(include action_initiator_user and"},{"line_number":5,"context_line":"    action_initiator_project) to a specific instances\u0027s notification object."},{"line_number":6,"context_line":"    We can find actual operator who do this action to the instance."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"5f7c97a3_ffa28599","line":5,"range":{"start_line":5,"start_character":44,"end_line":5,"end_character":55},"updated":"2018-06-14 02:22:30.000000000","message":"instance\u0027s","commit_id":"3ce9e9c47ffd1491f2b590e84ad6308f8e2e7687"},{"author":{"_account_id":20722,"name":"Yikun Jiang","email":"yikunkero@gmail.com","username":"yikunkero"},"change_message_id":"fe116640feb5566d778a616a5ec5d76bea417baa","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add action initiator information(include action_initiator_user and"},{"line_number":5,"context_line":"    action_initiator_project) to a specific instances\u0027s notification object."},{"line_number":6,"context_line":"    We can find actual operator who do this action to the instance."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"5f7c97a3_3f955d32","line":6,"range":{"start_line":6,"start_character":36,"end_line":6,"end_character":38},"updated":"2018-06-14 02:22:30.000000000","message":"did","commit_id":"3ce9e9c47ffd1491f2b590e84ad6308f8e2e7687"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"c2f948c98fb39fe36af4ac59e4b67349cd51a4b5","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add action initiator information(include action_initiator_user and"},{"line_number":5,"context_line":"    action_initiator_project) to a specific instance\u0027s notification object."},{"line_number":6,"context_line":"    We can find actual operator who did this action to the instance."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"5f7c97a3_9317caa3","line":6,"range":{"start_line":6,"start_character":15,"end_line":6,"end_character":22},"updated":"2018-06-14 07:24:14.000000000","message":"the actual","commit_id":"4e7a3e303751135acec5c7529c34707e1ccd081b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"93c1382350cb862e9a85fac7d47f608fcec9ca19","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add action initiator information(include action_initiator_user and"},{"line_number":5,"context_line":"    action_initiator_project) to a specific instance\u0027s notification object."},{"line_number":6,"context_line":"    We can find the actual operator who did this action to the instance."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"5f7c97a3_5386cd67","line":5,"range":{"start_line":4,"start_character":36,"end_line":5,"end_character":29},"updated":"2018-06-18 13:13:12.000000000","message":"nit: not necessary","commit_id":"fc7e65128237684397b6244597b9bd8b85b7ad84"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"93c1382350cb862e9a85fac7d47f608fcec9ca19","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add action initiator information(include action_initiator_user and"},{"line_number":5,"context_line":"    action_initiator_project) to a specific instance\u0027s notification object."},{"line_number":6,"context_line":"    We can find the actual operator who did this action to the instance."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"5f7c97a3_f37a7975","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":72},"updated":"2018-06-18 13:13:12.000000000","message":"nit: change this in a follow-up (if you don\u0027t need to respin a new revision) by something less personal like \", including the user_id and the project_id of the user calling the instance update\".","commit_id":"fc7e65128237684397b6244597b9bd8b85b7ad84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6ac599421473af30914238c875ce14078d84f08a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add action initiator information to a specific instance\u0027s notification"},{"line_number":5,"context_line":"    object through ``InstancePayload`` ."}],"source_content_type":"text/x-yaml","patch_set":23,"id":"5f7c97a3_a231c55b","line":5,"range":{"start_line":4,"start_character":4,"end_line":5,"end_character":40},"updated":"2018-07-03 18:44:25.000000000","message":"This reads more like a commit message than a release note, and InstancePayload is arguably more of an internal thing even though I realize it\u0027s part of the actual payload data. Something like this might be more appropriate for a release note: \"Instance action versioned notifications now contain an ``action_initiator_user`` and ``action_initiator_project`` field to distinguish between the owner of the instance and who initiated the action upon the instance.\"","commit_id":"0ebb9c7631c26b558760dd4952e5f9f78002814e"}]}
