)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"7c4e37e8ddae3a68287ff872d7edbfe1aaea532c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"a separate topic called \u0027versioned_notifications\u0027."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially-Implements: bp versioned-notification-api"},{"line_number":18,"context_line":"Change-Id: Ie45c03175800bb14269f3976b03a53488e084339"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba8a016a_adee2189","line":18,"updated":"2015-11-23 17:51:37.000000000","message":"This change should get either a DocImpact or an UpgradeImpact tag right?","commit_id":"cf0a12ed714a0d91fe469991c4811e6fd5cf40e8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"060513e01099e941881bd12c2e175b37e1a265d3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"a separate topic called \u0027versioned_notifications\u0027."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Partially-Implements: bp versioned-notification-api"},{"line_number":18,"context_line":"Change-Id: Ie45c03175800bb14269f3976b03a53488e084339"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9a8ffd7b_5426f015","line":18,"in_reply_to":"ba8a016a_adee2189","updated":"2015-11-26 16:04:56.000000000","message":"Added DocImpact due to the new config option. Upgrade is not affected as the default value of the new option is \u0027both\u0027","commit_id":"cf0a12ed714a0d91fe469991c4811e6fd5cf40e8"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9c538092bcca30207f49e9753d9b6324bb6a9326","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new config option is introduced called \u0027notification_format\u0027"},{"line_number":10,"context_line":"which specifies the format of the notifications emitted, possible"},{"line_number":11,"context_line":"values are \u0027versioned\u0027, \u0027unversioned\u0027, \u0027both\u0027. The value \u0027versioned\u0027"},{"line_number":12,"context_line":"is deprecated. The default value is \u0027both\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Also to help consumers the versioned notifications will be emited to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_bdc982ae","line":11,"updated":"2016-01-08 11:51:08.000000000","message":"you mean unversioned, as in the code I guess?","commit_id":"4c926987d94f37e404d88ed8ecd5f56b740bed95"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3d69f13e803b99eb7b68bab5f3194cf8063419a1","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new config option is introduced called \u0027notification_format\u0027"},{"line_number":10,"context_line":"which specifies the format of the notifications emitted, possible"},{"line_number":11,"context_line":"values are \u0027versioned\u0027, \u0027unversioned\u0027, \u0027both\u0027. The value \u0027versioned\u0027"},{"line_number":12,"context_line":"is deprecated. The default value is \u0027both\u0027."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Also to help consumers the versioned notifications will be emited to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa69d971_df1d3867","line":11,"in_reply_to":"fa69d971_bdc982ae","updated":"2016-01-09 12:40:29.000000000","message":"as we agreed on IRC we don\u0027t deprecate the \u0027unversioned\u0027 value right now.","commit_id":"4c926987d94f37e404d88ed8ecd5f56b740bed95"}],"nova/objects/notification.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9c538092bcca30207f49e9753d9b6324bb6a9326","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    }"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    def _emit(self, context, event_type, publisher_id, payload):"},{"line_number":100,"context_line":"        notifier \u003d rpc.get_versioned_notifier(publisher_id)"},{"line_number":101,"context_line":"        notify \u003d getattr(notifier, self.priority)"},{"line_number":102,"context_line":"        notify(context, event_type\u003devent_type, payload\u003dpayload)"},{"line_number":103,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_fd813a4e","line":100,"updated":"2016-01-08 11:51:08.000000000","message":"ah, nice to push that logic back into rpc.","commit_id":"4c926987d94f37e404d88ed8ecd5f56b740bed95"}],"nova/rpc.py":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"580913f4a8d0efd0ea13f1936256f861852e9d97","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"TRANSPORT \u003d None"},{"line_number":49,"context_line":"NOTIFIER \u003d None"},{"line_number":50,"context_line":"VERSIONED_NOTIFIER \u003d None"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"ALLOWED_EXMODS \u003d ["},{"line_number":53,"context_line":"    nova.exception.__name__,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_c0484acf","line":50,"updated":"2015-11-20 22:51:06.000000000","message":"I really don\u0027t like this name. If we are moving to versioned notifications as the standard, this should be named \u0027NOTIFIER\u0027, and the old one called \u0027LEGACY_NOTIFIER\u0027 or something similar. I don\u0027t want to appear to be bikeshedding on names, but I don\u0027t want to end up supporting unversioned notifications forever.","commit_id":"9a92d4de900e3fae737dfd38d2fbde4f59a96240"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"06e2cb3219ed76909e045c062e83f28047ceed03","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"TRANSPORT \u003d None"},{"line_number":49,"context_line":"NOTIFIER \u003d None"},{"line_number":50,"context_line":"VERSIONED_NOTIFIER \u003d None"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"ALLOWED_EXMODS \u003d ["},{"line_number":53,"context_line":"    nova.exception.__name__,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba8a016a_24003caa","line":50,"in_reply_to":"ba8a016a_c0484acf","updated":"2015-11-21 21:23:57.000000000","message":"Your suggestion makes sense. First I thought that it would be a heavy renaming but it turned out that this name is well encapsulated so I did the rename as you suggested.","commit_id":"9a92d4de900e3fae737dfd38d2fbde4f59a96240"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"527a242e23712bda6f84a05277d5984125559552","unresolved":false,"context_lines":[{"line_number":37,"context_line":"CONF \u003d cfg.CONF"},{"line_number":38,"context_line":"notification_opts \u003d ["},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027notification_format\u0027,"},{"line_number":40,"context_line":"               choices\u003d[\u0027un-versioned\u0027, \u0027versioned\u0027, \u0027both\u0027],"},{"line_number":41,"context_line":"               default\u003d\u0027both\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027Specifies which notification format shall be used by \u0027"},{"line_number":43,"context_line":"                    \u0027nova. The un-versioned value is deprecated from 13.0\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_2bd776c0","line":40,"range":{"start_line":40,"start_character":25,"end_line":40,"end_character":37},"updated":"2015-11-23 19:01:35.000000000","message":"I don\u0027t know why I think this is such a big deal, but I would like to see \u0027unversioned\u0027 instead of \u0027un-versioned\u0027","commit_id":"cf0a12ed714a0d91fe469991c4811e6fd5cf40e8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"060513e01099e941881bd12c2e175b37e1a265d3","unresolved":false,"context_lines":[{"line_number":37,"context_line":"CONF \u003d cfg.CONF"},{"line_number":38,"context_line":"notification_opts \u003d ["},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027notification_format\u0027,"},{"line_number":40,"context_line":"               choices\u003d[\u0027un-versioned\u0027, \u0027versioned\u0027, \u0027both\u0027],"},{"line_number":41,"context_line":"               default\u003d\u0027both\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027Specifies which notification format shall be used by \u0027"},{"line_number":43,"context_line":"                    \u0027nova. The un-versioned value is deprecated from 13.0\u0027),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_14f86848","line":40,"range":{"start_line":40,"start_character":25,"end_line":40,"end_character":37},"in_reply_to":"ba8a016a_2bd776c0","updated":"2015-11-26 16:04:56.000000000","message":"Done","commit_id":"cf0a12ed714a0d91fe469991c4811e6fd5cf40e8"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"527a242e23712bda6f84a05277d5984125559552","unresolved":false,"context_lines":[{"line_number":174,"context_line":"    assert LEGACY_NOTIFIER is not None"},{"line_number":175,"context_line":"    if not publisher_id:"},{"line_number":176,"context_line":"        publisher_id \u003d \"%s.%s\" % (service, host or CONF.host)"},{"line_number":177,"context_line":"    return LEGACY_NOTIFIER.prepare(publisher_id\u003dpublisher_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_4e576802","line":177,"updated":"2015-11-23 19:01:35.000000000","message":"Why is this only returning the legacy notifier? shouldn\u0027t this be making a decision based on the config value to determine which one is returned? but then again I guess the \"both\" option would require returning a multiplexed version containing both notifiers...","commit_id":"cf0a12ed714a0d91fe469991c4811e6fd5cf40e8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"060513e01099e941881bd12c2e175b37e1a265d3","unresolved":false,"context_lines":[{"line_number":174,"context_line":"    assert LEGACY_NOTIFIER is not None"},{"line_number":175,"context_line":"    if not publisher_id:"},{"line_number":176,"context_line":"        publisher_id \u003d \"%s.%s\" % (service, host or CONF.host)"},{"line_number":177,"context_line":"    return LEGACY_NOTIFIER.prepare(publisher_id\u003dpublisher_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_f747e6b9","line":177,"in_reply_to":"ba8a016a_4e576802","updated":"2015-11-26 16:04:56.000000000","message":"Good point. I have to make the selection of the notifier more explicit in this code path. In general all the existing code path uses get_notifier call to get a notifier. After this patch the old code paths will still do that and will get a LEGACY_NOTIFIER as all the old code is emitting unversioned notifications and those shall go to the LEGACY_NOTIFIER always.\nIn the other hand the new versioned notification code path shall get a the new NOTIFIER that puts the notifications to the versioned_notification topic. I will add an explicity call for that here.","commit_id":"cf0a12ed714a0d91fe469991c4811e6fd5cf40e8"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9c538092bcca30207f49e9753d9b6324bb6a9326","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               choices\u003d[\u0027unversioned\u0027, \u0027versioned\u0027, \u0027both\u0027],"},{"line_number":41,"context_line":"               default\u003d\u0027both\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027Specifies which notification format shall be used by \u0027"},{"line_number":43,"context_line":"                    \u0027nova. The unversioned value is deprecated from 13.0\u0027),"},{"line_number":44,"context_line":"]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"CONF.register_opts(notification_opts)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_5d6726b7","line":43,"updated":"2016-01-08 11:51:08.000000000","message":"Does that mean we will change the default to versioned in the next release also?","commit_id":"4c926987d94f37e404d88ed8ecd5f56b740bed95"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3d69f13e803b99eb7b68bab5f3194cf8063419a1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               choices\u003d[\u0027unversioned\u0027, \u0027versioned\u0027, \u0027both\u0027],"},{"line_number":41,"context_line":"               default\u003d\u0027both\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027Specifies which notification format shall be used by \u0027"},{"line_number":43,"context_line":"                    \u0027nova. The unversioned value is deprecated from 13.0\u0027),"},{"line_number":44,"context_line":"]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"CONF.register_opts(notification_opts)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_899c6e5e","line":43,"in_reply_to":"fa69d971_5d6726b7","updated":"2016-01-09 12:40:29.000000000","message":"As we discussed on IRC lets not deprecate the \u0027unversioned\u0027 value, wait until we can deprecate the whole config instead.","commit_id":"4c926987d94f37e404d88ed8ecd5f56b740bed95"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"fc58a8bfe110d9052dd764fdec8ecc136ad3345b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               choices\u003d[\u0027unversioned\u0027, \u0027versioned\u0027, \u0027both\u0027],"},{"line_number":41,"context_line":"               default\u003d\u0027both\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027Specifies which notification format shall be used by \u0027"},{"line_number":43,"context_line":"                    \u0027nova. The unversioned value is deprecated from 13.0\u0027),"},{"line_number":44,"context_line":"]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"CONF.register_opts(notification_opts)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_b4baf4df","line":43,"in_reply_to":"fa69d971_5d6726b7","updated":"2016-01-08 13:51:41.000000000","message":"Oops, I only just spotted this, but I think we should add a reno note to describe this new config:\nhttp://docs.openstack.org/developer/nova/code-review.html#release-notes","commit_id":"4c926987d94f37e404d88ed8ecd5f56b740bed95"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3d69f13e803b99eb7b68bab5f3194cf8063419a1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"               choices\u003d[\u0027unversioned\u0027, \u0027versioned\u0027, \u0027both\u0027],"},{"line_number":41,"context_line":"               default\u003d\u0027both\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027Specifies which notification format shall be used by \u0027"},{"line_number":43,"context_line":"                    \u0027nova. The unversioned value is deprecated from 13.0\u0027),"},{"line_number":44,"context_line":"]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"CONF.register_opts(notification_opts)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_041ce3bf","line":43,"in_reply_to":"fa69d971_b4baf4df","updated":"2016-01-09 12:40:29.000000000","message":"Done","commit_id":"4c926987d94f37e404d88ed8ecd5f56b740bed95"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"2bf9ef4f1f0183101918520e54e3880099f9d761","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    \u0027nova.\u0027),"},{"line_number":44,"context_line":"]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"CONF.register_opts(notification_opts)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"TRANSPORT \u003d None"},{"line_number":49,"context_line":"LEGACY_NOTIFIER \u003d None"}],"source_content_type":"text/x-python","patch_set":28,"id":"9a68dd71_4726ce17","line":46,"updated":"2016-01-20 13:38:59.000000000","message":"I kind of feel like this stuff should be added straight into the new central location, but I feel bad saying that when we\u0027re already on patch set 28.","commit_id":"bd401d4cc8993e5f76ff9b87cb478c4fcaad1f4b"}],"nova/tests/unit/fake_notifier.py":[{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"527a242e23712bda6f84a05277d5984125559552","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                               serializer\u003dgetattr(rpc.LEGACY_NOTIFIER,"},{"line_number":74,"context_line":"                                                  \u0027_serializer\u0027,"},{"line_number":75,"context_line":"                                                  None)))"},{"line_number":76,"context_line":"        stubs.Set(rpc, \u0027NOTIFIER\u0027,"},{"line_number":77,"context_line":"                  FakeNotifier(rpc.LEGACY_NOTIFIER.transport,"},{"line_number":78,"context_line":"                               rpc.LEGACY_NOTIFIER.publisher_id,"},{"line_number":79,"context_line":"                               serializer\u003dgetattr(rpc.LEGACY_NOTIFIER,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba8a016a_2eab04d8","line":76,"updated":"2015-11-23 19:01:35.000000000","message":"shouldn\u0027t you be stubbing NOTIFIER with something that specifically *isn\u0027t* LEGACY_NOTIFIER? It\u0027s pretty important to know that changing over the notifiers doesn\u0027t totally blow all RPC ops up.","commit_id":"cf0a12ed714a0d91fe469991c4811e6fd5cf40e8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"060513e01099e941881bd12c2e175b37e1a265d3","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                               serializer\u003dgetattr(rpc.LEGACY_NOTIFIER,"},{"line_number":74,"context_line":"                                                  \u0027_serializer\u0027,"},{"line_number":75,"context_line":"                                                  None)))"},{"line_number":76,"context_line":"        stubs.Set(rpc, \u0027NOTIFIER\u0027,"},{"line_number":77,"context_line":"                  FakeNotifier(rpc.LEGACY_NOTIFIER.transport,"},{"line_number":78,"context_line":"                               rpc.LEGACY_NOTIFIER.publisher_id,"},{"line_number":79,"context_line":"                               serializer\u003dgetattr(rpc.LEGACY_NOTIFIER,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_9a86bfd9","line":76,"in_reply_to":"ba8a016a_2eab04d8","updated":"2015-11-26 16:04:56.000000000","message":"You are right, it was a copy-paste error. Now NOTIFIER is stubbed cleanly based only on NOTIFIER related stuff. Technically it does not change the behavior of the stubbed notifier as the transport and the serializer is shared between the two notifier. But the code looks more logical now.","commit_id":"cf0a12ed714a0d91fe469991c4811e6fd5cf40e8"}],"nova/tests/unit/test_notifier.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"9c538092bcca30207f49e9753d9b6324bb6a9326","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            mock_notifier.side_effect \u003d [\u0027first\u0027, \u0027second\u0027]"},{"line_number":47,"context_line":"            conf.notification_format \u003d config"},{"line_number":48,"context_line":"            rpc.init(conf)"},{"line_number":49,"context_line":"            self.assertEqual(expected_result, mock_notifier.call_args_list)"},{"line_number":50,"context_line":"            self.assertEqual(\u0027first\u0027, rpc.LEGACY_NOTIFIER)"},{"line_number":51,"context_line":"            self.assertEqual(\u0027second\u0027, rpc.NOTIFIER)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_7d3f8a25","line":49,"updated":"2016-01-08 11:51:08.000000000","message":"Nit: maybe use config in the comment for these asserts.","commit_id":"4c926987d94f37e404d88ed8ecd5f56b740bed95"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3d69f13e803b99eb7b68bab5f3194cf8063419a1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            mock_notifier.side_effect \u003d [\u0027first\u0027, \u0027second\u0027]"},{"line_number":47,"context_line":"            conf.notification_format \u003d config"},{"line_number":48,"context_line":"            rpc.init(conf)"},{"line_number":49,"context_line":"            self.assertEqual(expected_result, mock_notifier.call_args_list)"},{"line_number":50,"context_line":"            self.assertEqual(\u0027first\u0027, rpc.LEGACY_NOTIFIER)"},{"line_number":51,"context_line":"            self.assertEqual(\u0027second\u0027, rpc.NOTIFIER)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa69d971_8415334a","line":49,"in_reply_to":"fa69d971_7d3f8a25","updated":"2016-01-09 12:40:29.000000000","message":"Done","commit_id":"4c926987d94f37e404d88ed8ecd5f56b740bed95"}]}
