)]}'
{"doc/notification_samples/common_payloads/InstanceActionVolumePayload.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f2e6d928a06f83f4241eba4ace2bf81310cf3d98","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"$ref\": \"InstanceActionPayload.json\","},{"line_number":3,"context_line":"    \"nova_object.data\":{"},{"line_number":4,"context_line":"        \"volume_id\": \"a07f71dc-8151-4e7d-a0cc-cd24a3f11113\""},{"line_number":5,"context_line":"    },"},{"line_number":6,"context_line":"    \"nova_object.name\": \"InstanceActionVolumePayload\","},{"line_number":7,"context_line":"    \"nova_object.namespace\": \"nova\","}],"source_content_type":"application/json","patch_set":7,"id":"9f6a8fd7_1331290c","line":4,"updated":"2018-04-17 21:42:55.000000000","message":"This confused me at first because I thought it was overriding the volume_id in BlockDevicePayload which is in InstanceActionPayload but I see it\u0027s not, it\u0027s part of InstanceActionVolumePayload which extends InstanceActionPayload and adds the top-level volume_id field to the payload.","commit_id":"f9bb4dcb3a539faf64a38269f5517840f1df9353"}],"doc/notification_samples/common_payloads/InstanceActionVolumeSwapPayload.json":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"f082d948234f31cfa60b8942cc44948299110e9e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    \"nova_object.data\": {"},{"line_number":4,"context_line":"        \"new_volume_id\": \"227cc671-f30b-4488-96fd-7d0bf13648d8\","},{"line_number":5,"context_line":"        \"old_volume_id\": \"a07f71dc-8151-4e7d-a0cc-cd24a3f11113\""},{"line_number":6,"context_line":"        },"},{"line_number":7,"context_line":"    \"nova_object.name\": \"InstanceActionVolumeSwapPayload\","},{"line_number":8,"context_line":"    \"nova_object.namespace\": \"nova\","},{"line_number":9,"context_line":"    \"nova_object.version\": \"1.5\""}],"source_content_type":"application/json","patch_set":6,"id":"9f6a8fd7_eb47eb1c","line":6,"range":{"start_line":6,"start_character":5,"end_line":6,"end_character":10},"updated":"2018-04-17 13:00:11.000000000","message":"nit: indent","commit_id":"9c2bdc426b59212eb428032315cec79522010b57"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fca2144eb50ef818029e80e2e1a26508fd2b8a48","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    \"nova_object.data\": {"},{"line_number":4,"context_line":"        \"new_volume_id\": \"227cc671-f30b-4488-96fd-7d0bf13648d8\","},{"line_number":5,"context_line":"        \"old_volume_id\": \"a07f71dc-8151-4e7d-a0cc-cd24a3f11113\""},{"line_number":6,"context_line":"        },"},{"line_number":7,"context_line":"    \"nova_object.name\": \"InstanceActionVolumeSwapPayload\","},{"line_number":8,"context_line":"    \"nova_object.namespace\": \"nova\","},{"line_number":9,"context_line":"    \"nova_object.version\": \"1.5\""}],"source_content_type":"application/json","patch_set":6,"id":"9f6a8fd7_ce21d0b6","line":6,"range":{"start_line":6,"start_character":5,"end_line":6,"end_character":10},"in_reply_to":"9f6a8fd7_eb47eb1c","updated":"2018-04-17 16:40:22.000000000","message":"Let\u0027s fix this real quick as besides this the rest looks good.","commit_id":"9c2bdc426b59212eb428032315cec79522010b57"}],"doc/notification_samples/instance-volume_swap-end.json":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2ca6ee95112a7b28f5e31789ffc74b954ffa83c9","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    \"payload\": {"},{"line_number":4,"context_line":"        \"$ref\": \"common_payloads/InstanceActionVolumeSwapPayload.json#\","},{"line_number":5,"context_line":"        \"nova_object.data\": {"},{"line_number":6,"context_line":"            \"block_devices\": [{"},{"line_number":7,"context_line":"                \"nova_object.data\": {"},{"line_number":8,"context_line":"                    \"boot_index\": null,"},{"line_number":9,"context_line":"                    \"delete_on_termination\": false,"},{"line_number":10,"context_line":"                    \"device_name\": \"/dev/sdb\","},{"line_number":11,"context_line":"                    \"tag\": null,"},{"line_number":12,"context_line":"                    \"volume_id\": \"227cc671-f30b-4488-96fd-7d0bf13648d8\""},{"line_number":13,"context_line":"                },"},{"line_number":14,"context_line":"                \"nova_object.name\": \"BlockDevicePayload\","},{"line_number":15,"context_line":"                \"nova_object.namespace\": \"nova\","},{"line_number":16,"context_line":"                \"nova_object.version\": \"1.0\""},{"line_number":17,"context_line":"            }]"},{"line_number":18,"context_line":"        }"},{"line_number":19,"context_line":"    },"},{"line_number":20,"context_line":"    \"priority\": \"INFO\","},{"line_number":21,"context_line":"    \"publisher_id\": \"nova-compute:compute\""}],"source_content_type":"application/json","patch_set":5,"id":"bf659307_611921d5","line":18,"range":{"start_line":6,"start_character":0,"end_line":18,"end_character":9},"updated":"2018-04-13 07:08:28.000000000","message":"only \u0027volume_id\u0027 is different so let\u0027s override that only-\n\"block_devices\": [{\n                \"nova_object.data\": {\n                    \"volume_id\": \"227cc671-f30b-4488-96fd-7d0bf13648d8\"\n                },\n            }]\n        }","commit_id":"c0489fb6333d755b6dd31e62dc5ceea6e2b8821e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"09a43c319b8588dcbb6844ea06ae03cf94ea9114","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    \"payload\": {"},{"line_number":4,"context_line":"        \"$ref\": \"common_payloads/InstanceActionVolumeSwapPayload.json#\","},{"line_number":5,"context_line":"        \"nova_object.data\": {"},{"line_number":6,"context_line":"            \"block_devices\": [{"},{"line_number":7,"context_line":"                \"nova_object.data\": {"},{"line_number":8,"context_line":"                    \"boot_index\": null,"},{"line_number":9,"context_line":"                    \"delete_on_termination\": false,"},{"line_number":10,"context_line":"                    \"device_name\": \"/dev/sdb\","},{"line_number":11,"context_line":"                    \"tag\": null,"},{"line_number":12,"context_line":"                    \"volume_id\": \"227cc671-f30b-4488-96fd-7d0bf13648d8\""},{"line_number":13,"context_line":"                },"},{"line_number":14,"context_line":"                \"nova_object.name\": \"BlockDevicePayload\","},{"line_number":15,"context_line":"                \"nova_object.namespace\": \"nova\","},{"line_number":16,"context_line":"                \"nova_object.version\": \"1.0\""},{"line_number":17,"context_line":"            }]"},{"line_number":18,"context_line":"        }"},{"line_number":19,"context_line":"    },"},{"line_number":20,"context_line":"    \"priority\": \"INFO\","},{"line_number":21,"context_line":"    \"publisher_id\": \"nova-compute:compute\""}],"source_content_type":"application/json","patch_set":5,"id":"9f6a8fd7_e7872ed7","line":18,"range":{"start_line":6,"start_character":0,"end_line":18,"end_character":9},"in_reply_to":"9f6a8fd7_4c0f312e","updated":"2018-04-17 02:17:49.000000000","message":"It is the same:\nnova.tests.functional.notification_sample_tests.test_instance.TestInstanceNotificationSampleOldAttachFlow.test_volume_swap_server\n---------------------------------------------------------------------------------------------------------------------------------\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n      File \"nova/tests/functional/notification_sample_tests/test_instance.py\", line 1142, in test_volume_swap_server\n        actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[6])\n      File \"nova/tests/functional/notification_sample_tests/notification_sample_base.py\", line 150, in _verify_notification\n        self.assertJsonEqual(sample_obj, notification)\n      File \"nova/test.py\", line 537, in assertJsonEqual\n        raise error\n    AssertionError: \n    expected:\n    {u\u0027event_type\u0027: u\u0027instance.volume_swap.end\u0027,\n     u\u0027payload\u0027: {u\u0027nova_object.data\u0027: {u\u0027architecture\u0027: u\u0027x86_64\u0027,\n                                        u\u0027auto_disk_config\u0027: u\u0027MANUAL\u0027,\n                                        u\u0027availability_zone\u0027: u\u0027nova\u0027,\n                                        u\u0027block_devices\u0027: [{u\u0027nova_object.data\u0027: {u\u0027boot_index\u0027: None,\n                                                                                  u\u0027delete_on_termination\u0027: False,\n                                                                                  u\u0027device_name\u0027: u\u0027/dev/sdb\u0027,\n                                                                                  u\u0027tag\u0027: None,\n                                                                                  u\u0027volume_id\u0027: u\u0027227cc671-f30b-4488-96fd-7d0bf13648d8\u0027}}],\n                                        u\u0027created_at\u0027: u\u00272012-10-29T13:42:11Z\u0027,\n                                        u\u0027deleted_at\u0027: None,\n                                        u\u0027display_description\u0027: u\u0027some-server\u0027,\n                                        u\u0027display_name\u0027: u\u0027some-server\u0027,\n                                        u\u0027fault\u0027: None,\n                                        u\u0027flavor\u0027: {u\u0027nova_object.data\u0027: {u\u0027description\u0027: None,\n                                                                          u\u0027disabled\u0027: False,\n                                                                          u\u0027ephemeral_gb\u0027: 0,\n                                                                          u\u0027extra_specs\u0027: {u\u0027hw:watchdog_action\u0027: u\u0027disabled\u0027},\n                                                                          u\u0027flavorid\u0027: u\u0027a22d5517-147c-4147-a0d1-e698df5cd4e3\u0027,\n                                                                          u\u0027is_public\u0027: True,\n                                                                          u\u0027memory_mb\u0027: 512,\n                                                                          u\u0027name\u0027: u\u0027test_flavor\u0027,\n                                                                          u\u0027projects\u0027: None,\n                                                                          u\u0027root_gb\u0027: 1,\n                                                                          u\u0027rxtx_factor\u0027: 1.0,\n                                                                          u\u0027swap\u0027: 0,\n                                                                          u\u0027vcpu_weight\u0027: 0,\n                                                                          u\u0027vcpus\u0027: 1},\n                                                    u\u0027nova_object.name\u0027: u\u0027FlavorPayload\u0027,\n                                                    u\u0027nova_object.namespace\u0027: u\u0027nova\u0027,\n                                                    u\u0027nova_object.version\u0027: u\u00271.4\u0027},\n                                        u\u0027host\u0027: u\u0027compute\u0027,\n                                        u\u0027host_name\u0027: u\u0027some-server\u0027,\n                                        u\u0027image_uuid\u0027: u\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,\n                                        u\u0027ip_addresses\u0027: [{u\u0027nova_object.data\u0027: {u\u0027address\u0027: u\u0027192.168.1.3\u0027,\n                                                                                 u\u0027device_name\u0027: u\u0027tapce531f90-19\u0027,\n                                                                                 u\u0027label\u0027: u\u0027private-network\u0027,\n                                                                                 u\u0027mac\u0027: u\u0027fa:16:3e:4c:2c:30\u0027,\n                                                                                 u\u0027meta\u0027: {},\n                                                                                 u\u0027port_uuid\u0027: u\u0027ce531f90-199f-48c0-816c-13e38010b442\u0027,\n                                                                                 u\u0027version\u0027: 4},\n                                                           u\u0027nova_object.name\u0027: u\u0027IpPayload\u0027,\n                                                           u\u0027nova_object.namespace\u0027: u\u0027nova\u0027,\n                                                           u\u0027nova_object.version\u0027: u\u00271.0\u0027}],\n                                        u\u0027kernel_id\u0027: u\u0027\u0027,\n                                        u\u0027key_name\u0027: u\u0027my-key\u0027,\n                                        u\u0027launched_at\u0027: u\u00272012-10-29T13:42:11Z\u0027,\n                                        u\u0027locked\u0027: False,\n                                        u\u0027metadata\u0027: {},\n                                        u\u0027new_volume_id\u0027: u\u0027227cc671-f30b-4488-96fd-7d0bf13648d8\u0027,\n                                        u\u0027node\u0027: u\u0027fake-mini\u0027,\n                                        u\u0027old_volume_id\u0027: u\u0027a07f71dc-8151-4e7d-a0cc-cd24a3f11113\u0027,\n                                        u\u0027os_type\u0027: None,\n                                        u\u0027power_state\u0027: u\u0027running\u0027,\n                                        u\u0027progress\u0027: 0,\n                                        u\u0027ramdisk_id\u0027: u\u0027\u0027,\n                                        u\u0027reservation_id\u0027: u\u0027r-r1gyvh61\u0027,\n                                        u\u0027state\u0027: u\u0027active\u0027,\n                                        u\u0027task_state\u0027: None,\n                                        u\u0027tenant_id\u0027: u\u00276f70656e737461636b20342065766572\u0027,\n                                        u\u0027terminated_at\u0027: None,\n                                        u\u0027updated_at\u0027: u\u00272012-10-29T13:42:11Z\u0027,\n                                        u\u0027user_id\u0027: u\u0027fake\u0027,\n                                        u\u0027uuid\u0027: u\u00279d77d7ea-6e1c-4d7a-832f-a972f6901ed8\u0027},\n                  u\u0027nova_object.name\u0027: u\u0027InstanceActionVolumeSwapPayload\u0027,\n                  u\u0027nova_object.namespace\u0027: u\u0027nova\u0027,\n                  u\u0027nova_object.version\u0027: u\u00271.5\u0027},\n     u\u0027priority\u0027: u\u0027INFO\u0027,\n     u\u0027publisher_id\u0027: u\u0027nova-compute:compute\u0027}\n    actual:\n    {\u0027event_type\u0027: u\u0027instance.volume_swap.end\u0027,\n     \u0027payload\u0027: {\u0027nova_object.data\u0027: {\u0027architecture\u0027: u\u0027x86_64\u0027,\n                                      \u0027auto_disk_config\u0027: u\u0027MANUAL\u0027,\n                                      \u0027availability_zone\u0027: u\u0027nova\u0027,\n                                      \u0027block_devices\u0027: [{\u0027nova_object.data\u0027: {\u0027boot_index\u0027: None,\n                                                                              \u0027delete_on_termination\u0027: False,\n                                                                              \u0027device_name\u0027: u\u0027/dev/sdb\u0027,\n                                                                              \u0027tag\u0027: None,\n                                                                              \u0027volume_id\u0027: \u0027227cc671-f30b-4488-96fd-7d0bf13648d8\u0027},\n                                                         \u0027nova_object.name\u0027: \u0027BlockDevicePayload\u0027,\n                                                         \u0027nova_object.namespace\u0027: \u0027nova\u0027,\n                                                         \u0027nova_object.version\u0027: \u00271.0\u0027}],\n                                      \u0027created_at\u0027: \u00272012-10-29T13:42:11Z\u0027,\n                                      \u0027deleted_at\u0027: None,\n                                      \u0027display_description\u0027: u\u0027some-server\u0027,\n                                      \u0027display_name\u0027: u\u0027some-server\u0027,\n                                      \u0027fault\u0027: None,\n                                      \u0027flavor\u0027: {\u0027nova_object.data\u0027: {\u0027description\u0027: None,\n                                                                      \u0027disabled\u0027: False,\n                                                                      \u0027ephemeral_gb\u0027: 0,\n                                                                      \u0027extra_specs\u0027: {u\u0027hw:watchdog_action\u0027: u\u0027disabled\u0027},\n                                                                      \u0027flavorid\u0027: u\u0027a22d5517-147c-4147-a0d1-e698df5cd4e3\u0027,\n                                                                      \u0027is_public\u0027: True,\n                                                                      \u0027memory_mb\u0027: 512,\n                                                                      \u0027name\u0027: u\u0027test_flavor\u0027,\n                                                                      \u0027projects\u0027: None,\n                                                                      \u0027root_gb\u0027: 1,\n                                                                      \u0027rxtx_factor\u0027: 1.0,\n                                                                      \u0027swap\u0027: 0,\n                                                                      \u0027vcpu_weight\u0027: 0,\n                                                                      \u0027vcpus\u0027: 1},\n                                                 \u0027nova_object.name\u0027: \u0027FlavorPayload\u0027,\n                                                 \u0027nova_object.namespace\u0027: \u0027nova\u0027,\n                                                 \u0027nova_object.version\u0027: \u00271.4\u0027},\n                                      \u0027host\u0027: u\u0027compute\u0027,\n                                      \u0027host_name\u0027: u\u0027some-server\u0027,\n                                      \u0027image_uuid\u0027: u\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,\n                                      \u0027ip_addresses\u0027: [{\u0027nova_object.data\u0027: {\u0027address\u0027: \u0027192.168.1.3\u0027,\n                                                                             \u0027device_name\u0027: u\u0027tapce531f90-19\u0027,\n                                                                             \u0027label\u0027: u\u0027private-network\u0027,\n                                                                             \u0027mac\u0027: u\u0027fa:16:3e:4c:2c:30\u0027,\n                                                                             \u0027meta\u0027: {},\n                                                                             \u0027port_uuid\u0027: \u0027ce531f90-199f-48c0-816c-13e38010b442\u0027,\n                                                                             \u0027version\u0027: 4},\n                                                        \u0027nova_object.name\u0027: \u0027IpPayload\u0027,\n                                                        \u0027nova_object.namespace\u0027: \u0027nova\u0027,\n                                                        \u0027nova_object.version\u0027: \u00271.0\u0027}],\n                                      \u0027kernel_id\u0027: u\u0027\u0027,\n                                      \u0027key_name\u0027: u\u0027my-key\u0027,\n                                      \u0027launched_at\u0027: \u00272012-10-29T13:42:11Z\u0027,\n                                      \u0027locked\u0027: False,\n                                      \u0027metadata\u0027: {},\n                                      \u0027new_volume_id\u0027: \u0027227cc671-f30b-4488-96fd-7d0bf13648d8\u0027,\n                                      \u0027node\u0027: u\u0027fake-mini\u0027,\n                                      \u0027old_volume_id\u0027: \u0027a07f71dc-8151-4e7d-a0cc-cd24a3f11113\u0027,\n                                      \u0027os_type\u0027: None,\n                                      \u0027power_state\u0027: u\u0027running\u0027,\n                                      \u0027progress\u0027: 0,\n                                      \u0027ramdisk_id\u0027: u\u0027\u0027,\n                                      \u0027reservation_id\u0027: u\u0027r-r1gyvh61\u0027,\n                                      \u0027state\u0027: u\u0027active\u0027,\n                                      \u0027task_state\u0027: None,\n                                      \u0027tenant_id\u0027: u\u00276f70656e737461636b20342065766572\u0027,\n                                      \u0027terminated_at\u0027: None,\n                                      \u0027updated_at\u0027: \u00272012-10-29T13:42:11Z\u0027,\n                                      \u0027user_id\u0027: u\u0027fake\u0027,\n                                      \u0027uuid\u0027: \u00279d77d7ea-6e1c-4d7a-832f-a972f6901ed8\u0027},\n                 \u0027nova_object.name\u0027: \u0027InstanceActionVolumeSwapPayload\u0027,\n                 \u0027nova_object.namespace\u0027: \u0027nova\u0027,\n                 \u0027nova_object.version\u0027: \u00271.5\u0027},\n     \u0027priority\u0027: \u0027INFO\u0027,\n     \u0027publisher_id\u0027: u\u0027nova-compute:compute\u0027}\n    difference:\n    1 !\u003d 4: path: root.payload.nova_object.data.block_devices[0]. Different dict key sets\n    expected\u003d[u\u0027nova_object.data\u0027]\n    observed\u003d[\u0027nova_object.data\u0027, \u0027nova_object.name\u0027, \u0027nova_object.namespace\u0027, \u0027nova_object.version\u0027]\n    difference\u003d[\u0027nova_object.namespace\u0027, \u0027nova_object.name\u0027, \u0027nova_object.version\u0027]\n    \n\nI\u0027d say lets keep it the current way.","commit_id":"c0489fb6333d755b6dd31e62dc5ceea6e2b8821e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"20383cd5f80897a040dc25e1a27ea50a4488fabf","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    \"payload\": {"},{"line_number":4,"context_line":"        \"$ref\": \"common_payloads/InstanceActionVolumeSwapPayload.json#\","},{"line_number":5,"context_line":"        \"nova_object.data\": {"},{"line_number":6,"context_line":"            \"block_devices\": [{"},{"line_number":7,"context_line":"                \"nova_object.data\": {"},{"line_number":8,"context_line":"                    \"boot_index\": null,"},{"line_number":9,"context_line":"                    \"delete_on_termination\": false,"},{"line_number":10,"context_line":"                    \"device_name\": \"/dev/sdb\","},{"line_number":11,"context_line":"                    \"tag\": null,"},{"line_number":12,"context_line":"                    \"volume_id\": \"227cc671-f30b-4488-96fd-7d0bf13648d8\""},{"line_number":13,"context_line":"                },"},{"line_number":14,"context_line":"                \"nova_object.name\": \"BlockDevicePayload\","},{"line_number":15,"context_line":"                \"nova_object.namespace\": \"nova\","},{"line_number":16,"context_line":"                \"nova_object.version\": \"1.0\""},{"line_number":17,"context_line":"            }]"},{"line_number":18,"context_line":"        }"},{"line_number":19,"context_line":"    },"},{"line_number":20,"context_line":"    \"priority\": \"INFO\","},{"line_number":21,"context_line":"    \"publisher_id\": \"nova-compute:compute\""}],"source_content_type":"application/json","patch_set":5,"id":"9f6a8fd7_4c0f312e","line":18,"range":{"start_line":6,"start_character":0,"end_line":18,"end_character":9},"in_reply_to":"9f6a8fd7_714bf886","updated":"2018-04-16 12:02:26.000000000","message":"i missed the data object. it should be like below-\n\n            \"block_devices\": [{\n                \"nova_object.data\": {\n                    \"boot_index\": null,\n                    \"delete_on_termination\": false,\n                    \"device_name\": \"/dev/sdb\",\n                    \"tag\": null,\n                    \"volume_id\": \"227cc671-f30b-4488-96fd-7d0bf13648d8\"\n                }}]","commit_id":"c0489fb6333d755b6dd31e62dc5ceea6e2b8821e"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"41e3768fffc2fe116fbb7e1274f2a7dad1730c59","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    \"payload\": {"},{"line_number":4,"context_line":"        \"$ref\": \"common_payloads/InstanceActionVolumeSwapPayload.json#\","},{"line_number":5,"context_line":"        \"nova_object.data\": {"},{"line_number":6,"context_line":"            \"block_devices\": [{"},{"line_number":7,"context_line":"                \"nova_object.data\": {"},{"line_number":8,"context_line":"                    \"boot_index\": null,"},{"line_number":9,"context_line":"                    \"delete_on_termination\": false,"},{"line_number":10,"context_line":"                    \"device_name\": \"/dev/sdb\","},{"line_number":11,"context_line":"                    \"tag\": null,"},{"line_number":12,"context_line":"                    \"volume_id\": \"227cc671-f30b-4488-96fd-7d0bf13648d8\""},{"line_number":13,"context_line":"                },"},{"line_number":14,"context_line":"                \"nova_object.name\": \"BlockDevicePayload\","},{"line_number":15,"context_line":"                \"nova_object.namespace\": \"nova\","},{"line_number":16,"context_line":"                \"nova_object.version\": \"1.0\""},{"line_number":17,"context_line":"            }]"},{"line_number":18,"context_line":"        }"},{"line_number":19,"context_line":"    },"},{"line_number":20,"context_line":"    \"priority\": \"INFO\","},{"line_number":21,"context_line":"    \"publisher_id\": \"nova-compute:compute\""}],"source_content_type":"application/json","patch_set":5,"id":"9f6a8fd7_7f739ee8","line":18,"range":{"start_line":6,"start_character":0,"end_line":18,"end_character":9},"in_reply_to":"9f6a8fd7_e7872ed7","updated":"2018-04-17 08:00:31.000000000","message":"ah, it is just replacing the value as it is list of dict. we can append using update etc but that will  be unreadable. \nI think it is good as it is currently.","commit_id":"c0489fb6333d755b6dd31e62dc5ceea6e2b8821e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"ef7b1ff19927395332d9e23ce4c9b605fb873131","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    \"payload\": {"},{"line_number":4,"context_line":"        \"$ref\": \"common_payloads/InstanceActionVolumeSwapPayload.json#\","},{"line_number":5,"context_line":"        \"nova_object.data\": {"},{"line_number":6,"context_line":"            \"block_devices\": [{"},{"line_number":7,"context_line":"                \"nova_object.data\": {"},{"line_number":8,"context_line":"                    \"boot_index\": null,"},{"line_number":9,"context_line":"                    \"delete_on_termination\": false,"},{"line_number":10,"context_line":"                    \"device_name\": \"/dev/sdb\","},{"line_number":11,"context_line":"                    \"tag\": null,"},{"line_number":12,"context_line":"                    \"volume_id\": \"227cc671-f30b-4488-96fd-7d0bf13648d8\""},{"line_number":13,"context_line":"                },"},{"line_number":14,"context_line":"                \"nova_object.name\": \"BlockDevicePayload\","},{"line_number":15,"context_line":"                \"nova_object.namespace\": \"nova\","},{"line_number":16,"context_line":"                \"nova_object.version\": \"1.0\""},{"line_number":17,"context_line":"            }]"},{"line_number":18,"context_line":"        }"},{"line_number":19,"context_line":"    },"},{"line_number":20,"context_line":"    \"priority\": \"INFO\","},{"line_number":21,"context_line":"    \"publisher_id\": \"nova-compute:compute\""}],"source_content_type":"application/json","patch_set":5,"id":"bf659307_622600d1","line":18,"range":{"start_line":6,"start_character":0,"end_line":18,"end_character":9},"in_reply_to":"bf659307_611921d5","updated":"2018-04-13 09:15:15.000000000","message":"I did do test like this, but it seems cannot work.","commit_id":"c0489fb6333d755b6dd31e62dc5ceea6e2b8821e"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"56980e2385e6b2d380046f3820fe7f1df3b6f379","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    \"payload\": {"},{"line_number":4,"context_line":"        \"$ref\": \"common_payloads/InstanceActionVolumeSwapPayload.json#\","},{"line_number":5,"context_line":"        \"nova_object.data\": {"},{"line_number":6,"context_line":"            \"block_devices\": [{"},{"line_number":7,"context_line":"                \"nova_object.data\": {"},{"line_number":8,"context_line":"                    \"boot_index\": null,"},{"line_number":9,"context_line":"                    \"delete_on_termination\": false,"},{"line_number":10,"context_line":"                    \"device_name\": \"/dev/sdb\","},{"line_number":11,"context_line":"                    \"tag\": null,"},{"line_number":12,"context_line":"                    \"volume_id\": \"227cc671-f30b-4488-96fd-7d0bf13648d8\""},{"line_number":13,"context_line":"                },"},{"line_number":14,"context_line":"                \"nova_object.name\": \"BlockDevicePayload\","},{"line_number":15,"context_line":"                \"nova_object.namespace\": \"nova\","},{"line_number":16,"context_line":"                \"nova_object.version\": \"1.0\""},{"line_number":17,"context_line":"            }]"},{"line_number":18,"context_line":"        }"},{"line_number":19,"context_line":"    },"},{"line_number":20,"context_line":"    \"priority\": \"INFO\","},{"line_number":21,"context_line":"    \"publisher_id\": \"nova-compute:compute\""}],"source_content_type":"application/json","patch_set":5,"id":"9f6a8fd7_714bf886","line":18,"range":{"start_line":6,"start_character":0,"end_line":18,"end_character":9},"in_reply_to":"bf659307_622600d1","updated":"2018-04-16 01:42:54.000000000","message":"I test again, It cannot work:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nFailed 1 tests - output below:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nnova.tests.functional.notification_sample_tests.test_instance.TestInstanceNotificationSample.test_volume_swap_server\n--------------------------------------------------------------------------------------------------------------------\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n      File \"nova/tests/functional/notification_sample_tests/test_instance.py\", line 1142, in test_volume_swap_server\n        actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[6])\n      File \"nova/tests/functional/notification_sample_tests/notification_sample_base.py\", line 150, in _verify_notification\n        self.assertJsonEqual(sample_obj, notification)\n      File \"nova/test.py\", line 537, in assertJsonEqual\n        raise error\n    AssertionError: \n    expected:\n    {u\u0027event_type\u0027: u\u0027instance.volume_swap.end\u0027,\n     u\u0027payload\u0027: {u\u0027nova_object.data\u0027: {u\u0027architecture\u0027: u\u0027x86_64\u0027,\n                                        u\u0027auto_disk_config\u0027: u\u0027MANUAL\u0027,\n                                        u\u0027availability_zone\u0027: u\u0027nova\u0027,\n                                        u\u0027block_devices\u0027: [{u\u0027nova_object.data\u0027: {u\u0027volume_id\u0027: u\u0027227cc671-f30b-4488-96fd-7d0bf13648d8\u0027},\n                                                            u\u0027nova_object.name\u0027: u\u0027BlockDevicePayload\u0027,\n                                                            u\u0027nova_object.namespace\u0027: u\u0027nova\u0027,\n                                                            u\u0027nova_object.version\u0027: u\u00271.0\u0027}],\n                                        u\u0027created_at\u0027: u\u00272012-10-29T13:42:11Z\u0027,\n                                        u\u0027deleted_at\u0027: None,\n                                        u\u0027display_description\u0027: u\u0027some-server\u0027,\n                                        u\u0027display_name\u0027: u\u0027some-server\u0027,\n                                        u\u0027fault\u0027: None,\n                                        u\u0027flavor\u0027: {u\u0027nova_object.data\u0027: {u\u0027description\u0027: None,\n                                                                          u\u0027disabled\u0027: False,\n                                                                          u\u0027ephemeral_gb\u0027: 0,\n                                                                          u\u0027extra_specs\u0027: {u\u0027hw:watchdog_action\u0027: u\u0027disabled\u0027},\n                                                                          u\u0027flavorid\u0027: u\u0027a22d5517-147c-4147-a0d1-e698df5cd4e3\u0027,\n                                                                          u\u0027is_public\u0027: True,\n                                                                          u\u0027memory_mb\u0027: 512,\n                                                                          u\u0027name\u0027: u\u0027test_flavor\u0027,\n                                                                          u\u0027projects\u0027: None,\n                                                                          u\u0027root_gb\u0027: 1,\n                                                                          u\u0027rxtx_factor\u0027: 1.0,\n                                                                          u\u0027swap\u0027: 0,\n                                                                          u\u0027vcpu_weight\u0027: 0,\n                                                                          u\u0027vcpus\u0027: 1},\n                                                    u\u0027nova_object.name\u0027: u\u0027FlavorPayload\u0027,\n                                                    u\u0027nova_object.namespace\u0027: u\u0027nova\u0027,\n                                                    u\u0027nova_object.version\u0027: u\u00271.4\u0027},\n                                        u\u0027host\u0027: u\u0027compute\u0027,\n                                        u\u0027host_name\u0027: u\u0027some-server\u0027,\n                                        u\u0027image_uuid\u0027: u\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,\n                                        u\u0027ip_addresses\u0027: [{u\u0027nova_object.data\u0027: {u\u0027address\u0027: u\u0027192.168.1.3\u0027,\n                                                                                 u\u0027device_name\u0027: u\u0027tapce531f90-19\u0027,\n                                                                                 u\u0027label\u0027: u\u0027private-network\u0027,\n                                                                                 u\u0027mac\u0027: u\u0027fa:16:3e:4c:2c:30\u0027,\n                                                                                 u\u0027meta\u0027: {},\n                                                                                 u\u0027port_uuid\u0027: u\u0027ce531f90-199f-48c0-816c-13e38010b442\u0027,\n                                                                                 u\u0027version\u0027: 4},\n                                                           u\u0027nova_object.name\u0027: u\u0027IpPayload\u0027,\n                                                           u\u0027nova_object.namespace\u0027: u\u0027nova\u0027,\n                                                           u\u0027nova_object.version\u0027: u\u00271.0\u0027}],\n                                        u\u0027kernel_id\u0027: u\u0027\u0027,\n                                        u\u0027key_name\u0027: u\u0027my-key\u0027,\n                                        u\u0027launched_at\u0027: u\u00272012-10-29T13:42:11Z\u0027,\n                                        u\u0027locked\u0027: False,\n                                        u\u0027metadata\u0027: {},\n                                        u\u0027new_volume_id\u0027: u\u0027227cc671-f30b-4488-96fd-7d0bf13648d8\u0027,\n                                        u\u0027node\u0027: u\u0027fake-mini\u0027,\n                                        u\u0027old_volume_id\u0027: u\u0027a07f71dc-8151-4e7d-a0cc-cd24a3f11113\u0027,\n                                        u\u0027os_type\u0027: None,\n                                        u\u0027power_state\u0027: u\u0027running\u0027,\n                                        u\u0027progress\u0027: 0,\n                                        u\u0027ramdisk_id\u0027: u\u0027\u0027,\n                                        u\u0027reservation_id\u0027: u\u0027r-asqwnng5\u0027,\n                                        u\u0027state\u0027: u\u0027active\u0027,\n                                        u\u0027task_state\u0027: None,\n                                        u\u0027tenant_id\u0027: u\u00276f70656e737461636b20342065766572\u0027,\n                                        u\u0027terminated_at\u0027: None,\n                                        u\u0027updated_at\u0027: u\u00272012-10-29T13:42:11Z\u0027,\n                                        u\u0027user_id\u0027: u\u0027fake\u0027,\n                                        u\u0027uuid\u0027: u\u002786a05a22-256d-4736-af28-5bb10bfcad85\u0027},\n                  u\u0027nova_object.name\u0027: u\u0027InstanceActionVolumeSwapPayload\u0027,\n                  u\u0027nova_object.namespace\u0027: u\u0027nova\u0027,\n                  u\u0027nova_object.version\u0027: u\u00271.5\u0027},\n     u\u0027priority\u0027: u\u0027INFO\u0027,\n     u\u0027publisher_id\u0027: u\u0027nova-compute:compute\u0027}\n    actual:\n    {\u0027event_type\u0027: u\u0027instance.volume_swap.end\u0027,\n     \u0027payload\u0027: {\u0027nova_object.data\u0027: {\u0027architecture\u0027: u\u0027x86_64\u0027,\n                                      \u0027auto_disk_config\u0027: u\u0027MANUAL\u0027,\n                                      \u0027availability_zone\u0027: u\u0027nova\u0027,\n                                      \u0027block_devices\u0027: [{\u0027nova_object.data\u0027: {\u0027boot_index\u0027: None,\n                                                                              \u0027delete_on_termination\u0027: False,\n                                                                              \u0027device_name\u0027: u\u0027/dev/sdb\u0027,\n                                                                              \u0027tag\u0027: None,\n                                                                              \u0027volume_id\u0027: \u0027227cc671-f30b-4488-96fd-7d0bf13648d8\u0027},\n                                                         \u0027nova_object.name\u0027: \u0027BlockDevicePayload\u0027,\n                                                         \u0027nova_object.namespace\u0027: \u0027nova\u0027,\n                                                         \u0027nova_object.version\u0027: \u00271.0\u0027}],\n                                      \u0027created_at\u0027: \u00272012-10-29T13:42:11Z\u0027,\n                                      \u0027deleted_at\u0027: None,\n                                      \u0027display_description\u0027: u\u0027some-server\u0027,\n                                      \u0027display_name\u0027: u\u0027some-server\u0027,\n                                      \u0027fault\u0027: None,\n                                      \u0027flavor\u0027: {\u0027nova_object.data\u0027: {\u0027description\u0027: None,\n                                                                      \u0027disabled\u0027: False,\n                                                                      \u0027ephemeral_gb\u0027: 0,\n                                                                      \u0027extra_specs\u0027: {u\u0027hw:watchdog_action\u0027: u\u0027disabled\u0027},\n                                                                      \u0027flavorid\u0027: u\u0027a22d5517-147c-4147-a0d1-e698df5cd4e3\u0027,\n                                                                      \u0027is_public\u0027: True,\n                                                                      \u0027memory_mb\u0027: 512,\n                                                                      \u0027name\u0027: u\u0027test_flavor\u0027,\n                                                                      \u0027projects\u0027: None,\n                                                                      \u0027root_gb\u0027: 1,\n                                                                      \u0027rxtx_factor\u0027: 1.0,\n                                                                      \u0027swap\u0027: 0,\n                                                                      \u0027vcpu_weight\u0027: 0,\n                                                                      \u0027vcpus\u0027: 1},\n                                                 \u0027nova_object.name\u0027: \u0027FlavorPayload\u0027,\n                                                 \u0027nova_object.namespace\u0027: \u0027nova\u0027,\n                                                 \u0027nova_object.version\u0027: \u00271.4\u0027},\n                                      \u0027host\u0027: u\u0027compute\u0027,\n                                      \u0027host_name\u0027: u\u0027some-server\u0027,\n                                      \u0027image_uuid\u0027: u\u0027155d900f-4e14-4e4c-a73d-069cbf4541e6\u0027,\n                                      \u0027ip_addresses\u0027: [{\u0027nova_object.data\u0027: {\u0027address\u0027: \u0027192.168.1.3\u0027,\n                                                                             \u0027device_name\u0027: u\u0027tapce531f90-19\u0027,\n                                                                             \u0027label\u0027: u\u0027private-network\u0027,\n                                                                             \u0027mac\u0027: u\u0027fa:16:3e:4c:2c:30\u0027,\n                                                                             \u0027meta\u0027: {},\n                                                                             \u0027port_uuid\u0027: \u0027ce531f90-199f-48c0-816c-13e38010b442\u0027,\n                                                                             \u0027version\u0027: 4},\n                                                        \u0027nova_object.name\u0027: \u0027IpPayload\u0027,\n                                                        \u0027nova_object.namespace\u0027: \u0027nova\u0027,\n                                                        \u0027nova_object.version\u0027: \u00271.0\u0027}],\n                                      \u0027kernel_id\u0027: u\u0027\u0027,\n                                      \u0027key_name\u0027: u\u0027my-key\u0027,\n                                      \u0027launched_at\u0027: \u00272012-10-29T13:42:11Z\u0027,\n                                      \u0027locked\u0027: False,\n                                      \u0027metadata\u0027: {},\n                                      \u0027new_volume_id\u0027: \u0027227cc671-f30b-4488-96fd-7d0bf13648d8\u0027,\n                                      \u0027node\u0027: u\u0027fake-mini\u0027,\n                                      \u0027old_volume_id\u0027: \u0027a07f71dc-8151-4e7d-a0cc-cd24a3f11113\u0027,\n                                      \u0027os_type\u0027: None,\n                                      \u0027power_state\u0027: u\u0027running\u0027,\n                                      \u0027progress\u0027: 0,\n                                      \u0027ramdisk_id\u0027: u\u0027\u0027,\n                                      \u0027reservation_id\u0027: u\u0027r-asqwnng5\u0027,\n                                      \u0027state\u0027: u\u0027active\u0027,\n                                      \u0027task_state\u0027: None,\n                                      \u0027tenant_id\u0027: u\u00276f70656e737461636b20342065766572\u0027,\n                                      \u0027terminated_at\u0027: None,\n                                      \u0027updated_at\u0027: \u00272012-10-29T13:42:11Z\u0027,\n                                      \u0027user_id\u0027: u\u0027fake\u0027,\n                                      \u0027uuid\u0027: \u002786a05a22-256d-4736-af28-5bb10bfcad85\u0027},\n                 \u0027nova_object.name\u0027: \u0027InstanceActionVolumeSwapPayload\u0027,\n                 \u0027nova_object.namespace\u0027: \u0027nova\u0027,\n                 \u0027nova_object.version\u0027: \u00271.5\u0027},\n     \u0027priority\u0027: \u0027INFO\u0027,\n     \u0027publisher_id\u0027: u\u0027nova-compute:compute\u0027}\n    difference:\n    1 !\u003d 5: path: root.payload.nova_object.data.block_devices[0].nova_object.data. Different dict key sets\n    expected\u003d[u\u0027volume_id\u0027]\n    observed\u003d[\u0027boot_index\u0027, \u0027delete_on_termination\u0027, \u0027device_name\u0027, \u0027tag\u0027, \u0027volume_id\u0027]\n    difference\u003d[\u0027device_name\u0027, \u0027boot_index\u0027, \u0027tag\u0027, \u0027delete_on_termination\u0027]","commit_id":"c0489fb6333d755b6dd31e62dc5ceea6e2b8821e"}]}
