)]}'
{"specs/mitaka/approved/versioned-notification-api.rst":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"999cade38bb817ef1eb9473b4bc3a2bde5f3a000","unresolved":false,"context_lines":[{"line_number":131,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":133,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_2bc83174","line":134,"range":{"start_line":134,"start_character":8,"end_line":134,"end_character":22},"updated":"2015-09-24 14:59:35.000000000","message":"Are you talking about logging here? Not sure what oslo.messaging has to do with this line.","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"15ce617221a4d0f93e20b2658764ed88aebdab7d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":133,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_89eb1cb0","line":134,"range":{"start_line":134,"start_character":8,"end_line":134,"end_character":22},"in_reply_to":"9a1a9d01_2bc83174","updated":"2015-09-28 15:17:24.000000000","message":"No it is not related to logging, today oslo.messinging.notifier interface defines different priority levels for notifications. See the different functions in  http://docs.openstack.org/developer/oslo.messaging/notifier.html","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"af84c37148eb7d3d7863f6d1c9b67ec6ebb44d2f","unresolved":false,"context_lines":[{"line_number":131,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":133,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_f45ca37e","line":134,"range":{"start_line":134,"start_character":8,"end_line":134,"end_character":22},"in_reply_to":"9a1a9d01_89eb1cb0","updated":"2015-09-30 00:39:38.000000000","message":"Okay, I didn\u0027t realize they were wrapped like this.","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"999cade38bb817ef1eb9473b4bc3a2bde5f3a000","unresolved":false,"context_lines":[{"line_number":145,"context_line":"* Nova should have a configuration parameter where deployer can indicate what"},{"line_number":146,"context_line":"  version of the notification interface he wants to use. Nova should"},{"line_number":147,"context_line":"  support notification versions for two releases in a same way as nova supports"},{"line_number":148,"context_line":"  old object versions for rolling upgrade."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_ab34414a","line":148,"updated":"2015-09-24 14:59:35.000000000","message":"I\u0027m not sure I agree with this. We should just send notifications at whatever version we want, but use the same rules for making additive-only changes within a given major version, and signaling those with minor version bumps, IMHO.","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"15ce617221a4d0f93e20b2658764ed88aebdab7d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"* Nova should have a configuration parameter where deployer can indicate what"},{"line_number":146,"context_line":"  version of the notification interface he wants to use. Nova should"},{"line_number":147,"context_line":"  support notification versions for two releases in a same way as nova supports"},{"line_number":148,"context_line":"  old object versions for rolling upgrade."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_ad786b90","line":148,"in_reply_to":"9a1a9d01_ab34414a","updated":"2015-09-28 15:17:24.000000000","message":"OK so we want a similar micro version solution as in REST API. Does it mean that?\n* nova will have a minimum supported notification version as well as an actual (maximum) notification version\n* nova will have a single version for the whole notification subsystem not a version per notification.\n* adding a new notification will need a minor version bump\n* adding a new field to an existing notification will need a minor version bump\n* any notification change that is not backward compatible (not and addition) needs a major version bump\n* the client could define via config options which version of the notifications she wants to receive\n* nova converts the notification to the requested version if the requested version is greater or equal to the minimum supported version\n* notification schemas needs to have a version attached","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"af84c37148eb7d3d7863f6d1c9b67ec6ebb44d2f","unresolved":false,"context_lines":[{"line_number":145,"context_line":"* Nova should have a configuration parameter where deployer can indicate what"},{"line_number":146,"context_line":"  version of the notification interface he wants to use. Nova should"},{"line_number":147,"context_line":"  support notification versions for two releases in a same way as nova supports"},{"line_number":148,"context_line":"  old object versions for rolling upgrade."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_d4ce3f2c","line":148,"in_reply_to":"9a1a9d01_ad786b90","updated":"2015-09-30 00:39:38.000000000","message":"I\u0027m not sure why we need a single version for all the notifications, but we can do that if desired, yes.\n\nI don\u0027t think we should have a minimum and maximum version of notifications in a single version of nova. We could have a pin and backport the objects to the pin, but I think that is WAY too complicated for notifications. IMHO, we should be just additive in our changes to notification objects and just march forward. I don\u0027t see any reason to try to get nova to emit different versions of notifications.","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c506e7e729e8ad20fd72200221294d4554281851","unresolved":false,"context_lines":[{"line_number":145,"context_line":"* Nova should have a configuration parameter where deployer can indicate what"},{"line_number":146,"context_line":"  version of the notification interface he wants to use. Nova should"},{"line_number":147,"context_line":"  support notification versions for two releases in a same way as nova supports"},{"line_number":148,"context_line":"  old object versions for rolling upgrade."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":""},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_a2e9fbb8","line":148,"in_reply_to":"9a1a9d01_d4ce3f2c","updated":"2015-09-30 13:53:28.000000000","message":"So keep it simple:\n* no backward incompatible change\n* one version per notification payload (which is the version of the versioned object representing the payload in nova)\n* no support for pinning a notification to an older version, nova always generates the latest version of the notification.","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"999cade38bb817ef1eb9473b4bc3a2bde5f3a000","unresolved":false,"context_lines":[{"line_number":152,"context_line":"Backward compatibility for pre Mitaka notification consumers:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Do not remove un-managed notifications in Mitaka but deprecate those which"},{"line_number":155,"context_line":"  has a managed alternative in Mitaka"},{"line_number":156,"context_line":"* in N release remove the deprecated un-managed notifications"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_0b944d35","line":155,"updated":"2015-09-24 14:59:35.000000000","message":"I think we need to continue to send both formats for a period of time, and/or have a config variable that allows old,new,both formats to be sent. It seems like you agree based on the below performance impact section, but it would be good to call it out more clearly I think.","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"15ce617221a4d0f93e20b2658764ed88aebdab7d","unresolved":false,"context_lines":[{"line_number":152,"context_line":"Backward compatibility for pre Mitaka notification consumers:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Do not remove un-managed notifications in Mitaka but deprecate those which"},{"line_number":155,"context_line":"  has a managed alternative in Mitaka"},{"line_number":156,"context_line":"* in N release remove the deprecated un-managed notifications"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_edb50331","line":155,"in_reply_to":"9a1a9d01_0b944d35","updated":"2015-09-28 15:17:24.000000000","message":"Yes, I agree. I will state that it here.","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c506e7e729e8ad20fd72200221294d4554281851","unresolved":false,"context_lines":[{"line_number":152,"context_line":"Backward compatibility for pre Mitaka notification consumers:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Do not remove un-managed notifications in Mitaka but deprecate those which"},{"line_number":155,"context_line":"  has a managed alternative in Mitaka"},{"line_number":156,"context_line":"* in N release remove the deprecated un-managed notifications"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_b86130ab","line":155,"in_reply_to":"9a1a9d01_edb50331","updated":"2015-09-30 13:53:28.000000000","message":"Done","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"999cade38bb817ef1eb9473b4bc3a2bde5f3a000","unresolved":false,"context_lines":[{"line_number":173,"context_line":"Data model impact"},{"line_number":174,"context_line":"-----------------"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"I don\u0027t foresee database schema changes."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"REST API impact"},{"line_number":179,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_4baa4572","line":176,"updated":"2015-09-24 14:59:35.000000000","message":"Data model impacts also cover objects, not just db schema","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"15ce617221a4d0f93e20b2658764ed88aebdab7d","unresolved":false,"context_lines":[{"line_number":173,"context_line":"Data model impact"},{"line_number":174,"context_line":"-----------------"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"I don\u0027t foresee database schema changes."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"REST API impact"},{"line_number":179,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_add4eb46","line":176,"in_reply_to":"9a1a9d01_4baa4572","updated":"2015-09-28 15:17:24.000000000","message":"I will try to model the needed base objects here. I will give concrete examples but I think defining every Payload subclass upfront is overkill here. Do you agree?","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c506e7e729e8ad20fd72200221294d4554281851","unresolved":false,"context_lines":[{"line_number":173,"context_line":"Data model impact"},{"line_number":174,"context_line":"-----------------"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"I don\u0027t foresee database schema changes."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"REST API impact"},{"line_number":179,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_6750d00b","line":176,"in_reply_to":"9a1a9d01_74e09396","updated":"2015-09-30 13:53:28.000000000","message":"Done","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"af84c37148eb7d3d7863f6d1c9b67ec6ebb44d2f","unresolved":false,"context_lines":[{"line_number":173,"context_line":"Data model impact"},{"line_number":174,"context_line":"-----------------"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"I don\u0027t foresee database schema changes."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"REST API impact"},{"line_number":179,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9a1a9d01_74e09396","line":176,"in_reply_to":"9a1a9d01_add4eb46","updated":"2015-09-30 00:39:38.000000000","message":"No, I don\u0027t think we need to put them all here. However, putting the general base class design here seems appropriate.","commit_id":"c06a974e8e2f34fddc7bec57b02410141c5b747f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Notification interface of nova is not well defined and the current"},{"line_number":14,"context_line":"notifications define a very inconsistent interface. There is no easy"},{"line_number":15,"context_line":"way to see from the notification consumer point of view what is the format"},{"line_number":16,"context_line":"and the content of the notification nova sends."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Nova developers can add new notifications to the system without specifying"},{"line_number":19,"context_line":"the format and the content of the notification."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_93737615","line":16,"updated":"2015-10-06 23:35:50.000000000","message":"nit: the above paragraph is enough fine for a quick summary, the below lines just could be left in the problem description","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Notification interface of nova is not well defined and the current"},{"line_number":14,"context_line":"notifications define a very inconsistent interface. There is no easy"},{"line_number":15,"context_line":"way to see from the notification consumer point of view what is the format"},{"line_number":16,"context_line":"and the content of the notification nova sends."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Nova developers can add new notifications to the system without specifying"},{"line_number":19,"context_line":"the format and the content of the notification."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_25e23ca0","line":16,"in_reply_to":"7a2fa921_93737615","updated":"2015-10-07 16:26:26.000000000","message":"Done","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"priority: Nova uses info and error priorities in the current code base except"},{"line_number":50,"context_line":"in case of the nova.notification.notify_decorator code where the priority is"},{"line_number":51,"context_line":"configurable with the notification_level configuration parameter. However this"},{"line_number":52,"context_line":"decorator is only used in the monkey_patch_modules configuration default value."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"event_type: nova uses the following event_type formats today:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_feab8e87","line":52,"updated":"2015-10-06 23:35:50.000000000","message":"not sure I see a problem here... I mean, is it because it\u0027s not configurable ?","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":49,"context_line":"priority: Nova uses info and error priorities in the current code base except"},{"line_number":50,"context_line":"in case of the nova.notification.notify_decorator code where the priority is"},{"line_number":51,"context_line":"configurable with the notification_level configuration parameter. However this"},{"line_number":52,"context_line":"decorator is only used in the monkey_patch_modules configuration default value."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"event_type: nova uses the following event_type formats today:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_2831b3ec","line":52,"in_reply_to":"7a2fa921_feab8e87","updated":"2015-10-07 16:26:26.000000000","message":"I wanted to point out that we have one type of notification via monkey_patch_modules where the notification priority is configurable. I feel this is the exception and not the norm so the versioned notifications shall have a fixed priority. I expressed this rule in line 137\n\nBTW having a notification_level configuration variable that only affects some of the notifications priority is highly misleading but this problem is not in scope of this spec.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"* \u003cobject\u003e.\u003caction\u003e example: servergroup.create"},{"line_number":60,"context_line":"* \u003cservice\u003e.\u003caction\u003e.\u003cphase\u003e example: scheduler.select_destinations.end"},{"line_number":61,"context_line":"* \u003caction\u003e example: snapshot_instance"},{"line_number":62,"context_line":"* \u003cmodule?\u003e.\u003caction\u003e example: compute_task.build_instances"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"publisher_id: nova uses the following publisher_id formats today:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_9e9b7a72","line":62,"updated":"2015-10-06 23:35:50.000000000","message":"I guess it\u0027s because it\u0027s a raw string, and not a clear format ? If so, you should probably be a bit more verbose.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":59,"context_line":"* \u003cobject\u003e.\u003caction\u003e example: servergroup.create"},{"line_number":60,"context_line":"* \u003cservice\u003e.\u003caction\u003e.\u003cphase\u003e example: scheduler.select_destinations.end"},{"line_number":61,"context_line":"* \u003caction\u003e example: snapshot_instance"},{"line_number":62,"context_line":"* \u003cmodule?\u003e.\u003caction\u003e example: compute_task.build_instances"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"publisher_id: nova uses the following publisher_id formats today:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_28ee93ec","line":62,"in_reply_to":"7a2fa921_9e9b7a72","updated":"2015-10-07 16:26:26.000000000","message":"Yes, it is a raw string from oslo.messaging point of view. I\u0027ve clarified it in the next spec version. \nAlso in my proposal below in line 131 I suggest a verbose format while not duplicating the information already in the publisher_id (e.g. the service)","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":78,"context_line":"nova versioned object e.g. in case of compute.instance.update notification"},{"line_number":79,"context_line":"nova dumps the fields of the instance object into the notification after some"},{"line_number":80,"context_line":"filtering. In other case nova dumps the exception object or dumps the args and"},{"line_number":81,"context_line":"kwargs of a function into the payload."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Use Cases"},{"line_number":84,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_3e902643","line":81,"updated":"2015-10-06 23:35:50.000000000","message":"that looks to me the main problem, the other ones look a bit nitpicking, you should probably explain that too.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":78,"context_line":"nova versioned object e.g. in case of compute.instance.update notification"},{"line_number":79,"context_line":"nova dumps the fields of the instance object into the notification after some"},{"line_number":80,"context_line":"filtering. In other case nova dumps the exception object or dumps the args and"},{"line_number":81,"context_line":"kwargs of a function into the payload."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Use Cases"},{"line_number":84,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_2b69ad8b","line":81,"in_reply_to":"7a2fa921_3e902643","updated":"2015-10-07 16:26:26.000000000","message":"I agree that payload format is the hardest part of this problem. I added an extra sentence about it, I hope this is what you are after with your comment.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":91,"context_line":"Project Priority"},{"line_number":92,"context_line":"----------------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Mitaka priorities hasn\u0027t been defined yet."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Proposed change"},{"line_number":97,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_7eae9e86","line":94,"updated":"2015-10-06 23:35:50.000000000","message":"just put None.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":91,"context_line":"Project Priority"},{"line_number":92,"context_line":"----------------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"Mitaka priorities hasn\u0027t been defined yet."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Proposed change"},{"line_number":97,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_eb3095a0","line":94,"in_reply_to":"7a2fa921_7eae9e86","updated":"2015-10-07 16:26:26.000000000","message":"As this section was removed from the Mitaka template so I removed it from the spec too.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e85ca02e60005244f21514e1186906bcbbec740b","unresolved":false,"context_lines":[{"line_number":118,"context_line":"notifications for example the usage of the notify_decorator which dumps the"},{"line_number":119,"context_line":"args and kwargs of a function into the notification payload. For these"},{"line_number":120,"context_line":"notifications no managed version will be created and the un-managed"},{"line_number":121,"context_line":"notification can live forever in tree."},{"line_number":122,"context_line":"Nova might want to restrict adding new un-managed notification in the future."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_66baafe3","line":121,"updated":"2015-10-06 17:02:20.000000000","message":"In this case, I think we can create a notification that defines what it can, and just has a dict for the args, etc.\n\nIts kind of semi-managed. We define that specific notification type to be fairly undefined. Or something like that.\n\nWhen the arg is an object, we could use the object serialisation, rather than a to primitive hack, for example.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":118,"context_line":"notifications for example the usage of the notify_decorator which dumps the"},{"line_number":119,"context_line":"args and kwargs of a function into the notification payload. For these"},{"line_number":120,"context_line":"notifications no managed version will be created and the un-managed"},{"line_number":121,"context_line":"notification can live forever in tree."},{"line_number":122,"context_line":"Nova might want to restrict adding new un-managed notification in the future."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_b6b444d1","line":121,"in_reply_to":"7a2fa921_1eebeab1","updated":"2015-10-07 16:26:26.000000000","message":"The only reason I did not propose to have a \u0027semi-managed\u0027 format for this cases in the first place is to avoid touching the notifications that we cannot really formulate and hence reduce the scope of this spec. But based on your comments this is needed so I extended the spec with it.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":118,"context_line":"notifications for example the usage of the notify_decorator which dumps the"},{"line_number":119,"context_line":"args and kwargs of a function into the notification payload. For these"},{"line_number":120,"context_line":"notifications no managed version will be created and the un-managed"},{"line_number":121,"context_line":"notification can live forever in tree."},{"line_number":122,"context_line":"Nova might want to restrict adding new un-managed notification in the future."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_1eebeab1","line":121,"in_reply_to":"7a2fa921_66baafe3","updated":"2015-10-06 23:35:50.000000000","message":"I totally +1 the comment, I don\u0027t see why it\u0027s impossible to return an object primitive as a temporary solution.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e85ca02e60005244f21514e1186906bcbbec740b","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"* The publisher_id and the event_type together should uniquely identify a"},{"line_number":128,"context_line":"  single notification type."},{"line_number":129,"context_line":"* publisher_id should have a format of \u003chost\u003e.\u003cservice\u003e"},{"line_number":130,"context_line":"  for example: my-awesome-controller1.scheduler, compute-host1.compute"},{"line_number":131,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_a6aa0718","line":129,"updated":"2015-10-06 17:02:20.000000000","message":"what about moving to:\n\n\u003cservice\u003e:\u003chost\u003e so FQDNs are easier to deal with?\n\nI guess it would just be the value of CONF.host that goes into \u003chost\u003e?","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"* The publisher_id and the event_type together should uniquely identify a"},{"line_number":128,"context_line":"  single notification type."},{"line_number":129,"context_line":"* publisher_id should have a format of \u003chost\u003e.\u003cservice\u003e"},{"line_number":130,"context_line":"  for example: my-awesome-controller1.scheduler, compute-host1.compute"},{"line_number":131,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_f64e3c95","line":129,"in_reply_to":"7a2fa921_5e088291","updated":"2015-10-07 16:26:26.000000000","message":"Yes, host today comes from CONF.host so I propose to use that in the future as well.\n\nOK, I agree to change it to \u003cservice\u003e:\u003chost\u003e","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"* The publisher_id and the event_type together should uniquely identify a"},{"line_number":128,"context_line":"  single notification type."},{"line_number":129,"context_line":"* publisher_id should have a format of \u003chost\u003e.\u003cservice\u003e"},{"line_number":130,"context_line":"  for example: my-awesome-controller1.scheduler, compute-host1.compute"},{"line_number":131,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_5e088291","line":129,"in_reply_to":"7a2fa921_a6aa0718","updated":"2015-10-06 23:35:50.000000000","message":"Given there is only one compute manager running a single service for N compute nodes, that\u0027s acceptable to only use \u003cservice\u003e:\u003chost\u003e\n\n+1 with John again on having the service first, like we have with nova service-list","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e85ca02e60005244f21514e1186906bcbbec740b","unresolved":false,"context_lines":[{"line_number":130,"context_line":"  for example: my-awesome-controller1.scheduler, compute-host1.compute"},{"line_number":131,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":133,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_a80e5532","line":133,"updated":"2015-10-06 17:02:20.000000000","message":"honestly, I think we need one more field here, probably mapping to the specific object being used:\n\nevent_format\n\nFor example, instance.create.end and instance.create.start and instance.create.error should probably have the same format \"nova.objects.notifications.instance_event\" or something like that.\n\nI think we actually get this for free in the \"nova_object.name\" field.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":130,"context_line":"  for example: my-awesome-controller1.scheduler, compute-host1.compute"},{"line_number":131,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":133,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_91d272d1","line":133,"in_reply_to":"7a2fa921_a80e5532","updated":"2015-10-07 16:26:26.000000000","message":"We get the format of the payload for free. The first level of format is defined by the oslo.versionedobjects and in that there is the nova_object.name field that defines the schema of the nova_object.data. \nBased on this I don\u0027t feel the need of adding the event_format information to the event_type","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e85ca02e60005244f21514e1186906bcbbec740b","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":133,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."},{"line_number":138,"context_line":"* The payload should be a versioned object."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_88f3590a","line":135,"updated":"2015-10-06 17:02:20.000000000","message":"please no, lets reduce the set to just:\n\ntrace, debug, info, warning, error, critical\n\nWe can use the definitions in here:\nhttp://specs.openstack.org/openstack/openstack-specs/specs/log-guidelines.html#definition-of-log-levels","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":133,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."},{"line_number":138,"context_line":"* The payload should be a versioned object."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_d196aaef","line":135,"in_reply_to":"7a2fa921_5e2f22f6","updated":"2015-10-07 16:26:26.000000000","message":"These are notification priorities as defined in the notifier interface not log levels. Anyhow I removed warning from the list and kept warn.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":133,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."},{"line_number":138,"context_line":"* The payload should be a versioned object."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_5e2f22f6","line":135,"in_reply_to":"7a2fa921_5ef3b00a","updated":"2015-10-06 23:35:50.000000000","message":"+1 to John","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b5c45abefa84c6a48cec6638c58c8caf1594f5dc","unresolved":false,"context_lines":[{"line_number":132,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":133,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."},{"line_number":138,"context_line":"* The payload should be a versioned object."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_5ef3b00a","line":135,"in_reply_to":"7a2fa921_88f3590a","updated":"2015-10-06 17:22:05.000000000","message":"so its not warn and warning, its just warn.\n\nI see why we have that list now:\nhttps://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/notify/notifier.py#L312","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e85ca02e60005244f21514e1186906bcbbec740b","unresolved":false,"context_lines":[{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."},{"line_number":138,"context_line":"* The payload should be a versioned object."},{"line_number":139,"context_line":"* Every  managed notification has a version which is the version of the payload"},{"line_number":140,"context_line":"  object."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_086d0998","line":137,"updated":"2015-10-06 17:02:20.000000000","message":"A single event_type should use a single priority level, seems better here, really in reference to my note about the need for event_format.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":134,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."},{"line_number":138,"context_line":"* The payload should be a versioned object."},{"line_number":139,"context_line":"* Every  managed notification has a version which is the version of the payload"},{"line_number":140,"context_line":"  object."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_bc0d0539","line":137,"in_reply_to":"7a2fa921_086d0998","updated":"2015-10-07 16:26:26.000000000","message":"Done","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."},{"line_number":138,"context_line":"* The payload should be a versioned object."},{"line_number":139,"context_line":"* Every  managed notification has a version which is the version of the payload"},{"line_number":140,"context_line":"  object."},{"line_number":141,"context_line":"* Nova always emits the latest version of the payload no back pinning of"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_3e1346ba","line":138,"updated":"2015-10-06 23:35:50.000000000","message":"Well, you mean a serialized object since it\u0027s over the wire ?","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  warn, warning, error, critical, sample) but custom string shall not be used"},{"line_number":136,"context_line":"  as priority."},{"line_number":137,"context_line":"* A single notification type should use a single priority level."},{"line_number":138,"context_line":"* The payload should be a versioned object."},{"line_number":139,"context_line":"* Every  managed notification has a version which is the version of the payload"},{"line_number":140,"context_line":"  object."},{"line_number":141,"context_line":"* Nova always emits the latest version of the payload no back pinning of"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_3c5fb50f","line":138,"in_reply_to":"7a2fa921_3e1346ba","updated":"2015-10-07 16:26:26.000000000","message":"Done","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":206,"context_line":".. code-block:: python"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":209,"context_line":"    class KeyPairPayload(base.NovaObject):"},{"line_number":210,"context_line":"        # Version 1.0: Initial version"},{"line_number":211,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_7e78def2","line":209,"updated":"2015-10-06 23:35:50.000000000","message":"Why are we needing a specific NovaObject instead of defining a Mixin (eg. NotifiedMixin) which could expose some methods and fields to the existing objects ?","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":206,"context_line":".. code-block:: python"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":209,"context_line":"    class KeyPairPayload(base.NovaObject):"},{"line_number":210,"context_line":"        # Version 1.0: Initial version"},{"line_number":211,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_4293a3a3","line":209,"in_reply_to":"7a2fa921_7e78def2","updated":"2015-10-07 16:26:26.000000000","message":"I see three possible cases here:\n\n1) notification reuses an existing versioned object completely. In this case a mixin is the good solution\n\n2) notification reuses an existing versioned object partially, some fields are removed some are added. This case I think we need a new versioned object to capture the structure of the notification clearly somewhere. Also the version of the original object shall be different from the version of the payload in this case.\n\n3) notification sends information that is not related to a versioned object. This case we have to create a new versioned object anyhow.\n\n\nAlso see my answer for John\u0027s comment regarding KeyPair object below.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e85ca02e60005244f21514e1186906bcbbec740b","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        fields \u003d {"},{"line_number":214,"context_line":"              \u0027tenant_id\u0027: fields.StringField(),"},{"line_number":215,"context_line":"              \u0027user_id\u0027: fields.StringField(),"},{"line_number":216,"context_line":"              \u0027key_name\u0027: fields.StringField(),"},{"line_number":217,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_2ea80d1f","line":214,"updated":"2015-10-06 17:02:20.000000000","message":"Would we not want a keypair object field here:\nhttps://github.com/openstack/nova/blob/master/nova/objects/keypair.py","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7bd140b300e126fc51a0d545ec580f53c7674f68","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        fields \u003d {"},{"line_number":214,"context_line":"              \u0027tenant_id\u0027: fields.StringField(),"},{"line_number":215,"context_line":"              \u0027user_id\u0027: fields.StringField(),"},{"line_number":216,"context_line":"              \u0027key_name\u0027: fields.StringField(),"},{"line_number":217,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_f1b7f137","line":214,"in_reply_to":"7a2fa921_04c6109a","updated":"2015-10-08 14:55:55.000000000","message":"Here is the keypair creation code with notification https://github.com/openstack/nova/blob/master/nova/compute/api.py#L3788-L3806 \n\nBut you are right, we can rearrange the code to have a half created KeyPair object first and then send the notification based on that object.\n\nThis works in the code but it has a small contradiction that we send the keypair.create.start notification _after_ we started creating the object not _before_. I don\u0027t know how problematic it is. Personally I can live with it.\n\nI agree with your point about removing unnecessary things from the object. I guess it is not just the row id but the standard db fields like \u0027deleted\u0027, \u0027deleted_at\u0027 etc.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"05b0a8408601f0fa35dbbd537d3c7441be6a4ff6","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        fields \u003d {"},{"line_number":214,"context_line":"              \u0027tenant_id\u0027: fields.StringField(),"},{"line_number":215,"context_line":"              \u0027user_id\u0027: fields.StringField(),"},{"line_number":216,"context_line":"              \u0027key_name\u0027: fields.StringField(),"},{"line_number":217,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_04c6109a","line":214,"in_reply_to":"7a2fa921_1dd8b01c","updated":"2015-10-07 17:37:05.000000000","message":"Can you provide a link to this? Just because it\u0027s not in the database doesn\u0027t mean we can\u0027t send the object we\u0027re about to create in the notification.\n\nOne reason *not* to just randomly use the primary object for a thing in the notification is that the object has things like the row id. For a cellsv2 deploy, you\u0027d be getting multiple notifications for keypairs with the same id, different uuid. It\u0027s not the end of the world but it\u0027s probably confusing and the consumers of notifications won\u0027t know why.\n\nPerhaps we could have a method on the base notification that takes the primary object (such as a KeyPair in this case) and obj_clone()s it, and then removes things like row id?","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"        fields \u003d {"},{"line_number":214,"context_line":"              \u0027tenant_id\u0027: fields.StringField(),"},{"line_number":215,"context_line":"              \u0027user_id\u0027: fields.StringField(),"},{"line_number":216,"context_line":"              \u0027key_name\u0027: fields.StringField(),"},{"line_number":217,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_1dd8b01c","line":214,"in_reply_to":"7a2fa921_2ea80d1f","updated":"2015-10-07 16:26:26.000000000","message":"I found an interesting contradiction reusing the existing KeyPair object in the keypair.create.start notification. This notification needs to be sent _before_ we actually create the key pair so we cannot really send it based on KeyPair object. For example having a fingerprint in the KeyPair object means that nova has already generated the KeyPair. \n\nWhat we can do here is that we create a partially filled KeyPair object before we send the keypair.create.start:\n\n1) create a KeyPair object with the information we have based on the API request\n\n2) send the keypair.create.start notification based on the partially filled KeyPair object\n\n3) let\u0027s the existing code fill the missing pieces of the KeyPair object and persist it.\n\n4) send the keypair.create.end notification with the now fully filled KeyPair object\n\nHowever this still means that we did something regarding the KeyPair in 1) before we sent the keypair.create.start notification in 2) so the notification is sent later than it should. This can lead to confusion.\nWhat do you think?","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ff5091ec64cfe14c7dc890f943b1d3798dc90bb4","unresolved":false,"context_lines":[{"line_number":235,"context_line":"With the KeyPairPayload versioned object the new notification content"},{"line_number":236,"context_line":"will look like::"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    {"},{"line_number":239,"context_line":"       \"priority\":\"INFO\","},{"line_number":240,"context_line":"       \"event_type\":\"keypair.create.start\","},{"line_number":241,"context_line":"       \"timestamp\":\"2015-10-01 10:04:08.041941\","}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_8387af0e","line":238,"updated":"2015-10-06 17:04:52.000000000","message":"Why can\u0027t this all be an nova object?\n\ni.e. I think priority should be a field in the nova object.\n\nOr does that break how oslo deals with the data we give it?\n\nI really want the object to validate the options for event_type, timestamp, priority etc, so we can have well typed enums, and a fully versioned payload.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7bd140b300e126fc51a0d545ec580f53c7674f68","unresolved":false,"context_lines":[{"line_number":235,"context_line":"With the KeyPairPayload versioned object the new notification content"},{"line_number":236,"context_line":"will look like::"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    {"},{"line_number":239,"context_line":"       \"priority\":\"INFO\","},{"line_number":240,"context_line":"       \"event_type\":\"keypair.create.start\","},{"line_number":241,"context_line":"       \"timestamp\":\"2015-10-01 10:04:08.041941\","}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_f1c61167","line":238,"in_reply_to":"7a2fa921_241d4c0f","updated":"2015-10-08 14:55:55.000000000","message":"OK. I think I see the point now. I think we have to discuss if we really want to change the top level structure of the notification in oslo as the notification drivers are depending on it. See https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/notify/notifier.py#L190 for the current top level structure, and https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/notify/_impl_log.py#L39 for an example dependency.\n\nAnyhow I put both options into the spec.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":235,"context_line":"With the KeyPairPayload versioned object the new notification content"},{"line_number":236,"context_line":"will look like::"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    {"},{"line_number":239,"context_line":"       \"priority\":\"INFO\","},{"line_number":240,"context_line":"       \"event_type\":\"keypair.create.start\","},{"line_number":241,"context_line":"       \"timestamp\":\"2015-10-01 10:04:08.041941\","}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_f7e156d1","line":238,"in_reply_to":"7a2fa921_7e878c0f","updated":"2015-10-07 16:26:26.000000000","message":"oslo.messaging needs the basic fields (priority, event_type, publisher_id, payload) as separate raw strings so we cannot directly pass an object that has these fields to oslo.\n\nWe can wrap the whole data to a Notification object that hides oslo.messaging interface from the emitter of the notification. This is the goal of the Notification object defined above. \n\nWe can try to define the Notification object as a versioned object itself that has the necessary simple fields (priority, event_type, publisher_id) and the payload as a versioned object field. This did not change the serialized from of the notification as we could not pass the Notification object directly to oslo we just use the simple fields and payload fields separately (basically we have to unwrap the Notification object before we can send the notification it represents)\n\nHowever if the Notification object is a versioned object then it needs to have a single well defined version. But the Notification object will depend on many different payload versioned objects with different formats and versions so the version of the Notification object cannot be well defined.\n\nI think what we can do is to enforce the format of the default fields (event_type, publisher_id, priority) in the Notification object, use a versioned object for payload and keep the Notification object unversioned. \n\nActually the top level structure of an emitted notification is already defined by oslo.messaging (e.g. the default fields) so we have to focus on the content of the top level fields, and the structure + content of the payload field.\nSee a code example in https://review.openstack.org/#/c/229881/","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b5c45abefa84c6a48cec6638c58c8caf1594f5dc","unresolved":false,"context_lines":[{"line_number":235,"context_line":"With the KeyPairPayload versioned object the new notification content"},{"line_number":236,"context_line":"will look like::"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    {"},{"line_number":239,"context_line":"       \"priority\":\"INFO\","},{"line_number":240,"context_line":"       \"event_type\":\"keypair.create.start\","},{"line_number":241,"context_line":"       \"timestamp\":\"2015-10-01 10:04:08.041941\","}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_7e878c0f","line":238,"in_reply_to":"7a2fa921_8387af0e","updated":"2015-10-06 17:22:05.000000000","message":"so I think what we might want is a wrapper around oslo.messaging to transform to read the priority, context, and other details out of the object.\n\nso we have a message object that has all the default fields, like priority, then a payload field that has the specific payload object for that type, or something like that?","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"05b0a8408601f0fa35dbbd537d3c7441be6a4ff6","unresolved":false,"context_lines":[{"line_number":235,"context_line":"With the KeyPairPayload versioned object the new notification content"},{"line_number":236,"context_line":"will look like::"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    {"},{"line_number":239,"context_line":"       \"priority\":\"INFO\","},{"line_number":240,"context_line":"       \"event_type\":\"keypair.create.start\","},{"line_number":241,"context_line":"       \"timestamp\":\"2015-10-01 10:04:08.041941\","}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_241d4c0f","line":238,"in_reply_to":"7a2fa921_f7e156d1","updated":"2015-10-07 17:37:05.000000000","message":"I think the suggestion is that we change oslo.messaging to allow us to send it an object directly. That object should inherit from some basic structure where a few key fields (priority, etc) are defined, but otherwise need not be too detailed.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e85ca02e60005244f21514e1186906bcbbec740b","unresolved":false,"context_lines":[{"line_number":249,"context_line":"             \"user_id\":\"513a8dffd47b455e9af1aab0d87e618d\","},{"line_number":250,"context_line":"             \"key_name\":\"mykey5\""},{"line_number":251,"context_line":"          },"},{"line_number":252,"context_line":"          \"nova_object.changes\":["},{"line_number":253,"context_line":"             \"key_name\","},{"line_number":254,"context_line":"             \"user_id\","},{"line_number":255,"context_line":"             \"tenant_id\""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_c36367b0","line":252,"updated":"2015-10-06 17:02:20.000000000","message":"I am trying to think if we need this, we might want to reset the changes before output the object in this particular case?\n\nMaybe we need an option in oslo.versionedobjects to have a \"Non-changes tracked\" / \"non-savable\" object?","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"05b0a8408601f0fa35dbbd537d3c7441be6a4ff6","unresolved":false,"context_lines":[{"line_number":249,"context_line":"             \"user_id\":\"513a8dffd47b455e9af1aab0d87e618d\","},{"line_number":250,"context_line":"             \"key_name\":\"mykey5\""},{"line_number":251,"context_line":"          },"},{"line_number":252,"context_line":"          \"nova_object.changes\":["},{"line_number":253,"context_line":"             \"key_name\","},{"line_number":254,"context_line":"             \"user_id\","},{"line_number":255,"context_line":"             \"tenant_id\""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_84a220ad","line":252,"in_reply_to":"7a2fa921_6cb7b886","updated":"2015-10-07 17:37:05.000000000","message":"All you need to do is implement obj_what_changed() to return an empty set on the base object. Then we\u0027ll never include changes in the serialized form. No need to overthink it or require us to remember to reset the object each time.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7bd140b300e126fc51a0d545ec580f53c7674f68","unresolved":false,"context_lines":[{"line_number":249,"context_line":"             \"user_id\":\"513a8dffd47b455e9af1aab0d87e618d\","},{"line_number":250,"context_line":"             \"key_name\":\"mykey5\""},{"line_number":251,"context_line":"          },"},{"line_number":252,"context_line":"          \"nova_object.changes\":["},{"line_number":253,"context_line":"             \"key_name\","},{"line_number":254,"context_line":"             \"user_id\","},{"line_number":255,"context_line":"             \"tenant_id\""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_b1a3b9b1","line":252,"in_reply_to":"7a2fa921_84a220ad","updated":"2015-10-08 14:55:55.000000000","message":"Good point, thanks.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":249,"context_line":"             \"user_id\":\"513a8dffd47b455e9af1aab0d87e618d\","},{"line_number":250,"context_line":"             \"key_name\":\"mykey5\""},{"line_number":251,"context_line":"          },"},{"line_number":252,"context_line":"          \"nova_object.changes\":["},{"line_number":253,"context_line":"             \"key_name\","},{"line_number":254,"context_line":"             \"user_id\","},{"line_number":255,"context_line":"             \"tenant_id\""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_6cb7b886","line":252,"in_reply_to":"7a2fa921_c36367b0","updated":"2015-10-07 16:26:26.000000000","message":"@John: We can simply call obj_reset_change() on the payload before we emit the notification that will cause that \"nova_object.changes\" key won\u0027t be added to the serialized form of the payload.\n\n@Sylvain: I think we should try to avoid manipulating the serialized format of the payload by code if possible and in this case it is possible by calling obj_reset_change()","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":249,"context_line":"             \"user_id\":\"513a8dffd47b455e9af1aab0d87e618d\","},{"line_number":250,"context_line":"             \"key_name\":\"mykey5\""},{"line_number":251,"context_line":"          },"},{"line_number":252,"context_line":"          \"nova_object.changes\":["},{"line_number":253,"context_line":"             \"key_name\","},{"line_number":254,"context_line":"             \"user_id\","},{"line_number":255,"context_line":"             \"tenant_id\""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_3ec82622","line":252,"in_reply_to":"7a2fa921_c36367b0","updated":"2015-10-06 23:35:50.000000000","message":"That\u0027s why I think about a possible .notify() method added to the Mixin which would wrap the serialized object like we want ?","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e85ca02e60005244f21514e1186906bcbbec740b","unresolved":false,"context_lines":[{"line_number":258,"context_line":"       \"message_id\":\"a03c4ab4-9e05-4421-8150-ec30c2464302\""},{"line_number":259,"context_line":"    }"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"Alternatively existing versioned objects can also be reused as payload objects."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"No db schema changes are foreseen."},{"line_number":264,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_2321fb4d","line":261,"updated":"2015-10-06 17:02:20.000000000","message":"I think we should also include:\n* notification for keypair.create.error or something that sends an error\n* the instance.update notification that is sent from the instance.save()\n* the notifications send when errors are raised","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":258,"context_line":"       \"message_id\":\"a03c4ab4-9e05-4421-8150-ec30c2464302\""},{"line_number":259,"context_line":"    }"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"Alternatively existing versioned objects can also be reused as payload objects."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"No db schema changes are foreseen."},{"line_number":264,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_0eee34ec","line":261,"in_reply_to":"7a2fa921_2321fb4d","updated":"2015-10-07 16:26:26.000000000","message":"I added TODOs to the spec regarding the examples you requested. I will work on them in the coming days.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d4a765827b164ab810d7f9bd6e0f74199747c2a3","unresolved":false,"context_lines":[{"line_number":258,"context_line":"       \"message_id\":\"a03c4ab4-9e05-4421-8150-ec30c2464302\""},{"line_number":259,"context_line":"    }"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"Alternatively existing versioned objects can also be reused as payload objects."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"No db schema changes are foreseen."},{"line_number":264,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_75bd8901","line":261,"in_reply_to":"7a2fa921_2321fb4d","updated":"2015-10-12 16:28:59.000000000","message":"I added the requested examples to patch set 6.","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":265,"context_line":"REST API impact"},{"line_number":266,"context_line":"---------------"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"I don\u0027t foresee REST API changes."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Security impact"},{"line_number":271,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_bedc36e5","line":268,"updated":"2015-10-06 23:35:50.000000000","message":"just put N/A","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":265,"context_line":"REST API impact"},{"line_number":266,"context_line":"---------------"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"I don\u0027t foresee REST API changes."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Security impact"},{"line_number":271,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_3fc1e480","line":268,"in_reply_to":"7a2fa921_bedc36e5","updated":"2015-10-07 16:26:26.000000000","message":"Done","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":271,"context_line":"---------------"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"The information content of the managed notification shall be similar to the"},{"line_number":274,"context_line":"un-managed notification it replaces so no new security impact is identified."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"Notifications impact"},{"line_number":277,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_1ed52ab8","line":274,"updated":"2015-10-06 23:35:50.000000000","message":"Just put N/A","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":271,"context_line":"---------------"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"The information content of the managed notification shall be similar to the"},{"line_number":274,"context_line":"un-managed notification it replaces so no new security impact is identified."},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"Notifications impact"},{"line_number":277,"context_line":"--------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_dfbf90f9","line":274,"in_reply_to":"7a2fa921_1ed52ab8","updated":"2015-10-07 16:26:26.000000000","message":"Done","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"4e304d76548d561b243f5f1a9f9ff1078b9963d9","unresolved":false,"context_lines":[{"line_number":321,"context_line":"Work Items"},{"line_number":322,"context_line":"----------"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Needs to be defined."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_7ee69eb5","line":324,"updated":"2015-10-06 23:35:50.000000000","message":"I\u0027d like to see more of that :-)","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f1dc2a811ffba1b7c3531297a52f55d5525cd337","unresolved":false,"context_lines":[{"line_number":321,"context_line":"Work Items"},{"line_number":322,"context_line":"----------"},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"Needs to be defined."},{"line_number":325,"context_line":""},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a2fa921_fff84c4b","line":324,"in_reply_to":"7a2fa921_7ee69eb5","updated":"2015-10-07 16:26:26.000000000","message":"I\u0027m not sure what should be the exact scope of the work. Definitely I don\u0027t plan to create managed notification for every un-managed notifications in Mitaka because it seems not fit into a single cycle. Anyhow I\u0027ve proposed something in the next patch-set so that we can iterate on it. :)","commit_id":"7cd368a2ae993cca92acf1d1baf27cb5f591732a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/versioned-notification-api"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Notification interface of nova is not well defined and the current"},{"line_number":14,"context_line":"notifications define a very inconsistent interface. There is no easy"},{"line_number":15,"context_line":"way to see from the notification consumer point of view what is the format"},{"line_number":16,"context_line":"and the content of the notification nova sends."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_2479cc2f","line":13,"updated":"2015-10-07 18:01:37.000000000","message":"s/Notification/The notification/","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/nova/+spec/versioned-notification-api"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Notification interface of nova is not well defined and the current"},{"line_number":14,"context_line":"notifications define a very inconsistent interface. There is no easy"},{"line_number":15,"context_line":"way to see from the notification consumer point of view what is the format"},{"line_number":16,"context_line":"and the content of the notification nova sends."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_d196753e","line":13,"in_reply_to":"7a2fa921_2479cc2f","updated":"2015-10-08 14:56:12.000000000","message":"Done","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":64,"context_line":"It seems that the content of publisher_id and event_type overlaps in some"},{"line_number":65,"context_line":"cases."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"payload: nova does not have any restriction on the payload field which"},{"line_number":69,"context_line":"leads to very many different formats. Sometimes it is a view of an existing"},{"line_number":70,"context_line":"nova versioned object e.g. in case of compute.instance.update notification"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_e4a9947c","line":67,"updated":"2015-10-07 18:01:37.000000000","message":"Extra blank line here","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":64,"context_line":"It seems that the content of publisher_id and event_type overlaps in some"},{"line_number":65,"context_line":"cases."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"payload: nova does not have any restriction on the payload field which"},{"line_number":69,"context_line":"leads to very many different formats. Sometimes it is a view of an existing"},{"line_number":70,"context_line":"nova versioned object e.g. in case of compute.instance.update notification"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_7197613a","line":67,"in_reply_to":"7a2fa921_e4a9947c","updated":"2015-10-08 14:56:12.000000000","message":"Done","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Use Cases"},{"line_number":77,"context_line":"---------"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Tool developer wants to consume nova notifications to implement his"},{"line_number":80,"context_line":"requirements. He wants to know what is the format of the notifications and"},{"line_number":81,"context_line":"he wants to have some way to detect and follow up changes in the notification"},{"line_number":82,"context_line":"format later on."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_84dea00f","line":79,"updated":"2015-10-07 18:01:37.000000000","message":"s/Tool developer wants/As a tool developer, I want/\n\nand of course s/his/my/ hereafter","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Use Cases"},{"line_number":77,"context_line":"---------"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Tool developer wants to consume nova notifications to implement his"},{"line_number":80,"context_line":"requirements. He wants to know what is the format of the notifications and"},{"line_number":81,"context_line":"he wants to have some way to detect and follow up changes in the notification"},{"line_number":82,"context_line":"format later on."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_31d489ea","line":79,"in_reply_to":"7a2fa921_84dea00f","updated":"2015-10-08 14:56:12.000000000","message":"Done","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":87,"context_line":"This spec is created to agree on the format, content and meaning of the fields"},{"line_number":88,"context_line":"in notification sent by nova and to propose way to change the existing"},{"line_number":89,"context_line":"notifications to the new format while giving time to the notification"},{"line_number":90,"context_line":"consumers to adapt to the change. Also it tries to give a technical solution"},{"line_number":91,"context_line":"keeping the notification payload more stable and versioned."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Define two sets of notifications managed and un-managed."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_044130a9","line":90,"range":{"start_line":90,"start_character":68,"end_line":90,"end_character":76},"updated":"2015-10-07 18:01:37.000000000","message":"s/solution/solution to/","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":87,"context_line":"This spec is created to agree on the format, content and meaning of the fields"},{"line_number":88,"context_line":"in notification sent by nova and to propose way to change the existing"},{"line_number":89,"context_line":"notifications to the new format while giving time to the notification"},{"line_number":90,"context_line":"consumers to adapt to the change. Also it tries to give a technical solution"},{"line_number":91,"context_line":"keeping the notification payload more stable and versioned."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Define two sets of notifications managed and un-managed."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_d10bd58c","line":90,"range":{"start_line":90,"start_character":68,"end_line":90,"end_character":76},"in_reply_to":"7a2fa921_044130a9","updated":"2015-10-08 14:56:12.000000000","message":"Done","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":102,"context_line":"During the implementation of this blueprint developers will create managed"},{"line_number":103,"context_line":"notifications based on un-managed notifications. Managed and un-managed"},{"line_number":104,"context_line":"notifications for the same event can live in tree together for some time to"},{"line_number":105,"context_line":"give a transition period for the notification consumers."},{"line_number":106,"context_line":"Later un-managed notifications can be deprecated and removed."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"However some of the today\u0027s notifications cannot be really converted to managed"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_2451cc62","line":105,"updated":"2015-10-07 18:01:37.000000000","message":"How are you planning to support both of them? I think that if, when we create a new managed notification object, we add a method for to_old_format() or something, then we can avoid having to keep both notification paths. Thoughts?","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":102,"context_line":"During the implementation of this blueprint developers will create managed"},{"line_number":103,"context_line":"notifications based on un-managed notifications. Managed and un-managed"},{"line_number":104,"context_line":"notifications for the same event can live in tree together for some time to"},{"line_number":105,"context_line":"give a transition period for the notification consumers."},{"line_number":106,"context_line":"Later un-managed notifications can be deprecated and removed."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"However some of the today\u0027s notifications cannot be really converted to managed"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_3170090b","line":105,"in_reply_to":"7a2fa921_2451cc62","updated":"2015-10-08 14:56:12.000000000","message":"Good suggestion. Let\u0027s use the managed notification object to emit both the old and the new format of the notification.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":103,"context_line":"notifications based on un-managed notifications. Managed and un-managed"},{"line_number":104,"context_line":"notifications for the same event can live in tree together for some time to"},{"line_number":105,"context_line":"give a transition period for the notification consumers."},{"line_number":106,"context_line":"Later un-managed notifications can be deprecated and removed."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"However some of the today\u0027s notifications cannot be really converted to managed"},{"line_number":109,"context_line":"notifications for example the usage of the notify_decorator which dumps the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_c47818f5","line":106,"updated":"2015-10-07 18:01:37.000000000","message":"Sounds like we should specifically publish the managed notifications to a new topic, leaving the unmanaged ones to the original queue?","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":103,"context_line":"notifications based on un-managed notifications. Managed and un-managed"},{"line_number":104,"context_line":"notifications for the same event can live in tree together for some time to"},{"line_number":105,"context_line":"give a transition period for the notification consumers."},{"line_number":106,"context_line":"Later un-managed notifications can be deprecated and removed."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"However some of the today\u0027s notifications cannot be really converted to managed"},{"line_number":109,"context_line":"notifications for example the usage of the notify_decorator which dumps the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_d138b5f1","line":106,"in_reply_to":"7a2fa921_c47818f5","updated":"2015-10-08 14:56:12.000000000","message":"I think it can be done but I\u0027m not sure we need to send them to different topics. What is the reason you would send it to different topics?","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":110,"context_line":"args and kwargs of a function into the notification payload. For these"},{"line_number":111,"context_line":"notifications a generic, dict based payload can be defined that formulate as"},{"line_number":112,"context_line":"much as possible and leaves the rest of the payload un-managed."},{"line_number":113,"context_line":"Adding new semi-managed notifications shall be avoided in the future."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Nova might want to restrict adding new un-managed notification in the future."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_64eca48f","line":113,"updated":"2015-10-07 18:01:37.000000000","message":"Seems like this is just a TraceNotification, with a list of args and dict of kwargs?","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":110,"context_line":"args and kwargs of a function into the notification payload. For these"},{"line_number":111,"context_line":"notifications a generic, dict based payload can be defined that formulate as"},{"line_number":112,"context_line":"much as possible and leaves the rest of the payload un-managed."},{"line_number":113,"context_line":"Adding new semi-managed notifications shall be avoided in the future."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"Nova might want to restrict adding new un-managed notification in the future."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_940c6b3c","line":113,"in_reply_to":"7a2fa921_64eca48f","updated":"2015-10-08 14:56:12.000000000","message":"Yes, something like that. I will add the definition to the Data model section when I remove the TODO \u0027* add semi-managed example\u0027","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Rules of the managed notifications:"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* The publisher_id and the event_type together should uniquely identify a"},{"line_number":121,"context_line":"  single notification type."},{"line_number":122,"context_line":"* publisher_id should have a format of \u003cservice\u003e:\u003chost\u003e"},{"line_number":123,"context_line":"  for example: scheduler:my-awesome-controller1, compute:compute-host1"},{"line_number":124,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_e4f8b44b","line":121,"updated":"2015-10-07 18:01:37.000000000","message":"Seems like event_type is just str(NotificationThing.__name__) and inside we need a sender field and maybe a sub_type field, no?","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Rules of the managed notifications:"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* The publisher_id and the event_type together should uniquely identify a"},{"line_number":121,"context_line":"  single notification type."},{"line_number":122,"context_line":"* publisher_id should have a format of \u003cservice\u003e:\u003chost\u003e"},{"line_number":123,"context_line":"  for example: scheduler:my-awesome-controller1, compute:compute-host1"},{"line_number":124,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_b44f276a","line":121,"in_reply_to":"7a2fa921_e4f8b44b","updated":"2015-10-08 14:56:12.000000000","message":"Yes.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* The publisher_id and the event_type together should uniquely identify a"},{"line_number":121,"context_line":"  single notification type."},{"line_number":122,"context_line":"* publisher_id should have a format of \u003cservice\u003e:\u003chost\u003e"},{"line_number":123,"context_line":"  for example: scheduler:my-awesome-controller1, compute:compute-host1"},{"line_number":124,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":125,"context_line":"  instance.create.end, aggregate.removehost.start,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_44a08843","line":122,"updated":"2015-10-07 18:01:37.000000000","message":"why not just a field for service and a field for host?","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* The publisher_id and the event_type together should uniquely identify a"},{"line_number":121,"context_line":"  single notification type."},{"line_number":122,"context_line":"* publisher_id should have a format of \u003cservice\u003e:\u003chost\u003e"},{"line_number":123,"context_line":"  for example: scheduler:my-awesome-controller1, compute:compute-host1"},{"line_number":124,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":125,"context_line":"  instance.create.end, aggregate.removehost.start,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_4dfe41af","line":122,"in_reply_to":"7a2fa921_44a08843","updated":"2015-10-08 14:56:12.000000000","message":"Done","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  for example: scheduler:my-awesome-controller1, compute:compute-host1"},{"line_number":124,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":125,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":126,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":127,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":128,"context_line":"  warn, error, critical, sample) except \u0027warning\u0027 (use warn instead). Also"},{"line_number":129,"context_line":"  custom string shall not be used as priority."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_84bd406a","line":126,"updated":"2015-10-07 18:01:37.000000000","message":"Why not just fields for action and phase? That way it\u0027s pretty clear what we\u0027re expecting to go in there. Your \u003cobject\u003e thing is confusing here, since we\u0027re talking about objects. Maybe that is \"subsystem\" or something?","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":123,"context_line":"  for example: scheduler:my-awesome-controller1, compute:compute-host1"},{"line_number":124,"context_line":"* event_type should have a format of \u003cobject\u003e.\u003caction\u003e.\u003cphase\u003e for example:"},{"line_number":125,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":126,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":127,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":128,"context_line":"  warn, error, critical, sample) except \u0027warning\u0027 (use warn instead). Also"},{"line_number":129,"context_line":"  custom string shall not be used as priority."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_0dce092e","line":126,"in_reply_to":"7a2fa921_84bd406a","updated":"2015-10-08 14:56:12.000000000","message":"OK. I will add specific fields.\nRegarding the object field currently used values are \u0027instance\u0027, \u0027scheduler\u0027, \u0027keypair\u0027, \u0027servergroup\u0027, \u0027aggregate\u0027, \u0027host\u0027, \u0027volume\u0027. For me these are not all subsystems. Yes, scheduler is but instance, keypair and host definitely not a subsystem. I agree that object might be a bit too general and therefore confusing but I have no better word describing the possible values.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":127,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":128,"context_line":"  warn, error, critical, sample) except \u0027warning\u0027 (use warn instead). Also"},{"line_number":129,"context_line":"  custom string shall not be used as priority."},{"line_number":130,"context_line":"* A single event_type should use a single priority level."},{"line_number":131,"context_line":"* The payload should be a versioned object that is serialized when the"},{"line_number":132,"context_line":"  notification is emitted."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_84646022","line":129,"updated":"2015-10-07 18:01:37.000000000","message":"This should be an EnumField on an object, IMHO. That way if we ever add or remove a priority, we get a hash failure to warn us that we need to do something to our version.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":127,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":128,"context_line":"  warn, error, critical, sample) except \u0027warning\u0027 (use warn instead). Also"},{"line_number":129,"context_line":"  custom string shall not be used as priority."},{"line_number":130,"context_line":"* A single event_type should use a single priority level."},{"line_number":131,"context_line":"* The payload should be a versioned object that is serialized when the"},{"line_number":132,"context_line":"  notification is emitted."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_2de3c5a5","line":129,"in_reply_to":"7a2fa921_84646022","updated":"2015-10-08 14:56:12.000000000","message":"Done","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":127,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":128,"context_line":"  warn, error, critical, sample) except \u0027warning\u0027 (use warn instead). Also"},{"line_number":129,"context_line":"  custom string shall not be used as priority."},{"line_number":130,"context_line":"* A single event_type should use a single priority level."},{"line_number":131,"context_line":"* The payload should be a versioned object that is serialized when the"},{"line_number":132,"context_line":"  notification is emitted."},{"line_number":133,"context_line":"* Every managed notification has a version which is the version of the payload"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_443c08e2","line":130,"updated":"2015-10-07 18:01:37.000000000","message":"I assume this is because you want instance.created\u003d\u003dINFO and instance.create_failed\u003d\u003dERROR, right?\n\nIf so, why do we need to maintain them both and just require they be equivalent? Can\u0027t we have a lookup table where we define what level an instance.created notification should have? That way, if we have to emit the same notification in two places (instance.updated for example), we have no control over the priority, and we can look in the table to see that instance.created is INFO, in case we need to choose a different one to get an ERROR-level notification.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":127,"context_line":"* Every oslo.messaging defined priority level can be used (audit, debug, info,"},{"line_number":128,"context_line":"  warn, error, critical, sample) except \u0027warning\u0027 (use warn instead). Also"},{"line_number":129,"context_line":"  custom string shall not be used as priority."},{"line_number":130,"context_line":"* A single event_type should use a single priority level."},{"line_number":131,"context_line":"* The payload should be a versioned object that is serialized when the"},{"line_number":132,"context_line":"  notification is emitted."},{"line_number":133,"context_line":"* Every managed notification has a version which is the version of the payload"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_d0598836","line":130,"in_reply_to":"7a2fa921_443c08e2","updated":"2015-10-08 14:56:12.000000000","message":"Honestly, I\u0027m not sure that this rule even needed. Can we just have Notification objects where the priority simply a field of the object? No lookup table no complexity. :)","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":129,"context_line":"  custom string shall not be used as priority."},{"line_number":130,"context_line":"* A single event_type should use a single priority level."},{"line_number":131,"context_line":"* The payload should be a versioned object that is serialized when the"},{"line_number":132,"context_line":"  notification is emitted."},{"line_number":133,"context_line":"* Every managed notification has a version which is the version of the payload"},{"line_number":134,"context_line":"  object."},{"line_number":135,"context_line":"* Nova always emits the latest version of the payload no back pinning of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_4413a866","line":132,"updated":"2015-10-07 18:01:37.000000000","message":"I feel like this whole thing should be an object, not just the payload. You just defined a bunch of rules above because we\u0027re not consistent with the existing loosely-defined interface. So why not strengthen the interface?","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":129,"context_line":"  custom string shall not be used as priority."},{"line_number":130,"context_line":"* A single event_type should use a single priority level."},{"line_number":131,"context_line":"* The payload should be a versioned object that is serialized when the"},{"line_number":132,"context_line":"  notification is emitted."},{"line_number":133,"context_line":"* Every managed notification has a version which is the version of the payload"},{"line_number":134,"context_line":"  object."},{"line_number":135,"context_line":"* Nova always emits the latest version of the payload no back pinning of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_145e1b12","line":132,"in_reply_to":"7a2fa921_4413a866","updated":"2015-10-08 14:56:12.000000000","message":"I\u0027m convinced. I will wrap the whole thing into an versioned object.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":143,"context_line":"  has a managed alternative in Mitaka"},{"line_number":144,"context_line":"* Provide configuration option for deployers to decide what notifications nova"},{"line_number":145,"context_line":"  shall emmit. Possible values are un-managed only, managed only, both managed"},{"line_number":146,"context_line":"  and un-managed."},{"line_number":147,"context_line":"* in N release remove the deprecated un-managed notifications"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_9f2a6d7d","line":146,"updated":"2015-10-07 18:01:37.000000000","message":"Meh, I guess. My preference would, I think, be to just emit the ones we\u0027re supporting for compatibility while we are. In mitaka this will be all of them, potentially with releasenotes in mitaka saying that \"$these will are now deprecated\" and we just remove them in N. No reason to make this configurable, IMHO.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":143,"context_line":"  has a managed alternative in Mitaka"},{"line_number":144,"context_line":"* Provide configuration option for deployers to decide what notifications nova"},{"line_number":145,"context_line":"  shall emmit. Possible values are un-managed only, managed only, both managed"},{"line_number":146,"context_line":"  and un-managed."},{"line_number":147,"context_line":"* in N release remove the deprecated un-managed notifications"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_11f86d48","line":146,"in_reply_to":"7a2fa921_9f2a6d7d","updated":"2015-10-08 14:56:12.000000000","message":"OK. Let\u0027s do it simple, without the additional config options.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":156,"context_line":"* What identifies a notification type uniquely?"},{"line_number":157,"context_line":"* How to ensure backward compatibility with pre Mitaka clients?"},{"line_number":158,"context_line":"* Do we want to have a single global version for the Notification API or"},{"line_number":159,"context_line":"  we want to have version per notification type?"},{"line_number":160,"context_line":"* Do we want to use the versioned object concept for payload or invent"},{"line_number":161,"context_line":"  something else?"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_3f58f931","line":159,"updated":"2015-10-07 18:01:37.000000000","message":"This is not an alternative. It\u0027s easy to do  this with the approach you\u0027re heading towards here if that\u0027s what we want to do. Just define every notification object with VERSION \u003d GLOBAL_VERSION, and bump the global whenever you need to change anything.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":156,"context_line":"* What identifies a notification type uniquely?"},{"line_number":157,"context_line":"* How to ensure backward compatibility with pre Mitaka clients?"},{"line_number":158,"context_line":"* Do we want to have a single global version for the Notification API or"},{"line_number":159,"context_line":"  we want to have version per notification type?"},{"line_number":160,"context_line":"* Do we want to use the versioned object concept for payload or invent"},{"line_number":161,"context_line":"  something else?"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_148cdb7d","line":159,"in_reply_to":"7a2fa921_3f58f931","updated":"2015-10-08 14:56:12.000000000","message":"Can be done. I have no hard opinion which way we should go. Single global version, or version per notification type. What do you prefer?","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. code-block:: python"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    class Notification(object):"},{"line_number":172,"context_line":"        def __init__(self, priority, event_type, publisher_id, payload):"},{"line_number":173,"context_line":"            \"\"\""},{"line_number":174,"context_line":"            :param priority: enum of strings possible. Values are AUDIT,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_bf63a9db","line":171,"updated":"2015-10-07 18:01:37.000000000","message":"This is from oslo.messaging I guess? Why can\u0027t we pass it a notification object that inherits from VersionedObject if it has these fields? Then we could just modify oslo.messaging to serialize the object if it\u0027s possible instead of doing what it does today, or have it do the publish-object-to-new-queue itself.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":".. code-block:: python"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    class Notification(object):"},{"line_number":172,"context_line":"        def __init__(self, priority, event_type, publisher_id, payload):"},{"line_number":173,"context_line":"            \"\"\""},{"line_number":174,"context_line":"            :param priority: enum of strings possible. Values are AUDIT,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_d4d74349","line":171,"in_reply_to":"7a2fa921_bf63a9db","updated":"2015-10-08 14:56:12.000000000","message":"I will add this as an option to the spec. See my above comment about the possible impact on every notification driver because of the top level structure change.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                               instance.create.end"},{"line_number":182,"context_line":"            :param publisher_id: string with a format of \u003cservice\u003e:\u003chost\u003e"},{"line_number":183,"context_line":"                                 for example scheduler:my-awesome-controller1"},{"line_number":184,"context_line":"            :param payload: a versioned object"},{"line_number":185,"context_line":"            \"\"\""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_df8c6581","line":184,"updated":"2015-10-07 18:01:37.000000000","message":"I don\u0027t really think I like the idea of just having the payload be a VersionedObject, but I may be biased :)","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                               instance.create.end"},{"line_number":182,"context_line":"            :param publisher_id: string with a format of \u003cservice\u003e:\u003chost\u003e"},{"line_number":183,"context_line":"                                 for example scheduler:my-awesome-controller1"},{"line_number":184,"context_line":"            :param payload: a versioned object"},{"line_number":185,"context_line":"            \"\"\""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_d43e638b","line":184,"in_reply_to":"7a2fa921_df8c6581","updated":"2015-10-08 14:56:12.000000000","message":"See above comment.","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7f81106021b8a5447b78a47e41f6a0451436e343","unresolved":false,"context_lines":[{"line_number":262,"context_line":"          \"nova_object.changes\":["},{"line_number":263,"context_line":"             \"key_name\","},{"line_number":264,"context_line":"             \"user_id\","},{"line_number":265,"context_line":"             \"tenant_id\""},{"line_number":266,"context_line":"          ]"},{"line_number":267,"context_line":"       },"},{"line_number":268,"context_line":"       \"message_id\":\"a03c4ab4-9e05-4421-8150-ec30c2464302\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_3fb559ed","line":265,"updated":"2015-10-07 18:01:37.000000000","message":"So I think the previous reviews asked you to remove this part. I think in many cases we will want that. However, I can see some situations where we actually might *want* to communicate which fields changed, such as \"instance.updated\".","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5a5017935a5d4373e0d6c081f7fb5c93e89e9603","unresolved":false,"context_lines":[{"line_number":262,"context_line":"          \"nova_object.changes\":["},{"line_number":263,"context_line":"             \"key_name\","},{"line_number":264,"context_line":"             \"user_id\","},{"line_number":265,"context_line":"             \"tenant_id\""},{"line_number":266,"context_line":"          ]"},{"line_number":267,"context_line":"       },"},{"line_number":268,"context_line":"       \"message_id\":\"a03c4ab4-9e05-4421-8150-ec30c2464302\""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a2fa921_34755763","line":265,"in_reply_to":"7a2fa921_3fb559ed","updated":"2015-10-08 14:56:12.000000000","message":"Done","commit_id":"ddbcfa3e35e27d6ac79f6366e7050fe7fc4ecbb5"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":96,"context_line":"is empty."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Un-managed notifications does not have any rules. Initially every nova"},{"line_number":99,"context_line":"notification is in this set."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"During the implementation of this blueprint developers will create managed"},{"line_number":102,"context_line":"notifications based on un-managed notifications. Managed and un-managed"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_52be3ad5","line":99,"updated":"2015-10-14 15:16:44.000000000","message":"I\u0027m not sure we should mention managed vs. unmanaged notifications. If we want to have objectified notifications, then the situation is pretty simple:\n- either we send old-style notifications because the code hasn\u0027t changed yet,\n- or we send new-style notifications because we changed the code\n\nNo need to mention the above given you already mention that there will be a temporary situation where we will emit both kinds of notifications","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"is empty."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Un-managed notifications does not have any rules. Initially every nova"},{"line_number":99,"context_line":"notification is in this set."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"During the implementation of this blueprint developers will create managed"},{"line_number":102,"context_line":"notifications based on un-managed notifications. Managed and un-managed"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_0d1720ee","line":99,"in_reply_to":"5a2ca52d_52be3ad5","updated":"2015-10-15 13:05:30.000000000","message":"The managed and unmanaged are added here to set up a terminology. Ofcourse we can use old-style vs. new-style, versioned vs. unversioned terminology in the spec. I tried make this part of the spec more concrete.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":103,"context_line":"notifications for the same event can be generated by the same managed"},{"line_number":104,"context_line":"notification object and therefore they can live in tree together for some time"},{"line_number":105,"context_line":"to give a transition period for the notification consumers."},{"line_number":106,"context_line":"Later un-managed notification generation can be deprecated and removed."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"However some of the today\u0027s notifications cannot be really converted to managed"},{"line_number":109,"context_line":"notifications for example the usage of the notify_decorator which dumps the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_d2c6ca48","line":106,"updated":"2015-10-14 15:16:44.000000000","message":"IMHO we just need to make sure that we can still emit old notifications during Mitaka (either by dehydrating the object into an old-fashioned dict, or by keeping a compat layer) and then emit new-style notifications in Nxxx.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"notifications for the same event can be generated by the same managed"},{"line_number":104,"context_line":"notification object and therefore they can live in tree together for some time"},{"line_number":105,"context_line":"to give a transition period for the notification consumers."},{"line_number":106,"context_line":"Later un-managed notification generation can be deprecated and removed."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"However some of the today\u0027s notifications cannot be really converted to managed"},{"line_number":109,"context_line":"notifications for example the usage of the notify_decorator which dumps the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_ad386ca1","line":106,"in_reply_to":"5a2ca52d_d2c6ca48","updated":"2015-10-15 13:05:30.000000000","message":"I think moving to versioned notification will need more time than a single cycle. This is why I propose a more gradual and more cycle independent approach here.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Later un-managed notification generation can be deprecated and removed."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"However some of the today\u0027s notifications cannot be really converted to managed"},{"line_number":109,"context_line":"notifications for example the usage of the notify_decorator which dumps the"},{"line_number":110,"context_line":"args and kwargs of a function into the notification payload. For these"},{"line_number":111,"context_line":"notifications a generic, dict based payload can be defined that formulate as"},{"line_number":112,"context_line":"much as possible and leaves the rest of the payload un-managed."},{"line_number":113,"context_line":"Adding new semi-managed notifications shall be avoided in the future."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_12d522b8","line":110,"range":{"start_line":109,"start_character":13,"end_line":110,"end_character":59},"updated":"2015-10-14 15:16:44.000000000","message":"IMHO then most of the work should be on seeing how we could convert those freeform notifications into something more constrainted, but I\u0027m not a big fan of leaving a room for sending old-styled notifications if we decide to move.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":106,"context_line":"Later un-managed notification generation can be deprecated and removed."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"However some of the today\u0027s notifications cannot be really converted to managed"},{"line_number":109,"context_line":"notifications for example the usage of the notify_decorator which dumps the"},{"line_number":110,"context_line":"args and kwargs of a function into the notification payload. For these"},{"line_number":111,"context_line":"notifications a generic, dict based payload can be defined that formulate as"},{"line_number":112,"context_line":"much as possible and leaves the rest of the payload un-managed."},{"line_number":113,"context_line":"Adding new semi-managed notifications shall be avoided in the future."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_4d6518df","line":110,"range":{"start_line":109,"start_character":13,"end_line":110,"end_character":59},"in_reply_to":"5a2ca52d_12d522b8","updated":"2015-10-15 13:05:30.000000000","message":"I don\u0027t see any way to fully formalize the notify_decorator as it has to work for any function. See the args field of the ExceptionPayload below for similar problem. You can say that we have some args but as the args are dynamic we cannot really predefine the structure of the notification.\n\nSo either we allow sending notifications which is not well defined (semi managed) or we lose functionality.\n\nDo you see another options?","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* A versioned notification object will be created for every managed"},{"line_number":120,"context_line":"  notification in nova"},{"line_number":121,"context_line":"* The publisher of the will be defined by the name of the service and the"},{"line_number":122,"context_line":"  name of the host. For example: scheduler:my-awesome-controller1,"},{"line_number":123,"context_line":"  compute:compute-host1"},{"line_number":124,"context_line":"* The type of the event message on the wire will be defined by the name of the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_b28a2ebe","line":121,"range":{"start_line":121,"start_character":16,"end_line":121,"end_character":27},"updated":"2015-10-14 15:16:44.000000000","message":"some word is missing, right ? :-)","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"* A versioned notification object will be created for every managed"},{"line_number":120,"context_line":"  notification in nova"},{"line_number":121,"context_line":"* The publisher of the will be defined by the name of the service and the"},{"line_number":122,"context_line":"  name of the host. For example: scheduler:my-awesome-controller1,"},{"line_number":123,"context_line":"  compute:compute-host1"},{"line_number":124,"context_line":"* The type of the event message on the wire will be defined by the name of the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_befdeb3b","line":121,"range":{"start_line":121,"start_character":16,"end_line":121,"end_character":27},"in_reply_to":"5a2ca52d_b28a2ebe","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  notification in nova"},{"line_number":121,"context_line":"* The publisher of the will be defined by the name of the service and the"},{"line_number":122,"context_line":"  name of the host. For example: scheduler:my-awesome-controller1,"},{"line_number":123,"context_line":"  compute:compute-host1"},{"line_number":124,"context_line":"* The type of the event message on the wire will be defined by the name of the"},{"line_number":125,"context_line":"  affected object, the name of the performed action emitting the notification"},{"line_number":126,"context_line":"  and the phase of the action. For example:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_f26d0605","line":123,"updated":"2015-10-14 15:16:44.000000000","message":"well, if you send a full NovaObject on the wire, then it will be automatically serialized into a dict with each field as a key. Not sure why you want to do an intermediate step here.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":120,"context_line":"  notification in nova"},{"line_number":121,"context_line":"* The publisher of the will be defined by the name of the service and the"},{"line_number":122,"context_line":"  name of the host. For example: scheduler:my-awesome-controller1,"},{"line_number":123,"context_line":"  compute:compute-host1"},{"line_number":124,"context_line":"* The type of the event message on the wire will be defined by the name of the"},{"line_number":125,"context_line":"  affected object, the name of the performed action emitting the notification"},{"line_number":126,"context_line":"  and the phase of the action. For example:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_adb70cd7","line":123,"in_reply_to":"5a2ca52d_f26d0605","updated":"2015-10-15 13:05:30.000000000","message":"I don\u0027t really get your comment. The current oslo notification envelope has a publisher_id field. Current nova versioned objects does not have publisher_id fields so this has to be added. This bullet point talks about the content and format of this field.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":125,"context_line":"  affected object, the name of the performed action emitting the notification"},{"line_number":126,"context_line":"  and the phase of the action. For example:"},{"line_number":127,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":128,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":129,"context_line":"* The priority of the  notification message on the wire can be selected from"},{"line_number":130,"context_line":"  the predefined priorities in oslo.messaging (audit, debug, info, warn, error,"},{"line_number":131,"context_line":"  critical, sample) except \u0027warning\u0027 (use warn instead)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_e9abd8d4","line":128,"updated":"2015-10-14 15:16:44.000000000","message":"do you feel it would be an object field with a specific type ?","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":125,"context_line":"  affected object, the name of the performed action emitting the notification"},{"line_number":126,"context_line":"  and the phase of the action. For example:"},{"line_number":127,"context_line":"  instance.create.end, aggregate.removehost.start,"},{"line_number":128,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":129,"context_line":"* The priority of the  notification message on the wire can be selected from"},{"line_number":130,"context_line":"  the predefined priorities in oslo.messaging (audit, debug, info, warn, error,"},{"line_number":131,"context_line":"  critical, sample) except \u0027warning\u0027 (use warn instead)."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_cd1608a7","line":128,"in_reply_to":"5a2ca52d_e9abd8d4","updated":"2015-10-15 13:05:30.000000000","message":"This will be of the event_type of the oslo notification payload and yes it is part of the model see event_type field of the NotificationBase","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":128,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":129,"context_line":"* The priority of the  notification message on the wire can be selected from"},{"line_number":130,"context_line":"  the predefined priorities in oslo.messaging (audit, debug, info, warn, error,"},{"line_number":131,"context_line":"  critical, sample) except \u0027warning\u0027 (use warn instead)."},{"line_number":132,"context_line":"* Nova always emits the latest version of the payload no back pinning of"},{"line_number":133,"context_line":"  notification objects are supported."},{"line_number":134,"context_line":"* Only backward compatibility changes are allowed in the notification payload."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_2980f045","line":131,"updated":"2015-10-14 15:16:44.000000000","message":"I suppose that as an EnumField type?","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":128,"context_line":"  filterscheduler.select_destinations.end"},{"line_number":129,"context_line":"* The priority of the  notification message on the wire can be selected from"},{"line_number":130,"context_line":"  the predefined priorities in oslo.messaging (audit, debug, info, warn, error,"},{"line_number":131,"context_line":"  critical, sample) except \u0027warning\u0027 (use warn instead)."},{"line_number":132,"context_line":"* Nova always emits the latest version of the payload no back pinning of"},{"line_number":133,"context_line":"  notification objects are supported."},{"line_number":134,"context_line":"* Only backward compatibility changes are allowed in the notification payload."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_6d8494d3","line":131,"in_reply_to":"5a2ca52d_2980f045","updated":"2015-10-15 13:05:30.000000000","message":"Yes. You can see it NotificationPriorityType enum used in the priority field of the NotificationBase","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Backward compatibility for pre Mitaka notification consumers:"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"* Do not remove un-managed notifications in Mitaka but deprecate those which"},{"line_number":140,"context_line":"  has a managed alternative in Mitaka. The new versioned notification object"},{"line_number":141,"context_line":"  shall be able to generate both the managed and un-managed wire formats."},{"line_number":142,"context_line":"* Send both managed and un-managed notifications in Mitaka."},{"line_number":143,"context_line":"* in N release remove the deprecated un-managed notifications."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_925e4d44","line":140,"updated":"2015-10-13 14:19:44.000000000","message":"nit: s/has/have/","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":137,"context_line":"Backward compatibility for pre Mitaka notification consumers:"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"* Do not remove un-managed notifications in Mitaka but deprecate those which"},{"line_number":140,"context_line":"  has a managed alternative in Mitaka. The new versioned notification object"},{"line_number":141,"context_line":"  shall be able to generate both the managed and un-managed wire formats."},{"line_number":142,"context_line":"* Send both managed and un-managed notifications in Mitaka."},{"line_number":143,"context_line":"* in N release remove the deprecated un-managed notifications."}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_fe7843c6","line":140,"in_reply_to":"5a2ca52d_925e4d44","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"* Do not remove un-managed notifications in Mitaka but deprecate those which"},{"line_number":140,"context_line":"  has a managed alternative in Mitaka. The new versioned notification object"},{"line_number":141,"context_line":"  shall be able to generate both the managed and un-managed wire formats."},{"line_number":142,"context_line":"* Send both managed and un-managed notifications in Mitaka."},{"line_number":143,"context_line":"* in N release remove the deprecated un-managed notifications."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_4938cca0","line":141,"updated":"2015-10-14 15:16:44.000000000","message":"okay, so the above paragraphs that I commented need to be a bit modified","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"* Do not remove un-managed notifications in Mitaka but deprecate those which"},{"line_number":140,"context_line":"  has a managed alternative in Mitaka. The new versioned notification object"},{"line_number":141,"context_line":"  shall be able to generate both the managed and un-managed wire formats."},{"line_number":142,"context_line":"* Send both managed and un-managed notifications in Mitaka."},{"line_number":143,"context_line":"* in N release remove the deprecated un-managed notifications."},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_de7d47b2","line":141,"in_reply_to":"5a2ca52d_4938cca0","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":139,"context_line":"* Do not remove un-managed notifications in Mitaka but deprecate those which"},{"line_number":140,"context_line":"  has a managed alternative in Mitaka. The new versioned notification object"},{"line_number":141,"context_line":"  shall be able to generate both the managed and un-managed wire formats."},{"line_number":142,"context_line":"* Send both managed and un-managed notifications in Mitaka."},{"line_number":143,"context_line":"* in N release remove the deprecated un-managed notifications."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_8956e4d0","line":142,"updated":"2015-10-14 15:16:44.000000000","message":"Both \u003d 2 notifications for the same event, right?","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":139,"context_line":"* Do not remove un-managed notifications in Mitaka but deprecate those which"},{"line_number":140,"context_line":"  has a managed alternative in Mitaka. The new versioned notification object"},{"line_number":141,"context_line":"  shall be able to generate both the managed and un-managed wire formats."},{"line_number":142,"context_line":"* Send both managed and un-managed notifications in Mitaka."},{"line_number":143,"context_line":"* in N release remove the deprecated un-managed notifications."},{"line_number":144,"context_line":""},{"line_number":145,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_8d5ed074","line":142,"in_reply_to":"5a2ca52d_8956e4d0","updated":"2015-10-15 13:05:30.000000000","message":"Yes. See Performance impact section as well.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":147,"context_line":"------------"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Do we want to have a single global version for the Notification API or we want"},{"line_number":150,"context_line":"to have version per notification type?"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Data model impact"},{"line_number":153,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_b22269b8","line":150,"updated":"2015-10-13 14:19:44.000000000","message":"nit: this should be less of a question, more just an alternative.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":147,"context_line":"------------"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Do we want to have a single global version for the Notification API or we want"},{"line_number":150,"context_line":"to have version per notification type?"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"Data model impact"},{"line_number":153,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_9e4eef94","line":150,"in_reply_to":"5a2ca52d_b22269b8","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        fields \u003d {"},{"line_number":185,"context_line":"            \u0027object\u0027: fields.StringField(),"},{"line_number":186,"context_line":"            \u0027action\u0027: fields.StringField(),"},{"line_number":187,"context_line":"            \u0027phase\u0027: fields.StringField(),"},{"line_number":188,"context_line":"        }"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_685ffe0e","line":187,"updated":"2015-10-13 14:19:44.000000000","message":"feels like we should define state/stop/error here?\n\nBut honestly, this feels more like code review detail now.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        fields \u003d {"},{"line_number":185,"context_line":"            \u0027object\u0027: fields.StringField(),"},{"line_number":186,"context_line":"            \u0027action\u0027: fields.StringField(),"},{"line_number":187,"context_line":"            \u0027phase\u0027: fields.StringField(),"},{"line_number":188,"context_line":"        }"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_2d8bfcc4","line":187,"in_reply_to":"5a2ca52d_685ffe0e","updated":"2015-10-15 13:05:30.000000000","message":"We can add an Enum for phase of course. \nYes, we are basically creating model code in the spec. I will try to avoid adding more code to the spec.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        fields \u003d {"},{"line_number":197,"context_line":"            \u0027service\u0027: fields.StringField(),"},{"line_number":198,"context_line":"            \u0027host\u0027: fields.StringField(),"},{"line_number":199,"context_line":"        }"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_e978b82d","line":197,"updated":"2015-10-14 15:16:44.000000000","message":"Well, I\u0027m a bit torn about a String field, given we already have a Service object...","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        fields \u003d {"},{"line_number":197,"context_line":"            \u0027service\u0027: fields.StringField(),"},{"line_number":198,"context_line":"            \u0027host\u0027: fields.StringField(),"},{"line_number":199,"context_line":"        }"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_2015433f","line":197,"in_reply_to":"5a2ca52d_e978b82d","updated":"2015-10-15 13:05:30.000000000","message":"I added a Service object here to the model, however I think we shall not serialize the whole Service and the whole ComputeNode object to the wire in case of a KeyPair create notification. So I noted that we will still serialize someting like binary:host into the publisher_id field of the notification envelope","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        fields \u003d {"},{"line_number":197,"context_line":"            \u0027service\u0027: fields.StringField(),"},{"line_number":198,"context_line":"            \u0027host\u0027: fields.StringField(),"},{"line_number":199,"context_line":"        }"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_8977c439","line":198,"updated":"2015-10-14 15:16:44.000000000","message":"same here","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        fields \u003d {"},{"line_number":197,"context_line":"            \u0027service\u0027: fields.StringField(),"},{"line_number":198,"context_line":"            \u0027host\u0027: fields.StringField(),"},{"line_number":199,"context_line":"        }"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_c051ef0f","line":198,"in_reply_to":"5a2ca52d_8977c439","updated":"2015-10-15 13:05:30.000000000","message":"see my answer for your similar comment","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            \u0027priority\u0027: fields.NotificationPriorityTypeField(),"},{"line_number":207,"context_line":"            \u0027event_type\u0027: fields.ObjectField(\u0027EventType\u0027),"},{"line_number":208,"context_line":"            \u0027publisher_id\u0027: fields.ObjectField(\u0027NotificationPublisher\u0027),"},{"line_number":209,"context_line":"        }"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        def emit(self, context):"},{"line_number":212,"context_line":"            \"\"\"Send the notification. \"\"\""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_a99ba071","line":209,"updated":"2015-10-14 15:16:44.000000000","message":"well, some comments could be done on the model (like I\u0027m not sure we would need all the nested objects) but that seems an implementation detail not needed for the spec","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            \u0027priority\u0027: fields.NotificationPriorityTypeField(),"},{"line_number":207,"context_line":"            \u0027event_type\u0027: fields.ObjectField(\u0027EventType\u0027),"},{"line_number":208,"context_line":"            \u0027publisher_id\u0027: fields.ObjectField(\u0027NotificationPublisher\u0027),"},{"line_number":209,"context_line":"        }"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        def emit(self, context):"},{"line_number":212,"context_line":"            \"\"\"Send the notification. \"\"\""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_a0839355","line":209,"in_reply_to":"5a2ca52d_a99ba071","updated":"2015-10-15 13:05:30.000000000","message":"Let\u0027s discuss it in the actual code review later. ;)","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        }"},{"line_number":228,"context_line":"        # NOTE(gibi): KeyPair was at 1.3 before we added this"},{"line_number":229,"context_line":"        obj_relationships \u003d {"},{"line_number":230,"context_line":"            \u0027payload\u0027: [(\u00271.0\u0027, \u00271.3\u0027)],"},{"line_number":231,"context_line":"        }"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_e9c67848","line":230,"updated":"2015-10-14 15:16:44.000000000","message":"nit: you no longer need to mention the relationships for a new object","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        }"},{"line_number":228,"context_line":"        # NOTE(gibi): KeyPair was at 1.3 before we added this"},{"line_number":229,"context_line":"        obj_relationships \u003d {"},{"line_number":230,"context_line":"            \u0027payload\u0027: [(\u00271.0\u0027, \u00271.3\u0027)],"},{"line_number":231,"context_line":"        }"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_c9358fda","line":230,"in_reply_to":"5a2ca52d_e9c67848","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":257,"context_line":"  we can reuse the existing versioned object as a payload and we can add"},{"line_number":258,"context_line":"  notification specific functions via a mixin if needed. However we have to"},{"line_number":259,"context_line":"  remove some db specific fields from the original object e.g. row id,"},{"line_number":260,"context_line":"  deleted etc."},{"line_number":261,"context_line":"* The notification reuses an existing versioned object partially. Some fields"},{"line_number":262,"context_line":"  are removed others are added. This case a new versioned object is needed to"},{"line_number":263,"context_line":"  clearly capture the structure of the notification. Also the version of the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_e880ee48","line":260,"updated":"2015-10-13 14:19:44.000000000","message":"I think we should just use the object, and just leave all the info in, or use a different object.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":257,"context_line":"  we can reuse the existing versioned object as a payload and we can add"},{"line_number":258,"context_line":"  notification specific functions via a mixin if needed. However we have to"},{"line_number":259,"context_line":"  remove some db specific fields from the original object e.g. row id,"},{"line_number":260,"context_line":"  deleted etc."},{"line_number":261,"context_line":"* The notification reuses an existing versioned object partially. Some fields"},{"line_number":262,"context_line":"  are removed others are added. This case a new versioned object is needed to"},{"line_number":263,"context_line":"  clearly capture the structure of the notification. Also the version of the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_492c4c02","line":260,"in_reply_to":"5a2ca52d_e880ee48","updated":"2015-10-14 15:16:44.000000000","message":"++","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":257,"context_line":"  we can reuse the existing versioned object as a payload and we can add"},{"line_number":258,"context_line":"  notification specific functions via a mixin if needed. However we have to"},{"line_number":259,"context_line":"  remove some db specific fields from the original object e.g. row id,"},{"line_number":260,"context_line":"  deleted etc."},{"line_number":261,"context_line":"* The notification reuses an existing versioned object partially. Some fields"},{"line_number":262,"context_line":"  are removed others are added. This case a new versioned object is needed to"},{"line_number":263,"context_line":"  clearly capture the structure of the notification. Also the version of the"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_154de23d","line":260,"in_reply_to":"5a2ca52d_e880ee48","updated":"2015-10-15 13:05:30.000000000","message":"OK. Keep it simple. :)","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":262,"context_line":"  are removed others are added. This case a new versioned object is needed to"},{"line_number":263,"context_line":"  clearly capture the structure of the notification. Also the version of the"},{"line_number":264,"context_line":"  notification payload will be different from the version of the original"},{"line_number":265,"context_line":"  object."},{"line_number":266,"context_line":"* The notification sends information that is not related to a versioned object."},{"line_number":267,"context_line":"  This case we have to create a new versioned object anyhow for the payload."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_a8c19682","line":265,"updated":"2015-10-13 14:19:44.000000000","message":"This seems redundant here, the alternative seems to be \"do something else\".","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":262,"context_line":"  are removed others are added. This case a new versioned object is needed to"},{"line_number":263,"context_line":"  clearly capture the structure of the notification. Also the version of the"},{"line_number":264,"context_line":"  notification payload will be different from the version of the original"},{"line_number":265,"context_line":"  object."},{"line_number":266,"context_line":"* The notification sends information that is not related to a versioned object."},{"line_number":267,"context_line":"  This case we have to create a new versioned object anyhow for the payload."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_695b1b2f","line":265,"in_reply_to":"5a2ca52d_a8c19682","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  the versioning of the payload on the wire"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* create a new top level structure in oslo that already a versioned object and"},{"line_number":276,"context_line":"  use the serialized form of that object on the wire."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Use the current oslo top level structure"},{"line_number":279,"context_line":"----------------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_68005eab","line":276,"updated":"2015-10-13 14:19:44.000000000","message":"Can we move this into the \"alternatives\" section please? We should pick one and go for it.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  the versioning of the payload on the wire"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* create a new top level structure in oslo that already a versioned object and"},{"line_number":276,"context_line":"  use the serialized form of that object on the wire."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Use the current oslo top level structure"},{"line_number":279,"context_line":"----------------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_496f3fc5","line":276,"in_reply_to":"5a2ca52d_68005eab","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":273,"context_line":"  the versioning of the payload on the wire"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* create a new top level structure in oslo that already a versioned object and"},{"line_number":276,"context_line":"  use the serialized form of that object on the wire."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Use the current oslo top level structure"},{"line_number":279,"context_line":"----------------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_2939d041","line":276,"in_reply_to":"5a2ca52d_68005eab","updated":"2015-10-14 15:16:44.000000000","message":"agreed","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Use the current oslo top level structure"},{"line_number":279,"context_line":"----------------------------------------"},{"line_number":280,"context_line":"If we use the current oslo interface and therefore use the current top level"},{"line_number":281,"context_line":"structure of the message then the message on the wire would look"},{"line_number":282,"context_line":"like the following::"},{"line_number":283,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_090df48f","line":280,"range":{"start_line":280,"start_character":22,"end_line":280,"end_character":37},"updated":"2015-10-14 15:16:44.000000000","message":"the *olso.versionedobject* interface, in particular the ObjectSerializer to be precise","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Use the current oslo top level structure"},{"line_number":279,"context_line":"----------------------------------------"},{"line_number":280,"context_line":"If we use the current oslo interface and therefore use the current top level"},{"line_number":281,"context_line":"structure of the message then the message on the wire would look"},{"line_number":282,"context_line":"like the following::"},{"line_number":283,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_60f49bf1","line":280,"range":{"start_line":280,"start_character":22,"end_line":280,"end_character":37},"in_reply_to":"5a2ca52d_090df48f","updated":"2015-10-15 13:05:30.000000000","message":"No I\u0027m not referring to the oslo versionedobject interface. I refer to the oslo.messaging notification interface especially the envelope that is defined there.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"Pros:"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"* No oslo change is required."},{"line_number":307,"context_line":"* Consumers only need to change the payload parsing code."},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"Cons:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_e9699826","line":306,"range":{"start_line":306,"start_character":5,"end_line":306,"end_character":16},"updated":"2015-10-14 15:16:44.000000000","message":"again, o.vo change, please be explicit since there are many oslo libs (and that could be confusing with oslo.messaging)","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"Pros:"},{"line_number":305,"context_line":""},{"line_number":306,"context_line":"* No oslo change is required."},{"line_number":307,"context_line":"* Consumers only need to change the payload parsing code."},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"Cons:"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_69a9dbde","line":306,"range":{"start_line":306,"start_character":5,"end_line":306,"end_character":16},"in_reply_to":"5a2ca52d_e9699826","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"57ed674976f95f933e86916a172896ba915b8d7a","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"* The top level message on the wire is not versioned just the payload field of"},{"line_number":312,"context_line":"  it. However the top level structure is generic and well defined by"},{"line_number":313,"context_line":"  oslo.messaging."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"Use the serialized versioned object directly"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_968858e9","line":313,"updated":"2015-10-14 08:15:43.000000000","message":"I think this is a pro, not a con. Everything outside/above payload is owned by oslo and is the responsibility of the library code that is driving the notification infrastructure. That\u0027s a good clean boundary that if left strong can evolve independently of the content of payload. payload only then becomes the domain of this spec, and that\u0027s a good thing.\n\nOn the consumer side the boundary remains clear which is a win for generic consumption.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"91f862844a4eb620aa34ceb8dbb754969e017a33","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"* The top level message on the wire is not versioned just the payload field of"},{"line_number":312,"context_line":"  it. However the top level structure is generic and well defined by"},{"line_number":313,"context_line":"  oslo.messaging."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"Use the serialized versioned object directly"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_9c49578e","line":313,"in_reply_to":"5a2ca52d_968858e9","updated":"2015-10-14 09:14:17.000000000","message":"the lack of a version is still a con for me.\n\nthere is a pro that oslo deals with that, and we get consistency between services for free, but thats separate I guess.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":313,"context_line":"  oslo.messaging."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"Use the serialized versioned object directly"},{"line_number":317,"context_line":"--------------------------------------------"},{"line_number":318,"context_line":"If we change oslo to provide an interface where an object inheriting from"},{"line_number":319,"context_line":"NotificationBase object can be passed in and oslo uses the serialized from of"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_68ee1eee","line":316,"updated":"2015-10-13 14:19:44.000000000","message":"I think we move this one into the alternatives section.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":313,"context_line":"  oslo.messaging."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"Use the serialized versioned object directly"},{"line_number":317,"context_line":"--------------------------------------------"},{"line_number":318,"context_line":"If we change oslo to provide an interface where an object inheriting from"},{"line_number":319,"context_line":"NotificationBase object can be passed in and oslo uses the serialized from of"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_6999081f","line":316,"in_reply_to":"5a2ca52d_68ee1eee","updated":"2015-10-14 15:16:44.000000000","message":"He has to pick a choice, but I\u0027be in favor of this one TBH.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":313,"context_line":"  oslo.messaging."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"Use the serialized versioned object directly"},{"line_number":317,"context_line":"--------------------------------------------"},{"line_number":318,"context_line":"If we change oslo to provide an interface where an object inheriting from"},{"line_number":319,"context_line":"NotificationBase object can be passed in and oslo uses the serialized from of"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_c9e82f13","line":316,"in_reply_to":"5a2ca52d_6999081f","updated":"2015-10-15 13:05:30.000000000","message":"I moved it to the alternatives.\n@Sylvain: The wire format is something that is more important for the notification consumers than to the nova developers as nova developer just need to create the model. Chris expressed that for him the versioned envelope would create a to big impact for a small extra benefit.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"57ed674976f95f933e86916a172896ba915b8d7a","unresolved":false,"context_lines":[{"line_number":369,"context_line":"* Needs extensive changes in oslo in the notification interface code as well as"},{"line_number":370,"context_line":"  in the notification drivers as today notification drivers depend on the"},{"line_number":371,"context_line":"  current top level structure."},{"line_number":372,"context_line":"* Consumers need to adapt to the top level structure change as well."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"Semi managed notification example"},{"line_number":375,"context_line":"---------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_f64e6cc0","line":372,"updated":"2015-10-14 08:15:43.000000000","message":"This is such a huge con (for consumers) that I would think the spec could be improved by either removing this example of just including a very simple description of it as an idea that was quickly dismissed because its cost to consumers if far too high.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":369,"context_line":"* Needs extensive changes in oslo in the notification interface code as well as"},{"line_number":370,"context_line":"  in the notification drivers as today notification drivers depend on the"},{"line_number":371,"context_line":"  current top level structure."},{"line_number":372,"context_line":"* Consumers need to adapt to the top level structure change as well."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"Semi managed notification example"},{"line_number":375,"context_line":"---------------------------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_695c7bed","line":372,"in_reply_to":"5a2ca52d_f64e6cc0","updated":"2015-10-15 13:05:30.000000000","message":"Thanks for the comment. I agree with you but I\u0027d like to keep it the alternative here as other like Sylvain prefers this alternative and we need the information provided here to discuss and agree.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  current top level structure."},{"line_number":372,"context_line":"* Consumers need to adapt to the top level structure change as well."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"Semi managed notification example"},{"line_number":375,"context_line":"---------------------------------"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"The nova.exceptions.wrap_exception decorator is used to send notification in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_a98f20cb","line":374,"updated":"2015-10-14 15:16:44.000000000","message":"like I said, I don\u0027t feel it\u0027s a good stuff to have this hybrid object","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  current top level structure."},{"line_number":372,"context_line":"* Consumers need to adapt to the top level structure change as well."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"Semi managed notification example"},{"line_number":375,"context_line":"---------------------------------"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"The nova.exceptions.wrap_exception decorator is used to send notification in"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_e9ff2ba8","line":374,"in_reply_to":"5a2ca52d_a98f20cb","updated":"2015-10-15 13:05:30.000000000","message":"See my above comment regarding that I don\u0027t see how we can avoid the hybrid object. But I\u0027m open to solution proposals.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        # Version 1.0: Initial version"},{"line_number":400,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":401,"context_line":"        fields \u003d {"},{"line_number":402,"context_line":"            \u0027exception\u0027: fields.JsonBlobField(),"},{"line_number":403,"context_line":"            \u0027args\u0027: fields.JsonBlobField(),"},{"line_number":404,"context_line":"        }"},{"line_number":405,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_482002f8","line":402,"updated":"2015-10-13 14:19:44.000000000","message":"Feels like we need a standard \"exception\" field for all the new notifications.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        # Version 1.0: Initial version"},{"line_number":400,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":401,"context_line":"        fields \u003d {"},{"line_number":402,"context_line":"            \u0027exception\u0027: fields.JsonBlobField(),"},{"line_number":403,"context_line":"            \u0027args\u0027: fields.JsonBlobField(),"},{"line_number":404,"context_line":"        }"},{"line_number":405,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_03d0481e","line":402,"in_reply_to":"5a2ca52d_482002f8","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":400,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":401,"context_line":"        fields \u003d {"},{"line_number":402,"context_line":"            \u0027exception\u0027: fields.JsonBlobField(),"},{"line_number":403,"context_line":"            \u0027args\u0027: fields.JsonBlobField(),"},{"line_number":404,"context_line":"        }"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_c882d2c8","line":403,"updated":"2015-10-13 14:19:44.000000000","message":"its tempting to have a ArgDict field... that uses object serialisation when available, otherwise, a primitive-\u003ejson conversion, but if that fails, just stringified, or something like that.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":400,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":401,"context_line":"        fields \u003d {"},{"line_number":402,"context_line":"            \u0027exception\u0027: fields.JsonBlobField(),"},{"line_number":403,"context_line":"            \u0027args\u0027: fields.JsonBlobField(),"},{"line_number":404,"context_line":"        }"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_63b81ce6","line":403,"in_reply_to":"5a2ca52d_c882d2c8","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        # Version 1.0: Initial version"},{"line_number":447,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":448,"context_line":"        fields \u003d {"},{"line_number":449,"context_line":"            \u0027url\u0027: fields.StringField(),"},{"line_number":450,"context_line":"            \u0027exception\u0027: fields.StringField(),"},{"line_number":451,"context_line":"            \u0027status\u0027: fields.IntegerField(),"},{"line_number":452,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_08120ab5","line":449,"updated":"2015-10-13 14:19:44.000000000","message":"URLField?","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":446,"context_line":"        # Version 1.0: Initial version"},{"line_number":447,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":448,"context_line":"        fields \u003d {"},{"line_number":449,"context_line":"            \u0027url\u0027: fields.StringField(),"},{"line_number":450,"context_line":"            \u0027exception\u0027: fields.StringField(),"},{"line_number":451,"context_line":"            \u0027status\u0027: fields.IntegerField(),"},{"line_number":452,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_03a5a8a0","line":449,"in_reply_to":"5a2ca52d_08120ab5","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":448,"context_line":"        fields \u003d {"},{"line_number":449,"context_line":"            \u0027url\u0027: fields.StringField(),"},{"line_number":450,"context_line":"            \u0027exception\u0027: fields.StringField(),"},{"line_number":451,"context_line":"            \u0027status\u0027: fields.IntegerField(),"},{"line_number":452,"context_line":"        }"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_88261a15","line":450,"updated":"2015-10-13 14:19:44.000000000","message":"Feels like we need a standard \"exception\" field for all the new notifications.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":448,"context_line":"        fields \u003d {"},{"line_number":449,"context_line":"            \u0027url\u0027: fields.StringField(),"},{"line_number":450,"context_line":"            \u0027exception\u0027: fields.StringField(),"},{"line_number":451,"context_line":"            \u0027status\u0027: fields.IntegerField(),"},{"line_number":452,"context_line":"        }"},{"line_number":453,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_c3aed084","line":450,"in_reply_to":"5a2ca52d_88261a15","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":566,"context_line":"    class InstanceUpdatePayload(base.NovaObject):"},{"line_number":567,"context_line":"        # Version 1.0: Initial version"},{"line_number":568,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":569,"context_line":"        fields \u003d {"},{"line_number":570,"context_line":"            \u0027instance_id\u0027: fields.UUIDField(),"},{"line_number":571,"context_line":"            \u0027user_id\u0027: fields.StringField(),"},{"line_number":572,"context_line":"            \u0027tenant_id\u0027: fields.StringField(),"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_883ffa24","line":569,"updated":"2015-10-13 14:19:44.000000000","message":"I was expecting to see an instance object field here.\n\nIn this case we might want to leave the \"changes\" section so that gets serialised as normal.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"def49ab2102ba19d5f7405eacd1fb2117af27d4c","unresolved":false,"context_lines":[{"line_number":566,"context_line":"    class InstanceUpdatePayload(base.NovaObject):"},{"line_number":567,"context_line":"        # Version 1.0: Initial version"},{"line_number":568,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":569,"context_line":"        fields \u003d {"},{"line_number":570,"context_line":"            \u0027instance_id\u0027: fields.UUIDField(),"},{"line_number":571,"context_line":"            \u0027user_id\u0027: fields.StringField(),"},{"line_number":572,"context_line":"            \u0027tenant_id\u0027: fields.StringField(),"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a29b11f_496d1c97","line":569,"in_reply_to":"3a29b11f_9855eec7","updated":"2015-10-20 10:10:35.000000000","message":"OK. Let\u0027s try that. See patch set 8 with the new model.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":566,"context_line":"    class InstanceUpdatePayload(base.NovaObject):"},{"line_number":567,"context_line":"        # Version 1.0: Initial version"},{"line_number":568,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":569,"context_line":"        fields \u003d {"},{"line_number":570,"context_line":"            \u0027instance_id\u0027: fields.UUIDField(),"},{"line_number":571,"context_line":"            \u0027user_id\u0027: fields.StringField(),"},{"line_number":572,"context_line":"            \u0027tenant_id\u0027: fields.StringField(),"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_c099ef20","line":569,"in_reply_to":"5a2ca52d_883ffa24","updated":"2015-10-15 13:05:30.000000000","message":"The problem is that some of the information is not in the instance object that is in in the current instance.update notification. \nFor example the fixed_ips and the bandwidth fields are gathered from other object.\nOther fields are translated for example: image_meta is created from system_metadata, image_ref_url is created from image_ref. \nAnd some of the fields are intentionally left out for example instance.info_cache\n\nSo putting an instance object directly here does not give use similar notification as the current instance.update. \n\nCan we drop the extra fields and live with only the instance fields here?\n\nRegarding the changes field I think it is a good idea to make it optional to have the versioned object changes in certain notifications. For example for those which is emitted due to an update. I mean instance.update (or service.status.update) notifications will have changes field but instance.create will not have.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b26505e45638d27873ed0eb5f3b19f87fdcf13c0","unresolved":false,"context_lines":[{"line_number":566,"context_line":"    class InstanceUpdatePayload(base.NovaObject):"},{"line_number":567,"context_line":"        # Version 1.0: Initial version"},{"line_number":568,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":569,"context_line":"        fields \u003d {"},{"line_number":570,"context_line":"            \u0027instance_id\u0027: fields.UUIDField(),"},{"line_number":571,"context_line":"            \u0027user_id\u0027: fields.StringField(),"},{"line_number":572,"context_line":"            \u0027tenant_id\u0027: fields.StringField(),"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3a29b11f_9855eec7","line":569,"in_reply_to":"5a2ca52d_c099ef20","updated":"2015-10-19 13:34:52.000000000","message":"So, we could add the extra objects that contain that info to sit alongside the instance?\n\nSome of those are actually in the instance, just nested in aways that hide them a little.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":635,"context_line":"            \u0027payload\u0027: [(\u00271.0\u0027, \u00271.0\u0027)],"},{"line_number":636,"context_line":"        }"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"Alternatively we can define separate objects for:"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"* flavor related information"},{"line_number":641,"context_line":"* image related information"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_8877fad3","line":638,"updated":"2015-10-13 14:19:44.000000000","message":"This spec should choose really.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":635,"context_line":"            \u0027payload\u0027: [(\u00271.0\u0027, \u00271.0\u0027)],"},{"line_number":636,"context_line":"        }"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"Alternatively we can define separate objects for:"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"* flavor related information"},{"line_number":641,"context_line":"* image related information"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_23ad4431","line":638,"in_reply_to":"5a2ca52d_8877fad3","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"fd73eb657371ff92975aed648143b1c8822c9259","unresolved":false,"context_lines":[{"line_number":640,"context_line":"* flavor related information"},{"line_number":641,"context_line":"* image related information"},{"line_number":642,"context_line":"* networking related information"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"No db schema changes are foreseen."},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_694ee897","line":643,"updated":"2015-10-14 15:16:44.000000000","message":"all of the above is very verbose for a spec. Any way to summarize your thoughts ?","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":640,"context_line":"* flavor related information"},{"line_number":641,"context_line":"* image related information"},{"line_number":642,"context_line":"* networking related information"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"No db schema changes are foreseen."},{"line_number":645,"context_line":""},{"line_number":646,"context_line":"REST API impact"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_4345e06d","line":643,"in_reply_to":"5a2ca52d_694ee897","updated":"2015-10-15 13:05:30.000000000","message":"I tried to give a summary in the Proposed changes section and use this section to hold the concrete examples.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a12b1c297efd258cccf3c8bc5367798e24fce9ab","unresolved":false,"context_lines":[{"line_number":671,"context_line":"Other deployer impact"},{"line_number":672,"context_line":"---------------------"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"None."},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"Developer impact"},{"line_number":677,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_e816ae54","line":674,"updated":"2015-10-13 14:19:44.000000000","message":"So we should state what the default is in Mitaka.\n\nI think the default as to send both the new and the old notifications, using the existing configured driver.\n\nWith a warning to say the old ones will be turned off by default next release.","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4452eb413719197b223cf3f84768e2269076f53a","unresolved":false,"context_lines":[{"line_number":671,"context_line":"Other deployer impact"},{"line_number":672,"context_line":"---------------------"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"None."},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"Developer impact"},{"line_number":677,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":6,"id":"5a2ca52d_de16a7f0","line":674,"in_reply_to":"5a2ca52d_e816ae54","updated":"2015-10-15 13:05:30.000000000","message":"Done","commit_id":"646884163def6e7042c3f7e287244bb2ed14513d"},{"author":{"_account_id":17139,"name":"Chuck Carmack","email":"carmack@us.ibm.com","username":"ccarmack"},"change_message_id":"d9be74c15a01ff88205462105dc909e825e95cbc","unresolved":false,"context_lines":[{"line_number":165,"context_line":"notification will be deprecated. Nova might want to restrict adding new"},{"line_number":166,"context_line":"un-versioned notification after this spec is implemented."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"A new version of a versioned notification has to be backward compatible with"},{"line_number":169,"context_line":"the previous version. Nova will always emit the latest version of a versioned"},{"line_number":170,"context_line":"notification and nova will not support pinning back the notification versions."},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a2ca52d_567f9baa","line":168,"updated":"2015-10-16 16:48:33.000000000","message":"Will there be a way to deprecate fields in the notification payload, or the entire notification?  For example, if some feature is changed or deprecated in nova, and that feature emitted notifications.\n\nRelated question - can a payload field or entire notification be experimental?  I have a spec up for review that proposes to add the Description field to the server create and server update notifications.\nhttps://review.openstack.org/#/c/228908/\n\nIf these are allowed, can there be \"meta\" fields in the payload describing the deprecated/experimental data, or just document them in the release notes?","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"57d227f7527f2ddbbe70760ed77dcdc93d758e43","unresolved":false,"context_lines":[{"line_number":165,"context_line":"notification will be deprecated. Nova might want to restrict adding new"},{"line_number":166,"context_line":"un-versioned notification after this spec is implemented."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"A new version of a versioned notification has to be backward compatible with"},{"line_number":169,"context_line":"the previous version. Nova will always emit the latest version of a versioned"},{"line_number":170,"context_line":"notification and nova will not support pinning back the notification versions."},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_421447f4","line":168,"in_reply_to":"3a29b11f_a290bb96","updated":"2015-10-20 09:22:44.000000000","message":"The object versioning does actually allow us to remove fields by bumping the major version, although I am trying to ignore that here.","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"822ccf6bb2e7ec3a706a7f981c6dc5f67e21d44a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"notification will be deprecated. Nova might want to restrict adding new"},{"line_number":166,"context_line":"un-versioned notification after this spec is implemented."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"A new version of a versioned notification has to be backward compatible with"},{"line_number":169,"context_line":"the previous version. Nova will always emit the latest version of a versioned"},{"line_number":170,"context_line":"notification and nova will not support pinning back the notification versions."},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_a290bb96","line":168,"in_reply_to":"5a2ca52d_567f9baa","updated":"2015-10-19 12:50:42.000000000","message":"I don\u0027t think we want to add that in this first version. Lets first do the simple thing well.\n\nIts possible we can construct some way of extending the notification, etc, but I think we need to just get the current notifications tidied up and tested first.","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"57d227f7527f2ddbbe70760ed77dcdc93d758e43","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        fields \u003d {"},{"line_number":308,"context_line":"            \u0027object\u0027: fields.StringField(),"},{"line_number":309,"context_line":"            \u0027action\u0027: fields.EventTypeActionField(),   # will be an enum"},{"line_number":310,"context_line":"            \u0027phase\u0027: fields.EventTypePhaseField(),     # will be an enum"},{"line_number":311,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_02e5ef07","line":308,"updated":"2015-10-20 09:22:44.000000000","message":"I quite like this being an enum too, but I would prefer to debate that in the code review.","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7d8eeb730c8f7328c4adc93ce12e4ba20632a058","unresolved":false,"context_lines":[{"line_number":305,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        fields \u003d {"},{"line_number":308,"context_line":"            \u0027object\u0027: fields.StringField(),"},{"line_number":309,"context_line":"            \u0027action\u0027: fields.EventTypeActionField(),   # will be an enum"},{"line_number":310,"context_line":"            \u0027phase\u0027: fields.EventTypePhaseField(),     # will be an enum"},{"line_number":311,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_e9e0a8fc","line":308,"in_reply_to":"3a29b11f_02e5ef07","updated":"2015-10-20 10:10:51.000000000","message":"Done","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"57d227f7527f2ddbbe70760ed77dcdc93d758e43","unresolved":false,"context_lines":[{"line_number":588,"context_line":""},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":591,"context_line":"    class InstanceUpdatePayload(base.NovaObject):"},{"line_number":592,"context_line":"        # Version 1.0: Initial version"},{"line_number":593,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":594,"context_line":"        fields \u003d {"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_42ec47c7","line":591,"updated":"2015-10-20 09:22:44.000000000","message":"I still think just using the instance object might be an easier way forward here.\n\nWe can just add the extra bits wanted as extra object we send.","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7d8eeb730c8f7328c4adc93ce12e4ba20632a058","unresolved":false,"context_lines":[{"line_number":588,"context_line":""},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":591,"context_line":"    class InstanceUpdatePayload(base.NovaObject):"},{"line_number":592,"context_line":"        # Version 1.0: Initial version"},{"line_number":593,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":594,"context_line":"        fields \u003d {"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_49f2fcd3","line":591,"in_reply_to":"3a29b11f_42ec47c7","updated":"2015-10-20 10:10:51.000000000","message":"Done","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"57d227f7527f2ddbbe70760ed77dcdc93d758e43","unresolved":false,"context_lines":[{"line_number":718,"context_line":"  (e.g. keypair notifications) to serve as an example"},{"line_number":719,"context_line":"* Create versioned notification for instance.update notification"},{"line_number":720,"context_line":"* Create versioned notifications for nova.notification.send_api_fault type of"},{"line_number":721,"context_line":"  notifications"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_427207e7","line":721,"updated":"2015-10-20 09:22:44.000000000","message":"I think we need to talk about the docs and testing more in this list.","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7d8eeb730c8f7328c4adc93ce12e4ba20632a058","unresolved":false,"context_lines":[{"line_number":718,"context_line":"  (e.g. keypair notifications) to serve as an example"},{"line_number":719,"context_line":"* Create versioned notification for instance.update notification"},{"line_number":720,"context_line":"* Create versioned notifications for nova.notification.send_api_fault type of"},{"line_number":721,"context_line":"  notifications"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_c4827100","line":721,"in_reply_to":"3a29b11f_427207e7","updated":"2015-10-20 10:10:51.000000000","message":"Done","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"57d227f7527f2ddbbe70760ed77dcdc93d758e43","unresolved":false,"context_lines":[{"line_number":729,"context_line":"Testing"},{"line_number":730,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"Functional test coverage shall be provided for versioned notifications."},{"line_number":733,"context_line":""},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_e2b0f38d","line":732,"updated":"2015-10-20 09:22:44.000000000","message":"I think we might need to discuss the base way forward here, getting this tested is important.\n\nLets start with:\n* generate samples of all notifications (similar to the API sample auto-generation).\n* functional tests for the happy paths, like create instance generates appropriate notifications, although starting with the pure API operations might be easier.\n* lets add unit tests for the failure modes.","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7d8eeb730c8f7328c4adc93ce12e4ba20632a058","unresolved":false,"context_lines":[{"line_number":729,"context_line":"Testing"},{"line_number":730,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":731,"context_line":""},{"line_number":732,"context_line":"Functional test coverage shall be provided for versioned notifications."},{"line_number":733,"context_line":""},{"line_number":734,"context_line":""},{"line_number":735,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_e4852d07","line":732,"in_reply_to":"3a29b11f_e2b0f38d","updated":"2015-10-20 10:10:51.000000000","message":"Done","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"57d227f7527f2ddbbe70760ed77dcdc93d758e43","unresolved":false,"context_lines":[{"line_number":737,"context_line":""},{"line_number":738,"context_line":"* Notification samples shall be generated for versioned notifications."},{"line_number":739,"context_line":"* A new devref shall be created that describe how to add new versioned"},{"line_number":740,"context_line":"  notifications to nova"},{"line_number":741,"context_line":""},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_82681ff7","line":740,"updated":"2015-10-20 09:22:44.000000000","message":"I think we need an end user guide here too, but lets not run before we can walk I guess.","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7d8eeb730c8f7328c4adc93ce12e4ba20632a058","unresolved":false,"context_lines":[{"line_number":737,"context_line":""},{"line_number":738,"context_line":"* Notification samples shall be generated for versioned notifications."},{"line_number":739,"context_line":"* A new devref shall be created that describe how to add new versioned"},{"line_number":740,"context_line":"  notifications to nova"},{"line_number":741,"context_line":""},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3a29b11f_847d591e","line":740,"in_reply_to":"3a29b11f_82681ff7","updated":"2015-10-20 10:10:51.000000000","message":"Done","commit_id":"39c6c654c70cc6f34c0e6dc4e9c0420e7ceed649"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"7e3430dc8babd8aeb869173ae51328c315ea06de","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The value of the the priority field of the envelope on the wire can be selected"},{"line_number":153,"context_line":"from the predefined priorities in oslo.messaging (audit, debug, info, warn,"},{"line_number":154,"context_line":"error, critical, sample) except \u0027warning\u0027 (use warn instead)."},{"line_number":155,"context_line":"The notification model will do validation of the priority by providing an enum"},{"line_number":156,"context_line":"with the valid priorities."},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_9c462322","line":154,"updated":"2015-11-04 09:40:27.000000000","message":"it is not clear to me this exception for the \u0027warning\u0027, can you put here more info, please?","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1341a762c213bd21839dad646d48bf211907261e","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The value of the the priority field of the envelope on the wire can be selected"},{"line_number":153,"context_line":"from the predefined priorities in oslo.messaging (audit, debug, info, warn,"},{"line_number":154,"context_line":"error, critical, sample) except \u0027warning\u0027 (use warn instead)."},{"line_number":155,"context_line":"The notification model will do validation of the priority by providing an enum"},{"line_number":156,"context_line":"with the valid priorities."},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_3f036944","line":154,"in_reply_to":"fa80f949_9c462322","updated":"2015-11-04 10:40:13.000000000","message":"John had a comment in patch set 3 to drop warning. As far as I understand warning is just an alias of warn in the notifier interface anyhow.","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"77c25aecc3a630ae654f164d362d7e3f17ef80cb","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Cons:"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"* The envelope on the wire is not versioned just the payload field of"},{"line_number":206,"context_line":"  it. However the envelope structure is generic and well defined by"},{"line_number":207,"context_line":"  oslo.messaging."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_200efd34","line":205,"updated":"2015-11-03 19:17:14.000000000","message":"The envelope appears to already have a version field of its own, for v2.0 notifications.  v1 appears to have no envelope at all.\n\nI prefer not to try and add ovoo type versioning around the envelope since this is already reasonably defined in oslo.messaging.\n\nOn a side note, the payload appears to be json serialized in oslo.messaging, which is a bit redundant when the ovoo payload will do its own serialization:\n\nhttps://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/_drivers/amqpdriver.py#L415\nhttps://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/_drivers/common.py#L286\n\n(So, some change to oslo.messaging might be warranted to avoid pointless double serialization.)","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1341a762c213bd21839dad646d48bf211907261e","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"Cons:"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"* The envelope on the wire is not versioned just the payload field of"},{"line_number":206,"context_line":"  it. However the envelope structure is generic and well defined by"},{"line_number":207,"context_line":"  oslo.messaging."},{"line_number":208,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_c22600ba","line":205,"in_reply_to":"fa80f949_200efd34","updated":"2015-11-04 10:40:13.000000000","message":"Notification uses the oslo.messaging.notifier interface that takes care of serialization in a configurable way https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/notify/notifier.py#L187 so we don\u0027t have to change oslo.messaging to avoid double serialization.","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"77c25aecc3a630ae654f164d362d7e3f17ef80cb","unresolved":false,"context_lines":[{"line_number":206,"context_line":"  it. However the envelope structure is generic and well defined by"},{"line_number":207,"context_line":"  oslo.messaging."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Or alternatively create a new envelope structure in oslo.messaging that already"},{"line_number":210,"context_line":"a versioned object and use the serialized form of that object on the wire."},{"line_number":211,"context_line":"If we change oslo to provide an interface where an object inheriting from"},{"line_number":212,"context_line":"NotificationBase object can be passed in and oslo uses the serialized from of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_602ba583","line":209,"updated":"2015-11-03 19:17:14.000000000","message":"Seems too complicated to invent a new envelope when a versioned one in oslo.messaging already exists.","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1341a762c213bd21839dad646d48bf211907261e","unresolved":false,"context_lines":[{"line_number":206,"context_line":"  it. However the envelope structure is generic and well defined by"},{"line_number":207,"context_line":"  oslo.messaging."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Or alternatively create a new envelope structure in oslo.messaging that already"},{"line_number":210,"context_line":"a versioned object and use the serialized form of that object on the wire."},{"line_number":211,"context_line":"If we change oslo to provide an interface where an object inheriting from"},{"line_number":212,"context_line":"NotificationBase object can be passed in and oslo uses the serialized from of"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_c29b60c8","line":209,"in_reply_to":"fa80f949_602ba583","updated":"2015-11-04 10:40:13.000000000","message":"The envelope in case of notifications are defined here https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/notify/notifier.py#L190-L195 It is not explicitly versioned but it is well defined and stable so I\u0027m definitely against changing this.","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"77c25aecc3a630ae654f164d362d7e3f17ef80cb","unresolved":false,"context_lines":[{"line_number":271,"context_line":""},{"line_number":272,"context_line":"Use a single global notification version:"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"The proposal is to use separate version number per notification. Alternatively"},{"line_number":275,"context_line":"a single global notification version number can be defined that is bumped every"},{"line_number":276,"context_line":"time when a single notification has been changed."},{"line_number":277,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_00573903","line":274,"updated":"2015-11-03 19:17:14.000000000","message":"Individually versioning the notifications seems better to provide a clear view of changes to a tools developer.","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1341a762c213bd21839dad646d48bf211907261e","unresolved":false,"context_lines":[{"line_number":271,"context_line":""},{"line_number":272,"context_line":"Use a single global notification version:"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"The proposal is to use separate version number per notification. Alternatively"},{"line_number":275,"context_line":"a single global notification version number can be defined that is bumped every"},{"line_number":276,"context_line":"time when a single notification has been changed."},{"line_number":277,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_82a55805","line":274,"in_reply_to":"fa80f949_00573903","updated":"2015-11-04 10:40:13.000000000","message":"Agree","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"77c25aecc3a630ae654f164d362d7e3f17ef80cb","unresolved":false,"context_lines":[{"line_number":316,"context_line":""},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":319,"context_line":"    class NotificationBase(base.NovaObject):"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        fields \u003d {"},{"line_number":322,"context_line":"            \u0027priority\u0027: fields.NotificationPriorityTypeField(),"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_a0b66d3b","line":319,"updated":"2015-11-03 19:17:14.000000000","message":"Should maybe stub out db related fields since they don\u0027t make sense in terms of notifications?","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1341a762c213bd21839dad646d48bf211907261e","unresolved":false,"context_lines":[{"line_number":316,"context_line":""},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":319,"context_line":"    class NotificationBase(base.NovaObject):"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"        fields \u003d {"},{"line_number":322,"context_line":"            \u0027priority\u0027: fields.NotificationPriorityTypeField(),"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_e2a6a4c0","line":319,"in_reply_to":"fa80f949_a0b66d3b","updated":"2015-11-04 10:40:13.000000000","message":"It depends. Some DB related fields like created_at can be useful in notification like instance.update in the other hand some other db only fields are not useful. I have a toy implementation where the developer can state which db fields shall not be emitted form the object when defines the specific Notification class so this problem can be solved. Let\u0027s discuss the way we do this in the code review.","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"7e3430dc8babd8aeb869173ae51328c315ea06de","unresolved":false,"context_lines":[{"line_number":684,"context_line":"Sending both un-versioned and versioned wire format for a notification due to"},{"line_number":685,"context_line":"keeping backward compatibility in Mitaka will increase the load on the message"},{"line_number":686,"context_line":"bus. A config option will be provided to specify which version of the"},{"line_number":687,"context_line":"notificatios shall be emited to mitigate this. Also the deployer can us NoOp"},{"line_number":688,"context_line":"notification driver to turn the interface off."},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_3c27f713","line":687,"updated":"2015-11-04 09:40:27.000000000","message":"nit:s/us/use","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1341a762c213bd21839dad646d48bf211907261e","unresolved":false,"context_lines":[{"line_number":684,"context_line":"Sending both un-versioned and versioned wire format for a notification due to"},{"line_number":685,"context_line":"keeping backward compatibility in Mitaka will increase the load on the message"},{"line_number":686,"context_line":"bus. A config option will be provided to specify which version of the"},{"line_number":687,"context_line":"notificatios shall be emited to mitigate this. Also the deployer can us NoOp"},{"line_number":688,"context_line":"notification driver to turn the interface off."},{"line_number":689,"context_line":""},{"line_number":690,"context_line":"Other deployer impact"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_a2b09cf5","line":687,"in_reply_to":"fa80f949_3c27f713","updated":"2015-11-04 10:40:13.000000000","message":"Done","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"7e3430dc8babd8aeb869173ae51328c315ea06de","unresolved":false,"context_lines":[{"line_number":700,"context_line":"possible values ``versioned``, ``un-versioned``, ``both`` to specify which"},{"line_number":701,"context_line":"version of the notifications shall be emited. The ``un-versioned`` value will"},{"line_number":702,"context_line":"be deprecated from the beginning to encourage deployers to start consuming"},{"line_number":703,"context_line":"versioned notifications."},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"Developer impact"},{"line_number":706,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_9cd623c4","line":703,"updated":"2015-11-04 09:40:27.000000000","message":"is \"both\" the default value?","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1341a762c213bd21839dad646d48bf211907261e","unresolved":false,"context_lines":[{"line_number":700,"context_line":"possible values ``versioned``, ``un-versioned``, ``both`` to specify which"},{"line_number":701,"context_line":"version of the notifications shall be emited. The ``un-versioned`` value will"},{"line_number":702,"context_line":"be deprecated from the beginning to encourage deployers to start consuming"},{"line_number":703,"context_line":"versioned notifications."},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"Developer impact"},{"line_number":706,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_8299d870","line":703,"in_reply_to":"fa80f949_9cd623c4","updated":"2015-11-04 10:40:13.000000000","message":"Good question. I feel it would be nice for the consumers to have the both as the default value in Mitaka. I\u0027ve updated the spec to state this.","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":2835,"name":"Brian Elliott","email":"bdelliott@gmail.com","username":"belliott"},"change_message_id":"77c25aecc3a630ae654f164d362d7e3f17ef80cb","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"Primary assignee:"},{"line_number":720,"context_line":"  * balazs-gibizer"},{"line_number":721,"context_line":"  * \u003chopefully others too\u003e"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_00f3b90b","line":721,"updated":"2015-11-03 19:17:14.000000000","message":"Happy to help","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1341a762c213bd21839dad646d48bf211907261e","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"Primary assignee:"},{"line_number":720,"context_line":"  * balazs-gibizer"},{"line_number":721,"context_line":"  * \u003chopefully others too\u003e"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_0259685a","line":721,"in_reply_to":"fa80f949_00f3b90b","updated":"2015-11-04 10:40:13.000000000","message":"Thank you for the help I added your id to the spec. :)","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"7e3430dc8babd8aeb869173ae51328c315ea06de","unresolved":false,"context_lines":[{"line_number":719,"context_line":"Primary assignee:"},{"line_number":720,"context_line":"  * balazs-gibizer"},{"line_number":721,"context_line":"  * \u003chopefully others too\u003e"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"Work Items"},{"line_number":725,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_9cedc38d","line":722,"updated":"2015-11-04 09:40:27.000000000","message":"I hope I can help :)","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1341a762c213bd21839dad646d48bf211907261e","unresolved":false,"context_lines":[{"line_number":719,"context_line":"Primary assignee:"},{"line_number":720,"context_line":"  * balazs-gibizer"},{"line_number":721,"context_line":"  * \u003chopefully others too\u003e"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":""},{"line_number":724,"context_line":"Work Items"},{"line_number":725,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"fa80f949_2256ec29","line":722,"in_reply_to":"fa80f949_9cedc38d","updated":"2015-11-04 10:40:13.000000000","message":"Thank you for the help I added your id to the spec. :)","commit_id":"b0cea3534a3998a142e42f70bc453e649666302f"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":103,"context_line":"versionedobject module. To emit such notification nova will continue to use"},{"line_number":104,"context_line":"the notifier interface of oslo.messaging module. To convert the notification"},{"line_number":105,"context_line":"model to the format that can be fed into the notifier interface nova will use"},{"line_number":106,"context_line":"the default ObjectSerializer from oslo versionedobjects."},{"line_number":107,"context_line":"A single versioned notification will be modeled with a single oslo versioned"},{"line_number":108,"context_line":"object but that object can use other new or existing versioned object as"},{"line_number":109,"context_line":"payload field."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_6abfd4fb","line":106,"updated":"2015-11-04 21:12:14.000000000","message":"We should probably be using nova\u0027s object serializer (https://github.com/openstack/nova/blob/master/nova/objects/base.py#L213) so we don\u0027t have split serializer implementations being used within Nova.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":103,"context_line":"versionedobject module. To emit such notification nova will continue to use"},{"line_number":104,"context_line":"the notifier interface of oslo.messaging module. To convert the notification"},{"line_number":105,"context_line":"model to the format that can be fed into the notifier interface nova will use"},{"line_number":106,"context_line":"the default ObjectSerializer from oslo versionedobjects."},{"line_number":107,"context_line":"A single versioned notification will be modeled with a single oslo versioned"},{"line_number":108,"context_line":"object but that object can use other new or existing versioned object as"},{"line_number":109,"context_line":"payload field."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_b8b66888","line":106,"in_reply_to":"fa80f949_6abfd4fb","updated":"2015-11-05 08:53:26.000000000","message":"You are right. I updated the spec","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"The main difference between the wire format of the versioned and un-versioned"},{"line_number":135,"context_line":"notification is the format of the payload field. The versioned notification"},{"line_number":136,"context_line":"wire format will use the serialized format of a versioned object as payload."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"The versioned notification model will define versioned object fields for every"},{"line_number":139,"context_line":"fields oslo.messaging notifier interface needs (priority, event_type,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_2aef8c88","line":136,"updated":"2015-11-04 21:12:14.000000000","message":"so the un-versioned notification will have \"payload\": \u003csome_unstructured_dict\u003e and the versioned notification will have \"payload\": \u003cserialized_object\u003e right? so in both cases, payload is something really really close to a dict. I\u0027m wondering if there is a way to satisfy both.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"The main difference between the wire format of the versioned and un-versioned"},{"line_number":135,"context_line":"notification is the format of the payload field. The versioned notification"},{"line_number":136,"context_line":"wire format will use the serialized format of a versioned object as payload."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"The versioned notification model will define versioned object fields for every"},{"line_number":139,"context_line":"fields oslo.messaging notifier interface needs (priority, event_type,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_d3e0edfc","line":136,"in_reply_to":"fa80f949_2aef8c88","updated":"2015-11-05 08:53:26.000000000","message":"Both case the payload will look like as a serialized dict. So  from the envelope perspective the wire format does not really change, however if the consumer has a parser for the payload then he or she has to change that parses to understand the new versioned payload. For backward compatibility we will support emitting both the old and a new payload.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":135,"context_line":"notification is the format of the payload field. The versioned notification"},{"line_number":136,"context_line":"wire format will use the serialized format of a versioned object as payload."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"The versioned notification model will define versioned object fields for every"},{"line_number":139,"context_line":"fields oslo.messaging notifier interface needs (priority, event_type,"},{"line_number":140,"context_line":"publisher_id, payload) so that a single notification can be fully modeled in"},{"line_number":141,"context_line":"nova code. However only the payload field will use the default versioned object"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_0abac86e","line":138,"range":{"start_line":138,"start_character":38,"end_line":138,"end_character":44},"updated":"2015-11-04 21:12:14.000000000","message":"Will it need to define them? or is just a string field good enough? (I can see for priority we\u0027d want an enum for \"INFO\", \"WARNING\", etc.)","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"notification is the format of the payload field. The versioned notification"},{"line_number":136,"context_line":"wire format will use the serialized format of a versioned object as payload."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"The versioned notification model will define versioned object fields for every"},{"line_number":139,"context_line":"fields oslo.messaging notifier interface needs (priority, event_type,"},{"line_number":140,"context_line":"publisher_id, payload) so that a single notification can be fully modeled in"},{"line_number":141,"context_line":"nova code. However only the payload field will use the default versioned object"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_93ca656d","line":138,"range":{"start_line":138,"start_character":38,"end_line":138,"end_character":44},"in_reply_to":"fa80f949_0abac86e","updated":"2015-11-05 08:53:26.000000000","message":"We will define them as precisely as possible, see the details in the Data model section","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"The value of the event_type field of the envelope on the wire will be defined"},{"line_number":146,"context_line":"by the name of the affected object, the name of the performed action emitting"},{"line_number":147,"context_line":"the notification and the phase of the action. For example: instance.create.end,"},{"line_number":148,"context_line":"aggregate.removehost.start, filterscheduler.select_destinations.end."},{"line_number":149,"context_line":"The notification model will do basic validation on the content of the even_type"},{"line_number":150,"context_line":"e.g. enum for valid phases will be created."},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_aa261ccc","line":148,"range":{"start_line":147,"start_character":59,"end_line":148,"end_character":67},"updated":"2015-11-04 21:12:14.000000000","message":"Is there a plan to assert the format of these?","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"The value of the event_type field of the envelope on the wire will be defined"},{"line_number":146,"context_line":"by the name of the affected object, the name of the performed action emitting"},{"line_number":147,"context_line":"the notification and the phase of the action. For example: instance.create.end,"},{"line_number":148,"context_line":"aggregate.removehost.start, filterscheduler.select_destinations.end."},{"line_number":149,"context_line":"The notification model will do basic validation on the content of the even_type"},{"line_number":150,"context_line":"e.g. enum for valid phases will be created."},{"line_number":151,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_d3854d07","line":148,"range":{"start_line":147,"start_character":59,"end_line":148,"end_character":67},"in_reply_to":"fa80f949_aa261ccc","updated":"2015-11-05 08:53:26.000000000","message":"Yes, there is. As the fields will be modeled with versioned objects in nova, we can assert that the event_type is in a good format.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":146,"context_line":"by the name of the affected object, the name of the performed action emitting"},{"line_number":147,"context_line":"the notification and the phase of the action. For example: instance.create.end,"},{"line_number":148,"context_line":"aggregate.removehost.start, filterscheduler.select_destinations.end."},{"line_number":149,"context_line":"The notification model will do basic validation on the content of the even_type"},{"line_number":150,"context_line":"e.g. enum for valid phases will be created."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The value of the the priority field of the envelope on the wire can be selected"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_2a19cc88","line":149,"range":{"start_line":149,"start_character":70,"end_line":149,"end_character":79},"updated":"2015-11-04 21:12:14.000000000","message":"s/even_type/event_type","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":146,"context_line":"by the name of the affected object, the name of the performed action emitting"},{"line_number":147,"context_line":"the notification and the phase of the action. For example: instance.create.end,"},{"line_number":148,"context_line":"aggregate.removehost.start, filterscheduler.select_destinations.end."},{"line_number":149,"context_line":"The notification model will do basic validation on the content of the even_type"},{"line_number":150,"context_line":"e.g. enum for valid phases will be created."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The value of the the priority field of the envelope on the wire can be selected"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_33ae1986","line":149,"range":{"start_line":149,"start_character":70,"end_line":149,"end_character":79},"in_reply_to":"fa80f949_2a19cc88","updated":"2015-11-05 08:53:26.000000000","message":"Done","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":147,"context_line":"the notification and the phase of the action. For example: instance.create.end,"},{"line_number":148,"context_line":"aggregate.removehost.start, filterscheduler.select_destinations.end."},{"line_number":149,"context_line":"The notification model will do basic validation on the content of the even_type"},{"line_number":150,"context_line":"e.g. enum for valid phases will be created."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The value of the the priority field of the envelope on the wire can be selected"},{"line_number":153,"context_line":"from the predefined priorities in oslo.messaging (audit, debug, info, warn,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_a5308de9","line":150,"updated":"2015-11-04 21:12:14.000000000","message":"Does this mean there will be an enum defining like \"start\", \"end\", \"pause\"? So that would be validation on a part of the event_type? To me, that sounds more complex than basic validation.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":147,"context_line":"the notification and the phase of the action. For example: instance.create.end,"},{"line_number":148,"context_line":"aggregate.removehost.start, filterscheduler.select_destinations.end."},{"line_number":149,"context_line":"The notification model will do basic validation on the content of the even_type"},{"line_number":150,"context_line":"e.g. enum for valid phases will be created."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The value of the the priority field of the envelope on the wire can be selected"},{"line_number":153,"context_line":"from the predefined priorities in oslo.messaging (audit, debug, info, warn,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_f32bb1e9","line":150,"in_reply_to":"fa80f949_a5308de9","updated":"2015-11-05 08:53:26.000000000","message":"Yes, we are planning to have an enum with \"start\", \"end\", etc. However we are not planning to validate that \"start\" is used for the right notification as that is really depends on the code patch sending the notification this is why we have  \u0027basic validation\u0027 in the spec.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"4bfeece523578d2a7c1cf7da07d644e51cf27d95","unresolved":false,"context_lines":[{"line_number":147,"context_line":"the notification and the phase of the action. For example: instance.create.end,"},{"line_number":148,"context_line":"aggregate.removehost.start, filterscheduler.select_destinations.end."},{"line_number":149,"context_line":"The notification model will do basic validation on the content of the even_type"},{"line_number":150,"context_line":"e.g. enum for valid phases will be created."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The value of the the priority field of the envelope on the wire can be selected"},{"line_number":153,"context_line":"from the predefined priorities in oslo.messaging (audit, debug, info, warn,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_a32f09f5","line":150,"in_reply_to":"fa80f949_f32bb1e9","updated":"2015-11-05 19:50:50.000000000","message":"OK that was the part I was concerned about. Having an enum for states isn\u0027t hard, asserting the enum is used in proper contexts is. As long as we do the first and not the second part, that\u0027s cool with me.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"A new version of a versioned notification has to be backward compatible with"},{"line_number":169,"context_line":"the previous version. Nova will always emit the latest version of a versioned"},{"line_number":170,"context_line":"notification and nova will not support pinning back the notification versions."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Backward compatibility for pre Mitaka notification consumers will be ensured"},{"line_number":173,"context_line":"by emitting both the verisoned and the un-versioned notification format on the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_65938550","line":170,"range":{"start_line":170,"start_character":17,"end_line":170,"end_character":78},"updated":"2015-11-04 21:12:14.000000000","message":"What does this mean? Here\u0027s my understanding:\n\nSay nova in M is using version 1.2 of the notification. When we upgrade to N, it\u0027s now using version 1.8. If something listening to the notifications is still on M (so 1.2), won\u0027t 1.8 break the listener? If the notification uses versioned objects, we get backports for \"free\" with it, so I say use it.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":167,"context_line":""},{"line_number":168,"context_line":"A new version of a versioned notification has to be backward compatible with"},{"line_number":169,"context_line":"the previous version. Nova will always emit the latest version of a versioned"},{"line_number":170,"context_line":"notification and nova will not support pinning back the notification versions."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Backward compatibility for pre Mitaka notification consumers will be ensured"},{"line_number":173,"context_line":"by emitting both the verisoned and the un-versioned notification format on the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_f363b118","line":170,"range":{"start_line":170,"start_character":17,"end_line":170,"end_character":78},"in_reply_to":"fa80f949_65938550","updated":"2015-11-05 08:53:26.000000000","message":"1.8 is backward compatible with 1.2 so well written parser for 1.2 will not break if it gets 1.8 message.\nThis is a simplification in the spec. Pinning the version back is out of scope now but it can be added later with a subsequent spec.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":174,"context_line":"wire on separate topics. The new notification model will provide"},{"line_number":175,"context_line":"a way to emit both old and new wire format from a same notification object."},{"line_number":176,"context_line":"A configuration option will be provided to specify which version of the"},{"line_number":177,"context_line":"notifications shall be emited but asking for the old format only will be"},{"line_number":178,"context_line":"deprecated from the beginning. Emitting the un-versioned wire format of a"},{"line_number":179,"context_line":"versioned notification will be deprecated along with a proper deprecation"},{"line_number":180,"context_line":"message in Mitaka and will be removed in N release."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_259d7d59","line":177,"range":{"start_line":177,"start_character":23,"end_line":177,"end_character":29},"updated":"2015-11-04 21:12:14.000000000","message":"s/emited/emitted","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":174,"context_line":"wire on separate topics. The new notification model will provide"},{"line_number":175,"context_line":"a way to emit both old and new wire format from a same notification object."},{"line_number":176,"context_line":"A configuration option will be provided to specify which version of the"},{"line_number":177,"context_line":"notifications shall be emited but asking for the old format only will be"},{"line_number":178,"context_line":"deprecated from the beginning. Emitting the un-versioned wire format of a"},{"line_number":179,"context_line":"versioned notification will be deprecated along with a proper deprecation"},{"line_number":180,"context_line":"message in Mitaka and will be removed in N release."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_d370edde","line":177,"range":{"start_line":177,"start_character":23,"end_line":177,"end_character":29},"in_reply_to":"fa80f949_259d7d59","updated":"2015-11-05 08:53:26.000000000","message":"Done","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":184,"context_line":"Alternatives"},{"line_number":185,"context_line":"------------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Version the whole wire format instead of only the payload:"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"There seems to be two main alternatives how to generate the actual notification"},{"line_number":190,"context_line":"message on the wire from the KeyPairNotification object defined in the Data"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_65e145d0","line":187,"updated":"2015-11-04 21:12:14.000000000","message":"...that\u0027s the plan of this spec isn\u0027t it? We\u0027re going to version the whole envelope?","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":184,"context_line":"Alternatives"},{"line_number":185,"context_line":"------------"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"Version the whole wire format instead of only the payload:"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"There seems to be two main alternatives how to generate the actual notification"},{"line_number":190,"context_line":"message on the wire from the KeyPairNotification object defined in the Data"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_f331710c","line":187,"in_reply_to":"fa80f949_65e145d0","updated":"2015-11-05 08:53:26.000000000","message":"There is two alternative a) version only the payload see it detailed from line 193\nb) version the envelope and the payload see it detailed from line 210","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":190,"context_line":"message on the wire from the KeyPairNotification object defined in the Data"},{"line_number":191,"context_line":"model impact section."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Use the current envelop structure defined by the notifier in oslo.messaging [1]"},{"line_number":194,"context_line":"and use the versioning of the payload on the wire as proposed in the"},{"line_number":195,"context_line":"Data model impact section."},{"line_number":196,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_e5c69548","line":193,"range":{"start_line":193,"start_character":16,"end_line":193,"end_character":23},"updated":"2015-11-04 21:12:14.000000000","message":"s/envelop/envelope","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":190,"context_line":"message on the wire from the KeyPairNotification object defined in the Data"},{"line_number":191,"context_line":"model impact section."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Use the current envelop structure defined by the notifier in oslo.messaging [1]"},{"line_number":194,"context_line":"and use the versioning of the payload on the wire as proposed in the"},{"line_number":195,"context_line":"Data model impact section."},{"line_number":196,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_7326e1cf","line":193,"range":{"start_line":193,"start_character":16,"end_line":193,"end_character":23},"in_reply_to":"fa80f949_e5c69548","updated":"2015-11-05 08:53:26.000000000","message":"Done","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":206,"context_line":"  it. However the envelope structure is generic and well defined by"},{"line_number":207,"context_line":"  oslo.messaging."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Or alternatively create a new envelope structure in oslo.messaging that already"},{"line_number":210,"context_line":"a versioned object and use the serialized form of that object on the wire."},{"line_number":211,"context_line":"If we change oslo to provide an interface where an object inheriting from"},{"line_number":212,"context_line":"NotificationBase object can be passed in and oslo uses the serialized from of"},{"line_number":213,"context_line":"that object as the message directly then KeyPair notification message on the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_65f2a571","line":210,"range":{"start_line":209,"start_character":30,"end_line":210,"end_character":74},"updated":"2015-11-04 21:12:14.000000000","message":"oslo.messaging using a versioned object would cause a circular dependency between the two. o.vo is an abstraction layer above oslo.messaging, so oslo.messaging should not be using o.vo","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":206,"context_line":"  it. However the envelope structure is generic and well defined by"},{"line_number":207,"context_line":"  oslo.messaging."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Or alternatively create a new envelope structure in oslo.messaging that already"},{"line_number":210,"context_line":"a versioned object and use the serialized form of that object on the wire."},{"line_number":211,"context_line":"If we change oslo to provide an interface where an object inheriting from"},{"line_number":212,"context_line":"NotificationBase object can be passed in and oslo uses the serialized from of"},{"line_number":213,"context_line":"that object as the message directly then KeyPair notification message on the"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_6e427640","line":210,"range":{"start_line":209,"start_character":30,"end_line":210,"end_character":74},"in_reply_to":"fa80f949_65f2a571","updated":"2015-11-05 08:53:26.000000000","message":"Good catch, I added this as a Cons for this alternative.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Or alternatively create a new envelope structure in oslo.messaging that already"},{"line_number":210,"context_line":"a versioned object and use the serialized form of that object on the wire."},{"line_number":211,"context_line":"If we change oslo to provide an interface where an object inheriting from"},{"line_number":212,"context_line":"NotificationBase object can be passed in and oslo uses the serialized from of"},{"line_number":213,"context_line":"that object as the message directly then KeyPair notification message on the"},{"line_number":214,"context_line":"wire would look like the following::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_e58535ad","line":211,"range":{"start_line":211,"start_character":13,"end_line":211,"end_character":17},"updated":"2015-11-04 21:12:14.000000000","message":"do you mean oslo.messaging here? Too many olso\u0027s make this confusing.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"Or alternatively create a new envelope structure in oslo.messaging that already"},{"line_number":210,"context_line":"a versioned object and use the serialized form of that object on the wire."},{"line_number":211,"context_line":"If we change oslo to provide an interface where an object inheriting from"},{"line_number":212,"context_line":"NotificationBase object can be passed in and oslo uses the serialized from of"},{"line_number":213,"context_line":"that object as the message directly then KeyPair notification message on the"},{"line_number":214,"context_line":"wire would look like the following::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_4e5e9213","line":211,"range":{"start_line":211,"start_character":13,"end_line":211,"end_character":17},"in_reply_to":"fa80f949_e58535ad","updated":"2015-11-05 08:53:26.000000000","message":"Yes it is oslo.messaging, I clarified it.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"When defining the payload model for a versioned notification we will try to"},{"line_number":369,"context_line":"reuse the existing nova versioned objects like in case of the KeyPair example"},{"line_number":370,"context_line":"above. If that is not possible a new versioned object for the payload will be"},{"line_number":371,"context_line":"created."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"The wire format of the above KeyPair notification will look like the"},{"line_number":374,"context_line":"followings::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_651ce577","line":371,"range":{"start_line":370,"start_character":7,"end_line":371,"end_character":7},"updated":"2015-11-04 21:12:14.000000000","message":"I think this will cause a chain of dependent objects that will be a nightmare to maintain.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"94edede0fa165636c490d5e7041a186857318135","unresolved":false,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"When defining the payload model for a versioned notification we will try to"},{"line_number":369,"context_line":"reuse the existing nova versioned objects like in case of the KeyPair example"},{"line_number":370,"context_line":"above. If that is not possible a new versioned object for the payload will be"},{"line_number":371,"context_line":"created."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"The wire format of the above KeyPair notification will look like the"},{"line_number":374,"context_line":"followings::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_9301d307","line":371,"range":{"start_line":370,"start_character":7,"end_line":371,"end_character":7},"in_reply_to":"fa80f949_062703cb","updated":"2015-11-06 08:19:10.000000000","message":"I see. In this sense yes, we will introduce new objects that needs to be versioned properly. I think this is the price for having a well defined interface.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"4bfeece523578d2a7c1cf7da07d644e51cf27d95","unresolved":false,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"When defining the payload model for a versioned notification we will try to"},{"line_number":369,"context_line":"reuse the existing nova versioned objects like in case of the KeyPair example"},{"line_number":370,"context_line":"above. If that is not possible a new versioned object for the payload will be"},{"line_number":371,"context_line":"created."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"The wire format of the above KeyPair notification will look like the"},{"line_number":374,"context_line":"followings::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_062703cb","line":371,"range":{"start_line":370,"start_character":7,"end_line":371,"end_character":7},"in_reply_to":"fa80f949_4eba120c","updated":"2015-11-05 19:50:50.000000000","message":"My thought here is if we have something like InstanceNotification to hold the payload for an instance (an Instance object), that will always be (or should be) changing whenever we update the instance object. We\u0027re going to do that for every object that will be in a payload. People tend to complain when it comes to updating object versions :/","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"When defining the payload model for a versioned notification we will try to"},{"line_number":369,"context_line":"reuse the existing nova versioned objects like in case of the KeyPair example"},{"line_number":370,"context_line":"above. If that is not possible a new versioned object for the payload will be"},{"line_number":371,"context_line":"created."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"The wire format of the above KeyPair notification will look like the"},{"line_number":374,"context_line":"followings::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_4eba120c","line":371,"range":{"start_line":370,"start_character":7,"end_line":371,"end_character":7},"in_reply_to":"fa80f949_651ce577","updated":"2015-11-05 08:53:26.000000000","message":"New versioned object needs to be created if there is no existing object that can be reused. For example the api fault notification does not have a versioned object today that we can reuse, so we will create one for the notification payload.\nI don\u0027t see how this causing a maintenance nightmare.","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"9d5e44f43d1ca2b46a52488f79b1f02e7cb87817","unresolved":false,"context_lines":[{"line_number":492,"context_line":"            \u0027payload\u0027: fields.ObjectField(\u0027ApiFaultPayload\u0027)"},{"line_number":493,"context_line":"        }"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"instance update  notification example"},{"line_number":496,"context_line":"-------------------------------------"},{"line_number":497,"context_line":"The nova.notifications.send_update function is used today to send notification"},{"line_number":498,"context_line":"about the change of the instance. Here is an example of the current"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_000aa721","line":495,"range":{"start_line":495,"start_character":15,"end_line":495,"end_character":17},"updated":"2015-11-04 21:12:14.000000000","message":"nit: do you need 2 spaces here?","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"30067fb08f347b4cc26421f00061ca4e6e54f00b","unresolved":false,"context_lines":[{"line_number":492,"context_line":"            \u0027payload\u0027: fields.ObjectField(\u0027ApiFaultPayload\u0027)"},{"line_number":493,"context_line":"        }"},{"line_number":494,"context_line":""},{"line_number":495,"context_line":"instance update  notification example"},{"line_number":496,"context_line":"-------------------------------------"},{"line_number":497,"context_line":"The nova.notifications.send_update function is used today to send notification"},{"line_number":498,"context_line":"about the change of the instance. Here is an example of the current"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa80f949_ee2c264c","line":495,"range":{"start_line":495,"start_character":15,"end_line":495,"end_character":17},"in_reply_to":"fa80f949_000aa721","updated":"2015-11-05 08:53:26.000000000","message":"Done","commit_id":"cdaa83c93c3e015e2450bea76a9c5386fddfd9d4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce5d19464dc678d03c8e7cf4a91a322e7a26b46e","unresolved":false,"context_lines":[{"line_number":118,"context_line":"un-managed. Adding new semi-managed notifications shall be avoided in the"},{"line_number":119,"context_line":"future."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"We want to keep the notification envelope format defined by the notifier"},{"line_number":122,"context_line":"interface in oslo.messaging, therefore versioned notifications will have the"},{"line_number":123,"context_line":"same envelope on the wire as the un-versioned notifications."},{"line_number":124,"context_line":"Which is the following::"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_0a6666ed","line":122,"range":{"start_line":121,"start_character":1,"end_line":122,"end_character":27},"updated":"2015-11-09 11:24:31.000000000","message":"so I wonder how much this effort could be a cross-project effort by seeing how oslo.versionedobjects could benefit for oslo.messaging by versioning the envelope itself and not just the payload.\n\nOf course, all of that is just out of that spec but I would appreciate some further thinking about that given I\u0027m not a big fan of sending an unversioned envelope while we nest a versioned payload.","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"18d5c6c24df973de738549925d59ed7fa7c91460","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"We want to keep the notification envelope format defined by the notifier"},{"line_number":122,"context_line":"interface in oslo.messaging, therefore versioned notifications will have the"},{"line_number":123,"context_line":"same envelope on the wire as the un-versioned notifications."},{"line_number":124,"context_line":"Which is the following::"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_4fdd6013","line":123,"updated":"2015-11-09 10:58:27.000000000","message":"Cross project consistency wins me over on keeping this.","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"99f4f0293ff010706d452ca6d97cfe77d2ec01d6","unresolved":false,"context_lines":[{"line_number":137,"context_line":"wire format will use the serialized format of a versioned object as payload."},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"The versioned notification model will define versioned object fields for every"},{"line_number":140,"context_line":"fields oslo.messaging notifier interface needs (priority, event_type,"},{"line_number":141,"context_line":"publisher_id, payload) so that a single notification can be fully modeled in"},{"line_number":142,"context_line":"nova code. However only the payload field will use the default versioned object"},{"line_number":143,"context_line":"serialization. The other fields in the envelope will be filled with strings as"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_944f8fbc","line":140,"range":{"start_line":140,"start_character":0,"end_line":140,"end_character":6},"updated":"2015-11-05 20:19:49.000000000","message":"nit: s/fields/field","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce5d19464dc678d03c8e7cf4a91a322e7a26b46e","unresolved":false,"context_lines":[{"line_number":140,"context_line":"fields oslo.messaging notifier interface needs (priority, event_type,"},{"line_number":141,"context_line":"publisher_id, payload) so that a single notification can be fully modeled in"},{"line_number":142,"context_line":"nova code. However only the payload field will use the default versioned object"},{"line_number":143,"context_line":"serialization. The other fields in the envelope will be filled with strings as"},{"line_number":144,"context_line":"in the example above."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"The value of the event_type field of the envelope on the wire will be defined"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_eaf9a2c9","line":143,"range":{"start_line":143,"start_character":15,"end_line":143,"end_character":75},"updated":"2015-11-09 11:24:31.000000000","message":"I know it\u0027s an implementation detail but FWIW I\u0027d love to see some coercing being done when creating the notification to make sure that those fields are correct like you said below (eg. raise like a ValueError if the proposed event_type is not the one you want)","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3bedc58368c60d092a9f4bf18e2db55335ebceae","unresolved":false,"context_lines":[{"line_number":140,"context_line":"fields oslo.messaging notifier interface needs (priority, event_type,"},{"line_number":141,"context_line":"publisher_id, payload) so that a single notification can be fully modeled in"},{"line_number":142,"context_line":"nova code. However only the payload field will use the default versioned object"},{"line_number":143,"context_line":"serialization. The other fields in the envelope will be filled with strings as"},{"line_number":144,"context_line":"in the example above."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"The value of the event_type field of the envelope on the wire will be defined"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_1be79ae5","line":143,"range":{"start_line":143,"start_character":15,"end_line":143,"end_character":75},"in_reply_to":"da85f559_eaf9a2c9","updated":"2015-11-09 12:30:42.000000000","message":"Yes, definitely there will be some validation.","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce5d19464dc678d03c8e7cf4a91a322e7a26b46e","unresolved":false,"context_lines":[{"line_number":178,"context_line":"notifications shall be emitted but asking for the old format only will be"},{"line_number":179,"context_line":"deprecated from the beginning. Emitting the un-versioned wire format of a"},{"line_number":180,"context_line":"versioned notification will be deprecated along with a proper deprecation"},{"line_number":181,"context_line":"message in Mitaka and will be removed in N release."},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_aaf15acf","line":181,"updated":"2015-11-09 11:24:31.000000000","message":"++","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce5d19464dc678d03c8e7cf4a91a322e7a26b46e","unresolved":false,"context_lines":[{"line_number":207,"context_line":"  it. However the envelope structure is generic and well defined by"},{"line_number":208,"context_line":"  oslo.messaging."},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"Or alternatively create a new envelope structure in oslo.messaging that already"},{"line_number":211,"context_line":"a versioned object and use the serialized form of that object on the wire."},{"line_number":212,"context_line":"If we change oslo.messaging to provide an interface where an object inheriting"},{"line_number":213,"context_line":"from NotificationBase object can be passed in and oslo.messaging uses the"},{"line_number":214,"context_line":"serialized from of that object as the message directly then KeyPair"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_4ab9cee8","line":211,"range":{"start_line":210,"start_character":3,"end_line":211,"end_character":18},"updated":"2015-11-09 11:24:31.000000000","message":"that\u0027s the direction I\u0027d love to see, but that\u0027s off the spec","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce5d19464dc678d03c8e7cf4a91a322e7a26b46e","unresolved":false,"context_lines":[{"line_number":268,"context_line":"* Needs extensive changes in oslo.messaging in the notification interface code"},{"line_number":269,"context_line":"  as well as in the notification drivers as today notification drivers depend"},{"line_number":270,"context_line":"  on the current envelope structure."},{"line_number":271,"context_line":"* It would create a circular dependency between oslo.messaging and"},{"line_number":272,"context_line":"  oslo.versionedobject"},{"line_number":273,"context_line":"* Consumers need to adapt to the top level structure change as well."},{"line_number":274,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_4ab0eef4","line":271,"range":{"start_line":271,"start_character":20,"end_line":271,"end_character":39},"updated":"2015-11-09 11:24:31.000000000","message":"FWIW that\u0027s an implementation detail that can be addressed correctly using a lazy loading","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3bedc58368c60d092a9f4bf18e2db55335ebceae","unresolved":false,"context_lines":[{"line_number":268,"context_line":"* Needs extensive changes in oslo.messaging in the notification interface code"},{"line_number":269,"context_line":"  as well as in the notification drivers as today notification drivers depend"},{"line_number":270,"context_line":"  on the current envelope structure."},{"line_number":271,"context_line":"* It would create a circular dependency between oslo.messaging and"},{"line_number":272,"context_line":"  oslo.versionedobject"},{"line_number":273,"context_line":"* Consumers need to adapt to the top level structure change as well."},{"line_number":274,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_5b04427d","line":271,"range":{"start_line":271,"start_character":20,"end_line":271,"end_character":39},"in_reply_to":"da85f559_4ab0eef4","updated":"2015-11-09 12:30:42.000000000","message":"You are right, it can be solved, but is shows the size of the problem","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce5d19464dc678d03c8e7cf4a91a322e7a26b46e","unresolved":false,"context_lines":[{"line_number":279,"context_line":"time when a single notification has been changed."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"Data model impact"},{"line_number":283,"context_line":"-----------------"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"The following base objects will be defined:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_8abb36c4","line":282,"range":{"start_line":282,"start_character":0,"end_line":282,"end_character":17},"updated":"2015-11-09 11:24:31.000000000","message":"so this section is usually for mentioning DB upgrades but that\u0027s good to provide some objects bits in there. In a spec amendment, you could be a bit explicit and explain that those objects aren\u0027t aimed to be persisted.","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3bedc58368c60d092a9f4bf18e2db55335ebceae","unresolved":false,"context_lines":[{"line_number":279,"context_line":"time when a single notification has been changed."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"Data model impact"},{"line_number":283,"context_line":"-----------------"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"The following base objects will be defined:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_db26f215","line":282,"range":{"start_line":282,"start_character":0,"end_line":282,"end_character":17},"in_reply_to":"da85f559_8abb36c4","updated":"2015-11-09 12:30:42.000000000","message":"Previously I got comment to move the Object model impact to this section. So I did so. But you are right, I shall state that these are not persisted at the beginning of the section. Will do the change If I have to re-spin the spec.","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce5d19464dc678d03c8e7cf4a91a322e7a26b46e","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            }"},{"line_number":396,"context_line":"        },"},{"line_number":397,"context_line":"        \"message_id\":\"98f1221f-ded0-4153-b92d-3d67219353ee\""},{"line_number":398,"context_line":"    }"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"For an alternative wire format see the Alternatives section."},{"line_number":401,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_6addb213","line":398,"updated":"2015-11-09 11:24:31.000000000","message":"all the above section looks good, but I don\u0027t want to nitpick on some implementation details that can be covered during the code reviews. I\u0027m okay with giving +1 now and possibly disagree with the object structure later.","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3bedc58368c60d092a9f4bf18e2db55335ebceae","unresolved":false,"context_lines":[{"line_number":395,"context_line":"            }"},{"line_number":396,"context_line":"        },"},{"line_number":397,"context_line":"        \"message_id\":\"98f1221f-ded0-4153-b92d-3d67219353ee\""},{"line_number":398,"context_line":"    }"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"For an alternative wire format see the Alternatives section."},{"line_number":401,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_5b79a2fb","line":398,"in_reply_to":"da85f559_6addb213","updated":"2015-11-09 12:30:42.000000000","message":"Agree, let\u0027s do that in the code review.","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce5d19464dc678d03c8e7cf4a91a322e7a26b46e","unresolved":false,"context_lines":[{"line_number":661,"context_line":"        }"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"No db schema changes are foreseen."},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"REST API impact"},{"line_number":667,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_eaf8c27e","line":664,"updated":"2015-11-09 11:24:31.000000000","message":"Oh, see, that most crucial bit is present but a bit overkilled by the whole implementation details you spotted. Maybe a later patch could loosen the details and just mention that?","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3bedc58368c60d092a9f4bf18e2db55335ebceae","unresolved":false,"context_lines":[{"line_number":661,"context_line":"        }"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"No db schema changes are foreseen."},{"line_number":665,"context_line":""},{"line_number":666,"context_line":"REST API impact"},{"line_number":667,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_5b60c235","line":664,"in_reply_to":"da85f559_eaf8c27e","updated":"2015-11-09 12:30:42.000000000","message":"Will move this information to the top if I have to re-spin the spec.","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"99f4f0293ff010706d452ca6d97cfe77d2ec01d6","unresolved":false,"context_lines":[{"line_number":725,"context_line":""},{"line_number":726,"context_line":"Other contributors:"},{"line_number":727,"context_line":"  * belliott"},{"line_number":728,"context_line":"  * andrea-rosa-m"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"Work Items"},{"line_number":731,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"fa80f949_2ff76cf6","line":728,"updated":"2015-11-05 20:19:49.000000000","message":"I missed this part before! Add my name to this list too (rlrossit). I hope I can help out :)","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce5d19464dc678d03c8e7cf4a91a322e7a26b46e","unresolved":false,"context_lines":[{"line_number":725,"context_line":""},{"line_number":726,"context_line":"Other contributors:"},{"line_number":727,"context_line":"  * belliott"},{"line_number":728,"context_line":"  * andrea-rosa-m"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"Work Items"},{"line_number":731,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_ea3f6223","line":728,"in_reply_to":"fa80f949_2ff76cf6","updated":"2015-11-09 11:24:31.000000000","message":"well, it\u0027s more an indication than an actual resource commitment. Anyone that is willing to help can just sync with gibi, no need to mention all the contributors IMHO :)","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":17714,"name":"Augustina Ragwitz","email":"auggy@cpan.org","username":"mmmpork"},"change_message_id":"5f4461b7fb0f7c81ba69fc8d0e4bb113cbfa5cd0","unresolved":false,"context_lines":[{"line_number":736,"context_line":"  (e.g. keypair notifications) to serve as an example"},{"line_number":737,"context_line":"* Create versioned notification for instance.update notification"},{"line_number":738,"context_line":"* Create versioned notifications for nova.notification.send_api_fault type of"},{"line_number":739,"context_line":"  notifications"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_b186e011","line":739,"updated":"2015-11-06 20:50:56.000000000","message":"Will the work items be tracked anywhere like in launchpad or an etherpad? Just wondering if a statement to that effect and a link should go here. Not sure how it normally works, so ignore my comment if it doesn\u0027t apply :)","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"be441c054eab29d5880b62a9341796239e2fc7c9","unresolved":false,"context_lines":[{"line_number":736,"context_line":"  (e.g. keypair notifications) to serve as an example"},{"line_number":737,"context_line":"* Create versioned notification for instance.update notification"},{"line_number":738,"context_line":"* Create versioned notifications for nova.notification.send_api_fault type of"},{"line_number":739,"context_line":"  notifications"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_2fb01cf4","line":739,"in_reply_to":"da85f559_b186e011","updated":"2015-11-09 10:55:37.000000000","message":"Generally its on launchpad, for more details see:\nhttps://wiki.openstack.org/wiki/Nova/Process\n\nIf that doesn\u0027t cover it, let me know, and I will try update the doc.","commit_id":"19aa05e693979894da753962096485ecffca5223"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ce5d19464dc678d03c8e7cf4a91a322e7a26b46e","unresolved":false,"context_lines":[{"line_number":736,"context_line":"  (e.g. keypair notifications) to serve as an example"},{"line_number":737,"context_line":"* Create versioned notification for instance.update notification"},{"line_number":738,"context_line":"* Create versioned notifications for nova.notification.send_api_fault type of"},{"line_number":739,"context_line":"  notifications"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_ca461ebf","line":739,"in_reply_to":"da85f559_b186e011","updated":"2015-11-09 11:24:31.000000000","message":"We usually make sure that the Gerrit topic names are consistent over the whole patch series, that makes the reviews more easier.","commit_id":"19aa05e693979894da753962096485ecffca5223"}]}
