)]}'
{"devstack/plugin.sh":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9755cb74b273632fb4e0959ab65ed40d7e304ac3","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    # Plugin config - enable versioned notifications for flavor"},{"line_number":150,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor enabled True"},{"line_number":151,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notifications_topics_exchanges versioned_notifications,nova"},{"line_number":152,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor use_versioned_notifications \u003d true"},{"line_number":153,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notification_maj_version \u003d 1"},{"line_number":154,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notification_min_version \u003d 3"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    # Plugin config - disable swift by default since it\u0027s not typically installed"},{"line_number":157,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_swift_account enabled False"}],"source_content_type":"text/x-sh","patch_set":5,"id":"5ff73747_7104327c","line":154,"range":{"start_line":152,"start_character":0,"end_line":154,"end_character":88},"updated":"2017-04-24 07:49:41.000000000","message":"Unfortunately there is not a single version number for the whole notification interface(like in the nova REST API) but instead every notifications has a payload class defined in [1], [2] and every payload class has a separate version number.\n\n[1]https://docs.openstack.org/developer/nova/notifications.html\n[2]https://github.com/openstack/nova/tree/master/nova/notifications/objects","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"e3e6e91ce5df0d8a2485aff0e8099387792b30a8","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    # Plugin config - enable versioned notifications for flavor"},{"line_number":150,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor enabled True"},{"line_number":151,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notifications_topics_exchanges versioned_notifications,nova"},{"line_number":152,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor use_versioned_notifications \u003d true"},{"line_number":153,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notification_maj_version \u003d 1"},{"line_number":154,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notification_min_version \u003d 3"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    # Plugin config - disable swift by default since it\u0027s not typically installed"},{"line_number":157,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_swift_account enabled False"}],"source_content_type":"text/x-sh","patch_set":5,"id":"3f044301_69032044","line":154,"range":{"start_line":152,"start_character":0,"end_line":154,"end_character":88},"in_reply_to":"5ff73747_7104327c","updated":"2017-05-04 14:48:30.000000000","message":"That\u0027s a bit unfortunate. After some thought I\u0027m going o  put this in the code rather than config; there\u0027s no user configurable value that would change anything since any incompatibility is in the code.","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"fa28ae60d14c4372c16cb337284ca03ab22bccf6","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    # Plugin config - enable versioned notifications for flavor"},{"line_number":150,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor enabled True"},{"line_number":151,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notifications_topics_exchanges versioned_notifications,nova"},{"line_number":152,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor use_versioned_notifications \u003d true"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    # Plugin config - disable swift by default since it\u0027s not typically installed"},{"line_number":155,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_swift_account enabled False"}],"source_content_type":"text/x-sh","patch_set":6,"id":"1f013ff3_8ebe3963","line":152,"range":{"start_line":152,"start_character":45,"end_line":152,"end_character":59},"updated":"2017-05-17 03:03:14.000000000","message":"It should be:\niniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server use_versioned_notifications  true\n\nand missing:\niniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server notifications_topics_exchanges versioned_notifications,nova","commit_id":"a2d62b5613d80543f5ca9af6575b1cdb40258442"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"d3deeaba9dd0a635581d8fc5bcacdde6b38b99a2","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    # Plugin config - enable versioned notifications for flavor"},{"line_number":150,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor enabled True"},{"line_number":151,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notifications_topics_exchanges versioned_notifications,nova"},{"line_number":152,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor use_versioned_notifications \u003d true"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    # Plugin config - disable swift by default since it\u0027s not typically installed"},{"line_number":155,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_swift_account enabled False"}],"source_content_type":"text/x-sh","patch_set":6,"id":"ff0f0b1f_5c4ff1bc","line":152,"range":{"start_line":152,"start_character":45,"end_line":152,"end_character":59},"in_reply_to":"1f013ff3_3f418d0c","updated":"2017-05-18 08:15:56.000000000","message":"seems correct","commit_id":"a2d62b5613d80543f5ca9af6575b1cdb40258442"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"be69c92f3269c4dad2bc1ee6883fd31444d7258e","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    # Plugin config - enable versioned notifications for flavor"},{"line_number":150,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor enabled True"},{"line_number":151,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notifications_topics_exchanges versioned_notifications,nova"},{"line_number":152,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor use_versioned_notifications \u003d true"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    # Plugin config - disable swift by default since it\u0027s not typically installed"},{"line_number":155,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_swift_account enabled False"}],"source_content_type":"text/x-sh","patch_set":6,"id":"1f013ff3_3f418d0c","line":152,"range":{"start_line":152,"start_character":45,"end_line":152,"end_character":59},"in_reply_to":"1f013ff3_8ebe3963","updated":"2017-05-17 03:20:42.000000000","message":"Seems that if any of the enabled plugin has notifications_topics_exchanges\u003dversioned_notifications,nova, we don\u0027t need to specify it again for server plugin[1] ? if so, we need to note this somewhere in the doc.\n\n[1]: https://github.com/openstack/searchlight/blob/master/searchlight/listener.py#L139-L152","commit_id":"a2d62b5613d80543f5ca9af6575b1cdb40258442"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"66dca52cecba7638641dcbedff3d4d924f89b513","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    # Plugin config - enable versioned notifications for flavor"},{"line_number":150,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor enabled True"},{"line_number":151,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notifications_topics_exchanges versioned_notifications,nova"},{"line_number":152,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor use_versioned_notifications \u003d true"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server enabled True"},{"line_number":155,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server notifications_topics_exchanges versioned_notifications,nova"}],"source_content_type":"text/x-sh","patch_set":8,"id":"df140735_baa0a891","line":152,"updated":"2017-06-05 06:54:28.000000000","message":"The configured value is wrong, should be: iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor use_versioned_notifications true","commit_id":"d69a63320f4388f6ef1841dcb27e5dc8083e2a12"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"f45625dc66e194b2a315aba90b12087816564e74","unresolved":false,"context_lines":[{"line_number":149,"context_line":"    # Plugin config - enable versioned notifications for flavor"},{"line_number":150,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor enabled True"},{"line_number":151,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor notifications_topics_exchanges versioned_notifications,nova"},{"line_number":152,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_flavor use_versioned_notifications \u003d true"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server enabled True"},{"line_number":155,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server notifications_topics_exchanges versioned_notifications,nova"}],"source_content_type":"text/x-sh","patch_set":8,"id":"df140735_3d0b72d6","line":152,"in_reply_to":"df140735_baa0a891","updated":"2017-06-05 08:08:00.000000000","message":"Why we added flavor here? I think we are only supporting servers now?","commit_id":"d69a63320f4388f6ef1841dcb27e5dc8083e2a12"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"66dca52cecba7638641dcbedff3d4d924f89b513","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server enabled True"},{"line_number":155,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server notifications_topics_exchanges versioned_notifications,nova"},{"line_number":156,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server use_versioned_notifications \u003d true"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    # Plugin config - disable swift by default since it\u0027s not typically installed"},{"line_number":159,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_swift_account enabled False"}],"source_content_type":"text/x-sh","patch_set":8,"id":"df140735_3abed8b3","line":156,"updated":"2017-06-05 06:54:28.000000000","message":"ditto","commit_id":"d69a63320f4388f6ef1841dcb27e5dc8083e2a12"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"2d4d41bb0055261d82c3f1b7bb284db5a5a84d7f","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server enabled True"},{"line_number":154,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server notifications_topics_exchanges versioned_notifications,nova"},{"line_number":155,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_nova_server use_versioned_notifications true"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    # Plugin config - disable swift by default since it\u0027s not typically installed"},{"line_number":158,"context_line":"    iniset $SEARCHLIGHT_CONF resource_plugin:os_swift_account enabled False"}],"source_content_type":"text/x-sh","patch_set":11,"id":"bf091321_54ab481c","line":155,"range":{"start_line":155,"start_character":88,"end_line":155,"end_character":92},"updated":"2017-06-08 14:44:23.000000000","message":"This is not a big deal thing, perhaps to change \u0027true\u0027 to \u0027True\u0027 for consistency？","commit_id":"e89659c27dce7909dfed097edfd9d21e218b25b0"}],"releasenotes/notes/bp-nova-versioned-notifications-ffa01feeaf688414.yaml":[{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"66dca52cecba7638641dcbedff3d4d924f89b513","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    Configuration needs changing to support versioned notifications; see docs."},{"line_number":18,"context_line":"deprecations:"},{"line_number":19,"context_line":"  - |"},{"line_number":20,"context_line":"    List deprecations notes here, or remove this section.  All of the list"},{"line_number":21,"context_line":"    items in this section are combined when the release notes are rendered, so"},{"line_number":22,"context_line":"    the text needs to be worded so that it does not depend on any information"},{"line_number":23,"context_line":"    only available in another section, such as the prelude. This may mean"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"df140735_9a1a8414","line":20,"updated":"2017-06-05 06:54:28.000000000","message":"Should remove these auto generated sections from release notes: )","commit_id":"d69a63320f4388f6ef1841dcb27e5dc8083e2a12"}],"searchlight/elasticsearch/plugins/nova/__init__.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b79e3986908f56ab2e335193a50ba4e3ab36bb19","unresolved":false,"context_lines":[{"line_number":86,"context_line":"def serialize_server_versioned(payload):"},{"line_number":87,"context_line":"    # Based on currently documented 1.3"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    # Some transforms - maybe these could be made the same in nova?"},{"line_number":90,"context_line":"    transform_keys \u003d [(\u0027display_description\u0027, \u0027description\u0027),"},{"line_number":91,"context_line":"                      (\u0027display_name\u0027, \u0027name\u0027), (\u0027uuid\u0027, \u0027id\u0027)]"},{"line_number":92,"context_line":"    for src, dest in transform_keys:"},{"line_number":93,"context_line":"        payload[dest] \u003d payload.pop(src)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_55dc8645","line":91,"range":{"start_line":89,"start_character":0,"end_line":91,"end_character":63},"updated":"2017-04-05 15:33:35.000000000","message":"This can be done in nova. The actual change would be adding new fields with the names you need and keeping the old fields as well for backward compatibility. But I guess not using a field is not a problem for you.","commit_id":"e463d57ad2ed0275736fdc49bd9f4f0c9b6da109"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"cbef8cbd141deab12c5dcc95ee1dd9a31a103492","unresolved":false,"context_lines":[{"line_number":86,"context_line":"def serialize_server_versioned(payload):"},{"line_number":87,"context_line":"    # Based on currently documented 1.3"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    # Some transforms - maybe these could be made the same in nova?"},{"line_number":90,"context_line":"    transform_keys \u003d [(\u0027display_description\u0027, \u0027description\u0027),"},{"line_number":91,"context_line":"                      (\u0027display_name\u0027, \u0027name\u0027), (\u0027uuid\u0027, \u0027id\u0027)]"},{"line_number":92,"context_line":"    for src, dest in transform_keys:"},{"line_number":93,"context_line":"        payload[dest] \u003d payload.pop(src)"},{"line_number":94,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_81a7d4bd","line":91,"range":{"start_line":89,"start_character":0,"end_line":91,"end_character":63},"in_reply_to":"bff0334d_55dc8645","updated":"2017-04-10 19:50:32.000000000","message":"If we have to ignore fields it\u0027s as easy to map them like this to the equivalent API field but either way is good for us.","commit_id":"e463d57ad2ed0275736fdc49bd9f4f0c9b6da109"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b79e3986908f56ab2e335193a50ba4e3ab36bb19","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        payload.pop(key, None)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    # We should denormalize this because it\u0027d be better for searching"},{"line_number":105,"context_line":"    flavor_id \u003d payload.pop(\u0027flavor\u0027)[\u0027nova_object.data\u0027][\u0027flavorid\u0027]"},{"line_number":106,"context_line":"    payload[\u0027flavor\u0027] \u003d {\u0027id\u0027: flavor_id}"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    image_id \u003d payload.pop(\u0027image_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_359d8259","line":105,"updated":"2017-04-05 15:33:35.000000000","message":"I think this step is generic in case the payload has sub objects. Looking at this from the consumer side this feels a bit stupid but at least it makes possible to have namespaces in the payload.","commit_id":"e463d57ad2ed0275736fdc49bd9f4f0c9b6da109"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"cbef8cbd141deab12c5dcc95ee1dd9a31a103492","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        payload.pop(key, None)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    # We should denormalize this because it\u0027d be better for searching"},{"line_number":105,"context_line":"    flavor_id \u003d payload.pop(\u0027flavor\u0027)[\u0027nova_object.data\u0027][\u0027flavorid\u0027]"},{"line_number":106,"context_line":"    payload[\u0027flavor\u0027] \u003d {\u0027id\u0027: flavor_id}"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    image_id \u003d payload.pop(\u0027image_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_217fe815","line":105,"in_reply_to":"bff0334d_359d8259","updated":"2017-04-10 19:50:32.000000000","message":"Yeah, it\u0027s not really a big deal. Longer term we will take advantage of it and denormalize flavor onto servers since it is better for querying.","commit_id":"e463d57ad2ed0275736fdc49bd9f4f0c9b6da109"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b79e3986908f56ab2e335193a50ba4e3ab36bb19","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        for key in [\u0027new_task_state\u0027, \u0027old_state\u0027, \u0027old_task_state\u0027, \u0027state\u0027]:"},{"line_number":114,"context_line":"            payload[key] \u003d state_update[key]"},{"line_number":115,"context_line":"    else:"},{"line_number":116,"context_line":"        LOG.info(\"State information is missing from versioned payload\")"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    # Network information. This has to be transformed"},{"line_number":119,"context_line":"    # TODO(sjmc7) Try to better reconcile this with the API format"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_353fc2d7","line":116,"updated":"2017-04-05 15:33:35.000000000","message":"You reach this point if you are processing a payload of other than an instance.update notification. The instance.update always have state_update field other instance notifications never have that.","commit_id":"e463d57ad2ed0275736fdc49bd9f4f0c9b6da109"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"cbef8cbd141deab12c5dcc95ee1dd9a31a103492","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        for key in [\u0027new_task_state\u0027, \u0027old_state\u0027, \u0027old_task_state\u0027, \u0027state\u0027]:"},{"line_number":114,"context_line":"            payload[key] \u003d state_update[key]"},{"line_number":115,"context_line":"    else:"},{"line_number":116,"context_line":"        LOG.info(\"State information is missing from versioned payload\")"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    # Network information. This has to be transformed"},{"line_number":119,"context_line":"    # TODO(sjmc7) Try to better reconcile this with the API format"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_a1909844","line":116,"in_reply_to":"bff0334d_353fc2d7","updated":"2017-04-10 19:50:32.000000000","message":"Got it - i\u0027ll remove this output message, and the task_state fields will be nulled out for non-compute.update notifications","commit_id":"e463d57ad2ed0275736fdc49bd9f4f0c9b6da109"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9755cb74b273632fb4e0959ab65ed40d7e304ac3","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def serialize_server_versioned(payload):"},{"line_number":87,"context_line":"    # Based on currently documented 1.3"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    # Some transforms - maybe these could be made the same in nova?"},{"line_number":90,"context_line":"    transform_keys \u003d [(\u0027display_description\u0027, \u0027description\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_91d0decb","line":87,"updated":"2017-04-24 07:49:41.000000000","message":"Hm current nova master has\nInstanceActionPayload 1.1 [1]\nInstanceUpdatePayload 1.1 [2]\nInstanceActionVolumeSwapPayload 1.1 [3]\n\nI guess you are referring to patches still on review in the series of bp/additional-notification-fields-for-searchlight [4]. I feel you have to sooner or later list at least two different versions one for InstanceActionPayload (used by most of the the instance.\u003caction\u003e notifications) and one for InstanceUpdatePayload (used by instance.update notification).\n\n\n[1] https://github.com/openstack/nova/blob/master/nova/notifications/objects/instance.py#L116\n[2]https://github.com/openstack/nova/blob/master/nova/notifications/objects/instance.py#L151\n[3]https://github.com/openstack/nova/blob/master/nova/notifications/objects/instance.py#L133\n[4]https://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:bp/additional-notification-fields-for-searchlight","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"e3e6e91ce5df0d8a2485aff0e8099387792b30a8","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"def serialize_server_versioned(payload):"},{"line_number":87,"context_line":"    # Based on currently documented 1.3"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    # Some transforms - maybe these could be made the same in nova?"},{"line_number":90,"context_line":"    transform_keys \u003d [(\u0027display_description\u0027, \u0027description\u0027),"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f044301_e994d0ea","line":87,"in_reply_to":"5ff73747_91d0decb","updated":"2017-05-04 14:48:30.000000000","message":"Will do","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"2d4d41bb0055261d82c3f1b7bb284db5a5a84d7f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            payload[key] \u003d state_update[key]"},{"line_number":116,"context_line":"    else:"},{"line_number":117,"context_line":"        # Other than update operations, the task states aren\u0027t set"},{"line_number":118,"context_line":"        for key in state_keys:"},{"line_number":119,"context_line":"            payload[key] \u003d None"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    # Network information. This has to be transformed"}],"source_content_type":"text/x-python","patch_set":11,"id":"bf091321_b4606434","line":118,"updated":"2017-06-08 14:44:23.000000000","message":"It seems \u0027state_update\u0027 only exists in update events, I haven\u0027t found that field in other events, and there is already a \u0027state\u0027 field in the payload, so this may erase original \u0027state\u0027 value. Perhaps not set \u0027state\u0027 field here?","commit_id":"e89659c27dce7909dfed097edfd9d21e218b25b0"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"b6a8fd44b44ef91e8243c7aea9d7bace86ad1246","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            if isinstance(attribute, six.text_type):"},{"line_number":93,"context_line":"                serialized[simple_attr] \u003d attribute.lower()"},{"line_number":94,"context_line":"            else:"},{"line_number":95,"context_line":"                serialized[simple_attr] \u003d attribute"},{"line_number":96,"context_line":"    serialized[\u0027status\u0027] \u003d serialized[\u0027status\u0027].lower()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    # Pop the fault stracktrace if any - it\u0027s big"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_02da54e8","line":95,"updated":"2017-07-12 10:25:41.000000000","message":"We are indexing both fields with full name and simple name for extended fields, right? This seems redundant for me.","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"15f6e11b2896451003b6c74e8273f6d5529b335e","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            if isinstance(attribute, six.text_type):"},{"line_number":93,"context_line":"                serialized[simple_attr] \u003d attribute.lower()"},{"line_number":94,"context_line":"            else:"},{"line_number":95,"context_line":"                serialized[simple_attr] \u003d attribute"},{"line_number":96,"context_line":"    serialized[\u0027status\u0027] \u003d serialized[\u0027status\u0027].lower()"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    # Pop the fault stracktrace if any - it\u0027s big"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_cb97a290","line":95,"in_reply_to":"1f1a1f67_02da54e8","updated":"2017-07-13 14:41:51.000000000","message":"The API returns the fullname and notificaitons the simple one. I\u0027d prefer to drop the extended ones but then it\u0027s not api compatible. Maybe just store the long ones?","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"b6a8fd44b44ef91e8243c7aea9d7bace86ad1246","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    payload[\u0027image\u0027] \u003d {\u0027id\u0027: image_id}"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    # Map \u0027state\u0027 -\u003e \u0027status\u0027 to match the API"},{"line_number":130,"context_line":"    payload[\u0027status\u0027] \u003d payload.pop(\u0027state\u0027, None)"},{"line_number":131,"context_line":"    # Map backwards to the OS-EXT- attributes"},{"line_number":132,"context_line":"    for simple_attr, ext_attr in EXTENDED_FIELDS.items():"},{"line_number":133,"context_line":"        attribute \u003d payload.get(simple_attr, None)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_a2bba00c","line":130,"range":{"start_line":130,"start_character":49,"end_line":130,"end_character":50},"updated":"2017-07-12 10:25:41.000000000","message":"Sorry, after digging into nova\u0027s code, I think the \u0027state\u0027 field in payload should be mapped to vm state, no \u0027status\u0027 is provided in notification payload. Perhaps I should ask kevin to have a look.","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"15f6e11b2896451003b6c74e8273f6d5529b335e","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    payload[\u0027image\u0027] \u003d {\u0027id\u0027: image_id}"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    # Map \u0027state\u0027 -\u003e \u0027status\u0027 to match the API"},{"line_number":130,"context_line":"    payload[\u0027status\u0027] \u003d payload.pop(\u0027state\u0027, None)"},{"line_number":131,"context_line":"    # Map backwards to the OS-EXT- attributes"},{"line_number":132,"context_line":"    for simple_attr, ext_attr in EXTENDED_FIELDS.items():"},{"line_number":133,"context_line":"        attribute \u003d payload.get(simple_attr, None)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_6b8e4e79","line":130,"range":{"start_line":130,"start_character":49,"end_line":130,"end_character":50},"in_reply_to":"1f1a1f67_40738816","updated":"2017-07-13 14:41:51.000000000","message":"Hmm. So where has status gone?","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"7cf4623a5cd4c908a27bacdfb17fa1a9d1dc20ff","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    payload[\u0027image\u0027] \u003d {\u0027id\u0027: image_id}"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    # Map \u0027state\u0027 -\u003e \u0027status\u0027 to match the API"},{"line_number":130,"context_line":"    payload[\u0027status\u0027] \u003d payload.pop(\u0027state\u0027, None)"},{"line_number":131,"context_line":"    # Map backwards to the OS-EXT- attributes"},{"line_number":132,"context_line":"    for simple_attr, ext_attr in EXTENDED_FIELDS.items():"},{"line_number":133,"context_line":"        attribute \u003d payload.get(simple_attr, None)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_40738816","line":130,"range":{"start_line":130,"start_character":49,"end_line":130,"end_character":50},"in_reply_to":"1f1a1f67_a2bba00c","updated":"2017-07-13 02:49:31.000000000","message":"yeah, state is actually vm_state:\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/notifications/objects/instance.py#n48","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"b6a8fd44b44ef91e8243c7aea9d7bace86ad1246","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    payload[\"networks\"] \u003d [map_address(address) for address in ip_addresses]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    # Pop the fault stracktrace if any - it\u0027s big"},{"line_number":158,"context_line":"    payload.get(\u0027fault\u0027, {}).pop(\u0027details\u0027, None)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    return payload"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_999a5b6c","line":158,"updated":"2017-07-12 10:25:41.000000000","message":"fault field may be \u0027None\u0027, which will raise an exception here.","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"15f6e11b2896451003b6c74e8273f6d5529b335e","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    payload[\"networks\"] \u003d [map_address(address) for address in ip_addresses]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    # Pop the fault stracktrace if any - it\u0027s big"},{"line_number":158,"context_line":"    payload.get(\u0027fault\u0027, {}).pop(\u0027details\u0027, None)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    return payload"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_4bd2725e","line":158,"in_reply_to":"1f1a1f67_404ca8c6","updated":"2017-07-13 14:41:51.000000000","message":"Done, thakns","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"7cf4623a5cd4c908a27bacdfb17fa1a9d1dc20ff","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    payload[\"networks\"] \u003d [map_address(address) for address in ip_addresses]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    # Pop the fault stracktrace if any - it\u0027s big"},{"line_number":158,"context_line":"    payload.get(\u0027fault\u0027, {}).pop(\u0027details\u0027, None)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    return payload"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_404ca8c6","line":158,"in_reply_to":"1f1a1f67_999a5b6c","updated":"2017-07-13 02:49:31.000000000","message":"++","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"}],"searchlight/elasticsearch/plugins/nova/notification_handler.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b79e3986908f56ab2e335193a50ba4e3ab36bb19","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        end_events \u003d [\u0027create\u0027, \u0027pause\u0027, \u0027power_off\u0027, \u0027power_on\u0027,"},{"line_number":117,"context_line":"                      \u0027reboot\u0027, \u0027rebuild\u0027, \u0027resize\u0027, \u0027restore\u0027, \u0027resume\u0027,"},{"line_number":118,"context_line":"                      \u0027shelve\u0027, \u0027shutdown\u0027, \u0027snapshot\u0027, \u0027suspend\u0027, \u0027unpause\u0027,"},{"line_number":119,"context_line":"                      \u0027unshelve\u0027, \u0027update\u0027]"},{"line_number":120,"context_line":"        for event in end_events:"},{"line_number":121,"context_line":"            ev_name \u003d \u0027instance.%s.end\u0027 % event"},{"line_number":122,"context_line":"            notifications[ev_name] \u003d self.index_from_versioned"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_677da16d","line":119,"updated":"2017-04-05 15:33:35.000000000","message":"hm, this does not contain instance.update but later on when the code parses the payload it expects state_update field to be present but nova only include state_update field to instance.update notification. Are we missing something here?","commit_id":"e463d57ad2ed0275736fdc49bd9f4f0c9b6da109"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b79e3986908f56ab2e335193a50ba4e3ab36bb19","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    def index_from_versioned(self, event_type, payload, timestamp):"},{"line_number":344,"context_line":"        # notification_version \u003d payload[\u0027nova_object.version\u0027]"},{"line_number":345,"context_line":"        # TODO(sjmc7) Handle unsupported versions; it\u0027s not clear to me"},{"line_number":346,"context_line":"        # what we should do other than pin to an acceptable set of versions"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        versioned_payload \u003d payload[\u0027nova_object.data\u0027]"},{"line_number":349,"context_line":"        serialized \u003d serialize_server_versioned(versioned_payload)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_f5939aa2","line":346,"updated":"2017-04-05 15:33:35.000000000","message":"I think you can assume the following:\n* if the version is smaller than what you need then you cannot be sure you can parse the payload as it might have missing fields. This is an error case.\n* if the minor version is bigger or equal what you need then you can assume that the code will be able to parse the payload. There might be extra fields in the payload you don\u0027t need.\n* if the major version is bigger than what you need then you cannot be sure you can parse the payload. This is an error case.","commit_id":"e463d57ad2ed0275736fdc49bd9f4f0c9b6da109"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"1714c7bdf5545a847d057aa07fc503e34ee03241","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    def index_from_versioned(self, event_type, payload, timestamp):"},{"line_number":344,"context_line":"        # notification_version \u003d payload[\u0027nova_object.version\u0027]"},{"line_number":345,"context_line":"        # TODO(sjmc7) Handle unsupported versions; it\u0027s not clear to me"},{"line_number":346,"context_line":"        # what we should do other than pin to an acceptable set of versions"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        versioned_payload \u003d payload[\u0027nova_object.data\u0027]"},{"line_number":349,"context_line":"        serialized \u003d serialize_server_versioned(versioned_payload)"}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_6d0fe987","line":346,"in_reply_to":"bff0334d_f5939aa2","updated":"2017-04-12 09:33:05.000000000","message":"+1","commit_id":"e463d57ad2ed0275736fdc49bd9f4f0c9b6da109"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"5fc227714fa288ff95dc1a6fb4b43348e8f1d528","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        return self.plugin_options.use_versioned_notifications"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def get_event_handlers(self):"},{"line_number":110,"context_line":"        LOG.error(\"HERE! %s\", self._use_versioned_notifications())"},{"line_number":111,"context_line":"        if not self._use_versioned_notifications():"},{"line_number":112,"context_line":"            return {"},{"line_number":113,"context_line":"                # compute.instance.update seems to be the event set as a"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f044301_b1ba9bdb","line":110,"range":{"start_line":110,"start_character":8,"end_line":110,"end_character":17},"updated":"2017-05-05 00:20:28.000000000","message":"should be removed","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9755cb74b273632fb4e0959ab65ed40d7e304ac3","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        notifications[\u0027instance.update\u0027] \u003d self.index_from_versioned"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        # This should become soft delete once that is supported"},{"line_number":157,"context_line":"        notifications[\u0027instance.delete.end\u0027] \u003d self.delete_from_versioned"},{"line_number":158,"context_line":"        return notifications"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def index_from_update(self, event_type, payload, timestamp):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_5176d6da","line":157,"updated":"2017-04-24 07:49:41.000000000","message":"The term soft delete is pretty overloaded.\n\nWhen you get instance.delete.end nova already deleted the instance from the hypervisor and marked the instance records in the db as deleted. As nova API supports querying deleted instances you might need to keep these records for a while. However nova also has a separate concept called soft delete which also has a separate notifications (instance.soft_delete.start/end). In nova soft delete means that the instance is not removed from the hypervisor for a predefined time and therefore the instance can be restored by the owner. \nI guess what you need here later is a way to keep the db records of deleted instances in searchlight for a while. Searchlight does not need to do anything special at instance.soft_delete.\n\nThis is documented in the nova spec[1]\n\n[1] https://review.openstack.org/#/c/441692/5/specs/pike/approved/list-instances-using-searchlight.rst@73","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"8e828e52403251e3e974870a8c7ec737065f533e","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        notifications[\u0027instance.update\u0027] \u003d self.index_from_versioned"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        # This should become soft delete once that is supported"},{"line_number":157,"context_line":"        notifications[\u0027instance.delete.end\u0027] \u003d self.delete_from_versioned"},{"line_number":158,"context_line":"        return notifications"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def index_from_update(self, event_type, payload, timestamp):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_84c1ac83","line":157,"in_reply_to":"5ff73747_5176d6da","updated":"2017-05-03 09:07:13.000000000","message":"Does instance.soft_delete changes vm status also? If so, we need to capture it in the future because it can affect query result of soft deleted instances.","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"e3e6e91ce5df0d8a2485aff0e8099387792b30a8","unresolved":false,"context_lines":[{"line_number":154,"context_line":"        notifications[\u0027instance.update\u0027] \u003d self.index_from_versioned"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        # This should become soft delete once that is supported"},{"line_number":157,"context_line":"        notifications[\u0027instance.delete.end\u0027] \u003d self.delete_from_versioned"},{"line_number":158,"context_line":"        return notifications"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def index_from_update(self, event_type, payload, timestamp):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f044301_697680db","line":157,"in_reply_to":"5ff73747_84c1ac83","updated":"2017-05-04 14:48:30.000000000","message":"Yeah, this was my confusion. I gather there is no notification for a \u0027hard delete\u0027. My proposal for now is to continue to delete instances from the index on instance.delete.end, but once we add support for deleted\u003dfalse change the behavior. And add support for actual soft-delete as well.","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9755cb74b273632fb4e0959ab65ed40d7e304ac3","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                {\u0027instance_id\u0027: instance_id, \u0027exc\u0027: exc})"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    def index_from_versioned(self, event_type, payload, timestamp):"},{"line_number":375,"context_line":"        self._check_version(payload[\u0027nova_object.version\u0027])"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        versioned_payload \u003d payload[\u0027nova_object.data\u0027]"},{"line_number":378,"context_line":"        serialized \u003d serialize_server_versioned(versioned_payload)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_7118b280","line":375,"updated":"2017-04-24 07:49:41.000000000","message":"You assert the top level version of the notification. I think this is a good first step. However both the InstanceActionPayload and the InstanceUpdatePayload contain some other objects as fields, like FlavorPayload or IpPayload. Those objects have separate and independent version numbers.\n\nI guess this is not consumer friendly. :/","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"e3e6e91ce5df0d8a2485aff0e8099387792b30a8","unresolved":false,"context_lines":[{"line_number":372,"context_line":"                {\u0027instance_id\u0027: instance_id, \u0027exc\u0027: exc})"},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"    def index_from_versioned(self, event_type, payload, timestamp):"},{"line_number":375,"context_line":"        self._check_version(payload[\u0027nova_object.version\u0027])"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        versioned_payload \u003d payload[\u0027nova_object.data\u0027]"},{"line_number":378,"context_line":"        serialized \u003d serialize_server_versioned(versioned_payload)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f044301_a945a872","line":375,"in_reply_to":"5ff73747_7118b280","updated":"2017-05-04 14:48:30.000000000","message":"Not really, but not a huge deal. I\u0027ll make this more general.","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9755cb74b273632fb4e0959ab65ed40d7e304ac3","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        # Where the minor case is different, output a debug message"},{"line_number":413,"context_line":"        expected_maj \u003d self.plugin_options.notification_maj_version"},{"line_number":414,"context_line":"        expected_min \u003d self.plugin_options.notification_min_version"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        maj_ver, min_ver \u003d map(int, notification_version.split(\u0027.\u0027))"},{"line_number":417,"context_line":"        if maj_ver !\u003d expected_maj:"},{"line_number":418,"context_line":"            raise exception.VersionedNotificationMismatch("}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_9421eca2","line":415,"updated":"2017-04-24 07:49:41.000000000","message":"Unfortunately to make this 100% correct the version check should be performed based at least on event_type of the notification or Payload class name. Also version check needs to be performed on the embedded subobjects of the payload.\n\nHowever this is a good first step.","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"e3e6e91ce5df0d8a2485aff0e8099387792b30a8","unresolved":false,"context_lines":[{"line_number":412,"context_line":"        # Where the minor case is different, output a debug message"},{"line_number":413,"context_line":"        expected_maj \u003d self.plugin_options.notification_maj_version"},{"line_number":414,"context_line":"        expected_min \u003d self.plugin_options.notification_min_version"},{"line_number":415,"context_line":""},{"line_number":416,"context_line":"        maj_ver, min_ver \u003d map(int, notification_version.split(\u0027.\u0027))"},{"line_number":417,"context_line":"        if maj_ver !\u003d expected_maj:"},{"line_number":418,"context_line":"            raise exception.VersionedNotificationMismatch("}],"source_content_type":"text/x-python","patch_set":5,"id":"3f044301_495ce44a","line":415,"in_reply_to":"5ff73747_9421eca2","updated":"2017-05-04 14:48:30.000000000","message":"I\u0027ll do it all in code rather than config which will make it easier to add sub-objects.","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"7289bcf45b7e150116ddc9a3a253df1e37920032","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    notification_versions \u003d {"},{"line_number":75,"context_line":"        \u0027InstanceActionPayload\u0027: \u00271.2\u0027,"},{"line_number":76,"context_line":"        \u0027InstanceUpdatePayload\u0027: \u00271.3\u0027,"},{"line_number":77,"context_line":"        \u0027InstanceActionVolumeSwapPayload\u0027: \u00271.1\u0027,"},{"line_number":78,"context_line":"    }"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_71c89354","line":77,"range":{"start_line":77,"start_character":47,"end_line":77,"end_character":49},"updated":"2017-05-18 14:30:10.000000000","message":"Does InstanceActionVolumeSwapPayload exist in notifications we listen on? From notification samples it only appears in volume swap events.","commit_id":"a2d62b5613d80543f5ca9af6575b1cdb40258442"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"fa28ae60d14c4372c16cb337284ca03ab22bccf6","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                                  serialized)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    def delete_from_versioned(self, event_type, payload, timestamp):"},{"line_number":392,"context_line":"        self._check_version(payload[\u0027nova_object.version\u0027])"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        payload \u003d payload[\u0027nova_object.data\u0027]"},{"line_number":395,"context_line":"        instance_id \u003d payload[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f013ff3_340e548d","line":392,"range":{"start_line":392,"start_character":13,"end_line":392,"end_character":27},"updated":"2017-05-17 03:03:14.000000000","message":"_check_version is not defined, should using utils.check_notification_version?","commit_id":"a2d62b5613d80543f5ca9af6575b1cdb40258442"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"d3deeaba9dd0a635581d8fc5bcacdde6b38b99a2","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                                  serialized)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    def delete_from_versioned(self, event_type, payload, timestamp):"},{"line_number":392,"context_line":"        self._check_version(payload[\u0027nova_object.version\u0027])"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        payload \u003d payload[\u0027nova_object.data\u0027]"},{"line_number":395,"context_line":"        instance_id \u003d payload[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_3ce1dd9b","line":392,"range":{"start_line":392,"start_character":13,"end_line":392,"end_character":27},"in_reply_to":"1f013ff3_340e548d","updated":"2017-05-18 08:15:56.000000000","message":"++","commit_id":"a2d62b5613d80543f5ca9af6575b1cdb40258442"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"7289bcf45b7e150116ddc9a3a253df1e37920032","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                                  serialized)"},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    def delete_from_versioned(self, event_type, payload, timestamp):"},{"line_number":392,"context_line":"        self._check_version(payload[\u0027nova_object.version\u0027])"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        payload \u003d payload[\u0027nova_object.data\u0027]"},{"line_number":395,"context_line":"        instance_id \u003d payload[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff0f0b1f_e7d74123","line":392,"range":{"start_line":392,"start_character":13,"end_line":392,"end_character":27},"in_reply_to":"ff0f0b1f_3ce1dd9b","updated":"2017-05-18 14:30:10.000000000","message":"Do we need to check version on deleting events? I mean what we do is to only extract instance id and delete(or mark as deleted) the server.","commit_id":"a2d62b5613d80543f5ca9af6575b1cdb40258442"}],"searchlight/elasticsearch/plugins/nova/servers.py":[{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"b6a8fd44b44ef91e8243c7aea9d7bace86ad1246","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Will be combined with \u0027admin_only_fields\u0027 from config"},{"line_number":32,"context_line":"    # https://developer.openstack.org/api-ref/compute/?expanded\u003dshow-server-details-detail"},{"line_number":33,"context_line":"    ADMIN_ONLY_FIELDS \u003d [\u0027OS-EXT-SRV-ATTR:*\u0027, \u0027host_status\u0027, \u0027hostId\u0027,"},{"line_number":34,"context_line":"                         \u0027host_name\u0027, \u0027host\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_028814c4","line":33,"updated":"2017-07-12 10:25:41.000000000","message":"\u0027hostId\u0027 is not an admin only field.","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"7cf4623a5cd4c908a27bacdfb17fa1a9d1dc20ff","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Will be combined with \u0027admin_only_fields\u0027 from config"},{"line_number":32,"context_line":"    # https://developer.openstack.org/api-ref/compute/?expanded\u003dshow-server-details-detail"},{"line_number":33,"context_line":"    ADMIN_ONLY_FIELDS \u003d [\u0027OS-EXT-SRV-ATTR:*\u0027, \u0027host_status\u0027, \u0027hostId\u0027,"},{"line_number":34,"context_line":"                         \u0027host_name\u0027, \u0027host\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_60c9e476","line":33,"in_reply_to":"1f1a1f67_028814c4","updated":"2017-07-13 02:49:31.000000000","message":"yeah, checked, this is not admin only","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"15f6e11b2896451003b6c74e8273f6d5529b335e","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    # Will be combined with \u0027admin_only_fields\u0027 from config"},{"line_number":32,"context_line":"    # https://developer.openstack.org/api-ref/compute/?expanded\u003dshow-server-details-detail"},{"line_number":33,"context_line":"    ADMIN_ONLY_FIELDS \u003d [\u0027OS-EXT-SRV-ATTR:*\u0027, \u0027host_status\u0027, \u0027hostId\u0027,"},{"line_number":34,"context_line":"                         \u0027host_name\u0027, \u0027host\u0027]"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_4be95218","line":33,"in_reply_to":"1f1a1f67_60c9e476","updated":"2017-07-13 14:41:51.000000000","message":"Done, thanks","commit_id":"e65c4a1803e873e400e39051bac1d118f40ead49"}],"searchlight/tests/functional/__init__.py":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"f9dfc0ea4550a88d57b32a7f1aeedf63eaec9675","unresolved":false,"context_lines":[{"line_number":270,"context_line":"workers \u003d 0"},{"line_number":271,"context_line":"bind_host \u003d 127.0.0.1"},{"line_number":272,"context_line":"bind_port \u003d %(bind_port)s"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"\"\"\""},{"line_number":275,"context_line":"        self.paste_conf_base \u003d \"\"\"[pipeline:searchlight]"},{"line_number":276,"context_line":"pipeline \u003d versionnegotiation unauthenticated-context rootapp"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_77d07fc7","line":273,"updated":"2018-10-20 01:33:14.000000000","message":"Does it matter?","commit_id":"665a106e25301382b88b61420c06b336bf9cf866"}],"searchlight/tests/functional/test_api.py":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"f9dfc0ea4550a88d57b32a7f1aeedf63eaec9675","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        expected \u003d {"},{"line_number":330,"context_line":"            u\u0027name\u0027: u\u0027status\u0027,"},{"line_number":331,"context_line":"            u\u0027options\u0027: ["},{"line_number":332,"context_line":"                {u\u0027doc_count\u0027: 2, u\u0027key\u0027: u\u0027active\u0027},"},{"line_number":333,"context_line":"                {u\u0027doc_count\u0027: 1, u\u0027key\u0027: u\u0027resuming\u0027},"},{"line_number":334,"context_line":"            ],"},{"line_number":335,"context_line":"            u\u0027type\u0027: u\u0027string\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"3f79a3b5_b70b777a","line":332,"range":{"start_line":332,"start_character":44,"end_line":332,"end_character":50},"updated":"2018-10-20 01:33:14.000000000","message":"I\u0027m not familiar with versioned nova but why would you use lowercase for the statuses when they are in the capital form above?","commit_id":"665a106e25301382b88b61420c06b336bf9cf866"}],"searchlight/tests/unit/test_nova_server_plugin.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9755cb74b273632fb4e0959ab65ed40d7e304ac3","unresolved":false,"context_lines":[{"line_number":1330,"context_line":"                self.assertEqual(1, mock_save.call_count)"},{"line_number":1331,"context_line":""},{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"class TestVersionedServerNotifications(test_utils.BaseTestCase):"},{"line_number":1334,"context_line":"    def setUp(self):"},{"line_number":1335,"context_line":"        super(TestVersionedServerNotifications, self).setUp()"},{"line_number":1336,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_745b002e","line":1333,"updated":"2017-04-24 07:49:41.000000000","message":"You might consider using samples from the nova tree [1]. That would mean you integrate with the latest nova code. \n\n[1]https://github.com/openstack/nova/tree/master/doc/notification_samples","commit_id":"06127461d07081c686a5d5159c09ccb993202246"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"e3e6e91ce5df0d8a2485aff0e8099387792b30a8","unresolved":false,"context_lines":[{"line_number":1330,"context_line":"                self.assertEqual(1, mock_save.call_count)"},{"line_number":1331,"context_line":""},{"line_number":1332,"context_line":""},{"line_number":1333,"context_line":"class TestVersionedServerNotifications(test_utils.BaseTestCase):"},{"line_number":1334,"context_line":"    def setUp(self):"},{"line_number":1335,"context_line":"        super(TestVersionedServerNotifications, self).setUp()"},{"line_number":1336,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f044301_292e38a5","line":1333,"in_reply_to":"5ff73747_745b002e","updated":"2017-05-04 14:48:30.000000000","message":"That\u0027s a good idea. Given my very limited time to work on this i want to try to get this merged and improve tests later","commit_id":"06127461d07081c686a5d5159c09ccb993202246"}]}
