)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98b322e6efacbe2ffc7350b9c197d855d0ee91fb","unresolved":false,"context_lines":[{"line_number":10,"context_line":"are hardcoded. There is a possible confusion as the REST API uses"},{"line_number":11,"context_line":"\u0027nova-osapi_compute\u0027 while the notifications use \u0027nova-api\u0027"},{"line_number":12,"context_line":"as the name of the nova compute service binary."},{"line_number":13,"context_line":"To avoid possible mixing of then names a new enum is introduced"},{"line_number":14,"context_line":"in the notification code path with the valid values form"},{"line_number":15,"context_line":"notification perspective."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1f1a1f67_75341bfc","line":13,"range":{"start_line":13,"start_character":28,"end_line":13,"end_character":32},"updated":"2017-07-20 11:00:28.000000000","message":"these?","commit_id":"a22cd4022c3c325411f52ec7b80e695860191550"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2f88610e5a4a6d0875097286b2e6173d44da87fe","unresolved":false,"context_lines":[{"line_number":10,"context_line":"are hardcoded. There is a possible confusion as the REST API uses"},{"line_number":11,"context_line":"\u0027nova-osapi_compute\u0027 while the notifications use \u0027nova-api\u0027"},{"line_number":12,"context_line":"as the name of the nova compute service binary."},{"line_number":13,"context_line":"To avoid possible mixing of then names a new enum is introduced"},{"line_number":14,"context_line":"in the notification code path with the valid values form"},{"line_number":15,"context_line":"notification perspective."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ff346bd7_b35ee90f","line":13,"range":{"start_line":13,"start_character":28,"end_line":13,"end_character":32},"in_reply_to":"1f1a1f67_75341bfc","updated":"2017-07-25 15:39:18.000000000","message":"Done","commit_id":"a22cd4022c3c325411f52ec7b80e695860191550"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98b322e6efacbe2ffc7350b9c197d855d0ee91fb","unresolved":false,"context_lines":[{"line_number":14,"context_line":"in the notification code path with the valid values form"},{"line_number":15,"context_line":"notification perspective."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Also to make it clear that these names used in the notifications"},{"line_number":18,"context_line":"are not the official service names the field storing it is renamed"},{"line_number":19,"context_line":"from \u0027binary\u0027 to \u0027source\u0027. This renaming means that the version of"},{"line_number":20,"context_line":"NotificationPublisher ovo needed a major version bump. However this"},{"line_number":21,"context_line":"does not effect the consumers of the notifications as the"},{"line_number":22,"context_line":"NotificationPublisher is not directly serialized to the payload wire"},{"line_number":23,"context_line":"format. Instead the value  of the \u0027source\u0027 and \u0027host\u0027 fields are"},{"line_number":24,"context_line":"dumped into the publisher_id field of the notification envelope."},{"line_number":25,"context_line":"Therefore this patch does not introduce a backward incompatible"},{"line_number":26,"context_line":"change from the notification consumer perspective."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: Ia85a8b6c34a3efaf3ef509aab316294b9c0c2fd1"},{"line_number":29,"context_line":"Closes-Bug: #1696152"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1f1a1f67_b502b30a","line":26,"range":{"start_line":17,"start_character":0,"end_line":26,"end_character":50},"updated":"2017-07-20 11:00:28.000000000","message":"This really feels like a separate, precursor patch","commit_id":"a22cd4022c3c325411f52ec7b80e695860191550"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2f88610e5a4a6d0875097286b2e6173d44da87fe","unresolved":false,"context_lines":[{"line_number":14,"context_line":"in the notification code path with the valid values form"},{"line_number":15,"context_line":"notification perspective."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Also to make it clear that these names used in the notifications"},{"line_number":18,"context_line":"are not the official service names the field storing it is renamed"},{"line_number":19,"context_line":"from \u0027binary\u0027 to \u0027source\u0027. This renaming means that the version of"},{"line_number":20,"context_line":"NotificationPublisher ovo needed a major version bump. However this"},{"line_number":21,"context_line":"does not effect the consumers of the notifications as the"},{"line_number":22,"context_line":"NotificationPublisher is not directly serialized to the payload wire"},{"line_number":23,"context_line":"format. Instead the value  of the \u0027source\u0027 and \u0027host\u0027 fields are"},{"line_number":24,"context_line":"dumped into the publisher_id field of the notification envelope."},{"line_number":25,"context_line":"Therefore this patch does not introduce a backward incompatible"},{"line_number":26,"context_line":"change from the notification consumer perspective."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: Ia85a8b6c34a3efaf3ef509aab316294b9c0c2fd1"},{"line_number":29,"context_line":"Closes-Bug: #1696152"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ff346bd7_8dc4e760","line":26,"range":{"start_line":17,"start_character":0,"end_line":26,"end_character":50},"in_reply_to":"1f1a1f67_b502b30a","updated":"2017-07-25 15:39:18.000000000","message":"OK, make sense to split it. Done.","commit_id":"a22cd4022c3c325411f52ec7b80e695860191550"}],"nova/api/openstack/compute/hosts.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3e6dfbacb5177ddd3004e6ab72e51e850c265b8d","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        services \u003d self.api.service_get_all(context, filters\u003dfilters,"},{"line_number":90,"context_line":"                                            set_zones\u003dTrue, all_cells\u003dTrue)"},{"line_number":91,"context_line":"        hosts \u003d []"},{"line_number":92,"context_line":"        api_services \u003d (\u0027nova-osapi_compute\u0027, \u0027nova-ec2\u0027,"},{"line_number":93,"context_line":"                        fields.Binary.NOVA_METADATA)"},{"line_number":94,"context_line":"        for service in services:"},{"line_number":95,"context_line":"            if service.binary not in api_services:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_c471b10e","line":92,"range":{"start_line":92,"start_character":24,"end_line":92,"end_character":57},"updated":"2017-07-03 09:19:26.000000000","message":"Why are these two not \"converted\"?","commit_id":"64e5c8de227e0e29733142447bef461d8fa75149"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d82b36f1e30074c658ea873b2e7db4b30ddbc53a","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        services \u003d self.api.service_get_all(context, filters\u003dfilters,"},{"line_number":90,"context_line":"                                            set_zones\u003dTrue, all_cells\u003dTrue)"},{"line_number":91,"context_line":"        hosts \u003d []"},{"line_number":92,"context_line":"        api_services \u003d (\u0027nova-osapi_compute\u0027, \u0027nova-ec2\u0027,"},{"line_number":93,"context_line":"                        fields.Binary.NOVA_METADATA)"},{"line_number":94,"context_line":"        for service in services:"},{"line_number":95,"context_line":"            if service.binary not in api_services:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_4de5a8a7","line":92,"range":{"start_line":92,"start_character":24,"end_line":92,"end_character":57},"in_reply_to":"3f1d235d_c471b10e","updated":"2017-07-04 07:55:16.000000000","message":"I can transform nova-ec2 but is that still a thing?\n\nRegarding nova-osapi_compute the original intention was not to mix nova-osapi_compute and nova-compute so this is why I left it out. Now I re-read Matt\u0027s comment in the bug [1] and he ask for an enum that is used only in the notifications and not through the whole code base. There it is even more make sense to left these binaries out. \nI guess I overdid the replacements so let me propose a patchset where only the notification code path is affected.\n\n[1] https://bugs.launchpad.net/nova/+bug/1696152/comments/2","commit_id":"64e5c8de227e0e29733142447bef461d8fa75149"}],"nova/compute/utils.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"98b322e6efacbe2ffc7350b9c197d855d0ee91fb","unresolved":false,"context_lines":[{"line_number":357,"context_line":"            context\u003dcontext,"},{"line_number":358,"context_line":"            priority\u003dpriority,"},{"line_number":359,"context_line":"            publisher\u003dnotification_base.NotificationPublisher("},{"line_number":360,"context_line":"                host\u003dhost, binary\u003dbinary),"},{"line_number":361,"context_line":"            event_type\u003dnotification_base.EventType("},{"line_number":362,"context_line":"                    object\u003d\u0027instance\u0027,"},{"line_number":363,"context_line":"                    action\u003daction,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f1a1f67_b529939c","line":360,"range":{"start_line":360,"start_character":27,"end_line":360,"end_character":33},"updated":"2017-07-20 11:00:28.000000000","message":"why is this not changed to \u0027source\u0027?","commit_id":"a22cd4022c3c325411f52ec7b80e695860191550"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2f88610e5a4a6d0875097286b2e6173d44da87fe","unresolved":false,"context_lines":[{"line_number":357,"context_line":"            context\u003dcontext,"},{"line_number":358,"context_line":"            priority\u003dpriority,"},{"line_number":359,"context_line":"            publisher\u003dnotification_base.NotificationPublisher("},{"line_number":360,"context_line":"                host\u003dhost, binary\u003dbinary),"},{"line_number":361,"context_line":"            event_type\u003dnotification_base.EventType("},{"line_number":362,"context_line":"                    object\u003d\u0027instance\u0027,"},{"line_number":363,"context_line":"                    action\u003daction,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff346bd7_2dabbb89","line":360,"range":{"start_line":360,"start_character":27,"end_line":360,"end_character":33},"in_reply_to":"1f1a1f67_b529939c","updated":"2017-07-25 15:39:18.000000000","message":"Good point we need a clear renaming patch to spot this issues then an enumifaction patch","commit_id":"a22cd4022c3c325411f52ec7b80e695860191550"}],"nova/notifications/base.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a32fc8a970c0c9610391bc8578fbf283e4d2d7d7","unresolved":false,"context_lines":[{"line_number":252,"context_line":"    _send_versioned_instance_update(context, instance, payload, host, service)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"def _map_service_to_binary(service):"},{"line_number":256,"context_line":"    if service \u003d\u003d \u0027api\u0027:"},{"line_number":257,"context_line":"        binary \u003d fields.Binary.NOVA_API"},{"line_number":258,"context_line":"    elif service \u003d\u003d \u0027compute\u0027:"},{"line_number":259,"context_line":"        binary \u003d fields.Binary.NOVA_COMPUTE"},{"line_number":260,"context_line":"    else:"},{"line_number":261,"context_line":"        binary \u003d service"},{"line_number":262,"context_line":"    return binary"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"@rpc.if_notifications_enabled"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_58c1ef2d","line":262,"range":{"start_line":255,"start_character":0,"end_line":262,"end_character":17},"updated":"2017-07-03 20:49:24.000000000","message":"If everything goes through here for notifications, could we just change this method to raise an exception in the else case? In other words, enforce a whitelisted set of acceptable service values, so we\u0027d support nova-api and nova-compute right now. Maybe we need to also support nova-conductor? But nova-osapi_compute would fail.","commit_id":"64e5c8de227e0e29733142447bef461d8fa75149"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"792d236a9aa0e589b87624c3a273aa0abc23e9d9","unresolved":false,"context_lines":[{"line_number":252,"context_line":"    _send_versioned_instance_update(context, instance, payload, host, service)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"def _map_service_to_binary(service):"},{"line_number":256,"context_line":"    if service \u003d\u003d \u0027api\u0027:"},{"line_number":257,"context_line":"        binary \u003d fields.Binary.NOVA_API"},{"line_number":258,"context_line":"    elif service \u003d\u003d \u0027compute\u0027:"},{"line_number":259,"context_line":"        binary \u003d fields.Binary.NOVA_COMPUTE"},{"line_number":260,"context_line":"    else:"},{"line_number":261,"context_line":"        binary \u003d service"},{"line_number":262,"context_line":"    return binary"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"@rpc.if_notifications_enabled"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_687292e5","line":262,"range":{"start_line":255,"start_character":0,"end_line":262,"end_character":17},"in_reply_to":"3f1d235d_58c1ef2d","updated":"2017-07-04 10:38:28.000000000","message":"Only the instance.update notification goes through here. Gathering the data for that notification reuses the data gathering from the legacy instance.update. This means that there is some data like the binary name that needs to be translated to make it compatible with the names used in the versioned notifications.\n\nTo avoid confusion I moved this as an nested function to the function that only used this and improved the name a bit better. Also I made the impl a bit more generic.\n\nIf nova-osapi_compute is not accepted as this value will end up in the binary field of the NotificationPublisher which has the new Enum type.","commit_id":"64e5c8de227e0e29733142447bef461d8fa75149"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb35c4fafd316ace704336e5140128b981bc3e78","unresolved":false,"context_lines":[{"line_number":255,"context_line":"@rpc.if_notifications_enabled"},{"line_number":256,"context_line":"def _send_versioned_instance_update(context, instance, payload, host, service):"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def _map_legacy_service_to_binary(legacy_service):"},{"line_number":259,"context_line":"        if not legacy_service.startswith(\u0027nova-\u0027):"},{"line_number":260,"context_line":"            return \u0027nova-\u0027 + service"},{"line_number":261,"context_line":"        else:"},{"line_number":262,"context_line":"            return service"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    state_update \u003d instance_notification.InstanceStateUpdatePayload("},{"line_number":265,"context_line":"        old_state\u003dpayload.get(\u0027old_state\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_d4d8edef","line":262,"range":{"start_line":258,"start_character":4,"end_line":262,"end_character":26},"updated":"2017-07-05 15:45:10.000000000","message":"So I\u0027m guessing this why that one test changed from using \u0027conductor\u0027 to now using \u0027nova-conductor\u0027, which is a backward incompatible change to a legacy notification, isn\u0027t it?","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"29fbe87dd9e05abd6fab1a1f6ea524250f451794","unresolved":false,"context_lines":[{"line_number":255,"context_line":"@rpc.if_notifications_enabled"},{"line_number":256,"context_line":"def _send_versioned_instance_update(context, instance, payload, host, service):"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def _map_legacy_service_to_binary(legacy_service):"},{"line_number":259,"context_line":"        if not legacy_service.startswith(\u0027nova-\u0027):"},{"line_number":260,"context_line":"            return \u0027nova-\u0027 + service"},{"line_number":261,"context_line":"        else:"},{"line_number":262,"context_line":"            return service"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    state_update \u003d instance_notification.InstanceStateUpdatePayload("},{"line_number":265,"context_line":"        old_state\u003dpayload.get(\u0027old_state\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_723ea6c1","line":262,"range":{"start_line":258,"start_character":4,"end_line":262,"end_character":26},"in_reply_to":"3f1d235d_1a6b2f85","updated":"2017-07-06 11:57:35.000000000","message":"I filed a separate bug and split out this change to a separate patch. See https://review.openstack.org/#/c/480984/","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3e2f2bb8fcd0612644bc88b8bc1bd07c0ad4d2a4","unresolved":false,"context_lines":[{"line_number":255,"context_line":"@rpc.if_notifications_enabled"},{"line_number":256,"context_line":"def _send_versioned_instance_update(context, instance, payload, host, service):"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def _map_legacy_service_to_binary(legacy_service):"},{"line_number":259,"context_line":"        if not legacy_service.startswith(\u0027nova-\u0027):"},{"line_number":260,"context_line":"            return \u0027nova-\u0027 + service"},{"line_number":261,"context_line":"        else:"},{"line_number":262,"context_line":"            return service"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"    state_update \u003d instance_notification.InstanceStateUpdatePayload("},{"line_number":265,"context_line":"        old_state\u003dpayload.get(\u0027old_state\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_1a6b2f85","line":262,"range":{"start_line":258,"start_character":4,"end_line":262,"end_character":26},"in_reply_to":"3f1d235d_d4d8edef","updated":"2017-07-05 16:02:13.000000000","message":"Yes, the test changed due to this change. This change only affect the version instance-update. The legacy instance-update will still contain \u0027conductor\u0027 in the publisher_id.\n\nI consider this change as a bugfix that fix an inconsistency in the publisher_id field as other versioned notifications uses nova-condutor, nova-compute, nova-api in the publisher id, but instance-update used \u0027condutor\u0027 until now.\n\nI amended the commit message to document this. If you need a separate bug report about it then I can do that as well.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"}],"nova/notifications/objects/base.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb35c4fafd316ace704336e5140128b981bc3e78","unresolved":false,"context_lines":[{"line_number":139,"context_line":"class NotificationPublisher(NotificationObject):"},{"line_number":140,"context_line":"    # Version 1.0: Initial version"},{"line_number":141,"context_line":"    #         1.1: Type of the binary field changed from string to enum."},{"line_number":142,"context_line":"    #              The possible values are the same."},{"line_number":143,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_f42889e2","line":142,"range":{"start_line":142,"start_character":19,"end_line":142,"end_character":52},"updated":"2017-07-05 15:45:10.000000000","message":"This is not accurate. The field before was an unbounded string field, so the value could be whatever, but now it\u0027s bounded by the enum. I\u0027d probably just remove this part of the comment.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"29fbe87dd9e05abd6fab1a1f6ea524250f451794","unresolved":false,"context_lines":[{"line_number":139,"context_line":"class NotificationPublisher(NotificationObject):"},{"line_number":140,"context_line":"    # Version 1.0: Initial version"},{"line_number":141,"context_line":"    #         1.1: Type of the binary field changed from string to enum."},{"line_number":142,"context_line":"    #              The possible values are the same."},{"line_number":143,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_3234aedd","line":142,"range":{"start_line":142,"start_character":19,"end_line":142,"end_character":52},"in_reply_to":"3f1d235d_7a2a232c","updated":"2017-07-06 11:57:35.000000000","message":"Done","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3e2f2bb8fcd0612644bc88b8bc1bd07c0ad4d2a4","unresolved":false,"context_lines":[{"line_number":139,"context_line":"class NotificationPublisher(NotificationObject):"},{"line_number":140,"context_line":"    # Version 1.0: Initial version"},{"line_number":141,"context_line":"    #         1.1: Type of the binary field changed from string to enum."},{"line_number":142,"context_line":"    #              The possible values are the same."},{"line_number":143,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_7a2a232c","line":142,"range":{"start_line":142,"start_character":19,"end_line":142,"end_character":52},"in_reply_to":"3f1d235d_f42889e2","updated":"2017-07-05 16:02:13.000000000","message":"True, especially because of the condutor -\u003e nova-condutor change you pointed out.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3f93b83fb405e586508d61ca99a36963df1816f4","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    fields \u003d {"},{"line_number":146,"context_line":"        \u0027host\u0027: fields.StringField(nullable\u003dFalse),"},{"line_number":147,"context_line":"        \u0027binary\u0027: fields.NotificationBinaryField(nullable\u003dFalse),"},{"line_number":148,"context_line":"    }"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, host, binary):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_79cdbb64","line":147,"range":{"start_line":147,"start_character":9,"end_line":147,"end_character":15},"updated":"2017-07-04 13:28:10.000000000","message":"I\u0027m not sure why this field was called \u0027binary\u0027 and not \u0027service\u0027. The binaries are only wrappers around the services, after all. However, that\u0027s neither here nor there","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3e2f2bb8fcd0612644bc88b8bc1bd07c0ad4d2a4","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    fields \u003d {"},{"line_number":146,"context_line":"        \u0027host\u0027: fields.StringField(nullable\u003dFalse),"},{"line_number":147,"context_line":"        \u0027binary\u0027: fields.NotificationBinaryField(nullable\u003dFalse),"},{"line_number":148,"context_line":"    }"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, host, binary):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_fa987375","line":147,"range":{"start_line":147,"start_character":9,"end_line":147,"end_character":15},"in_reply_to":"3f1d235d_148545cf","updated":"2017-07-05 16:02:13.000000000","message":"Doing a major bump is not that hard in this particular case as this object is not directly serialize to the wire nor inherited from. There will be no need for compatibility code either.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb35c4fafd316ace704336e5140128b981bc3e78","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    fields \u003d {"},{"line_number":146,"context_line":"        \u0027host\u0027: fields.StringField(nullable\u003dFalse),"},{"line_number":147,"context_line":"        \u0027binary\u0027: fields.NotificationBinaryField(nullable\u003dFalse),"},{"line_number":148,"context_line":"    }"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, host, binary):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_148545cf","line":147,"range":{"start_line":147,"start_character":9,"end_line":147,"end_character":15},"in_reply_to":"3f1d235d_4b6106d3","updated":"2017-07-05 15:45:10.000000000","message":"As noted in the fields module, calling it a binary isn\u0027t really accurate when it\u0027s not the same as the binaries used for the services records in the db, which is part of the source of confusion here. We should maybe consider another name. gibi suggested \u0027source\u0027 in IRC but renaming a field in a minor version bump in an object isn\u0027t the right thing to do I don\u0027t think, that should be a major version bump to rename a field. We could add a new field, but then you still have to set the binary field here. If we continue to set the binary field, then it might make sense to leave the class name as NotificationBinaryField - even though that\u0027s confusing, as noted. I don\u0027t have a great solution.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d5afb86896d6a09b06ad511eee0890a904752dd7","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    fields \u003d {"},{"line_number":146,"context_line":"        \u0027host\u0027: fields.StringField(nullable\u003dFalse),"},{"line_number":147,"context_line":"        \u0027binary\u0027: fields.NotificationBinaryField(nullable\u003dFalse),"},{"line_number":148,"context_line":"    }"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, host, binary):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_4b6106d3","line":147,"range":{"start_line":147,"start_character":9,"end_line":147,"end_character":15},"in_reply_to":"3f1d235d_79cdbb64","updated":"2017-07-04 13:47:18.000000000","message":"Let\u0027s wait for Matt\u0027s opinion. Of course it is not hard to rename it if we agree.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"29fbe87dd9e05abd6fab1a1f6ea524250f451794","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    fields \u003d {"},{"line_number":146,"context_line":"        \u0027host\u0027: fields.StringField(nullable\u003dFalse),"},{"line_number":147,"context_line":"        \u0027binary\u0027: fields.NotificationBinaryField(nullable\u003dFalse),"},{"line_number":148,"context_line":"    }"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self, host, binary):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_92582231","line":147,"range":{"start_line":147,"start_character":9,"end_line":147,"end_character":15},"in_reply_to":"3f1d235d_fa987375","updated":"2017-07-06 11:57:35.000000000","message":"Done.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"}],"nova/objects/fields.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3e6dfbacb5177ddd3004e6ab72e51e850c265b8d","unresolved":false,"context_lines":[{"line_number":779,"context_line":"    ALL \u003d (START, END, ERROR)"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"class Binary(BaseNovaEnum):"},{"line_number":783,"context_line":"    NOVA_COMPUTE \u003d \u0027nova-compute\u0027"},{"line_number":784,"context_line":"    NOVA_API \u003d \u0027nova-api\u0027"},{"line_number":785,"context_line":"    NOVA_CONSOLE \u003d \u0027nova-console\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_a4f0f568","line":782,"range":{"start_line":782,"start_character":6,"end_line":782,"end_character":12},"updated":"2017-07-03 09:19:26.000000000","message":"Service might be a more appropriate name. The binaries are the scripts that wrap these services","commit_id":"64e5c8de227e0e29733142447bef461d8fa75149"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e787d403b13f8ba16b6a5c1567119b26466f3d8b","unresolved":false,"context_lines":[{"line_number":779,"context_line":"    ALL \u003d (START, END, ERROR)"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"class Binary(BaseNovaEnum):"},{"line_number":783,"context_line":"    NOVA_COMPUTE \u003d \u0027nova-compute\u0027"},{"line_number":784,"context_line":"    NOVA_API \u003d \u0027nova-api\u0027"},{"line_number":785,"context_line":"    NOVA_CONSOLE \u003d \u0027nova-console\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_d89cdf5e","line":782,"range":{"start_line":782,"start_character":6,"end_line":782,"end_character":12},"in_reply_to":"3f1d235d_a4f0f568","updated":"2017-07-03 20:46:47.000000000","message":"Yeah maybe rename, or provide a docstring explaining what these are. The binary for the API service is actually:\n\nnova-osapi_compute\n\nWhich isn\u0027t listed here, so it\u0027s confusing.","commit_id":"64e5c8de227e0e29733142447bef461d8fa75149"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"792d236a9aa0e589b87624c3a273aa0abc23e9d9","unresolved":false,"context_lines":[{"line_number":779,"context_line":"    ALL \u003d (START, END, ERROR)"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"class Binary(BaseNovaEnum):"},{"line_number":783,"context_line":"    NOVA_COMPUTE \u003d \u0027nova-compute\u0027"},{"line_number":784,"context_line":"    NOVA_API \u003d \u0027nova-api\u0027"},{"line_number":785,"context_line":"    NOVA_CONSOLE \u003d \u0027nova-console\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_a89c2a5d","line":782,"range":{"start_line":782,"start_character":6,"end_line":782,"end_character":12},"in_reply_to":"3f1d235d_d89cdf5e","updated":"2017-07-04 10:38:28.000000000","message":"Added a docstring and renamed  the enum to NotificationBinary to avoid confusing with the binary name on the REST API","commit_id":"64e5c8de227e0e29733142447bef461d8fa75149"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3e6dfbacb5177ddd3004e6ab72e51e850c265b8d","unresolved":false,"context_lines":[{"line_number":781,"context_line":""},{"line_number":782,"context_line":"class Binary(BaseNovaEnum):"},{"line_number":783,"context_line":"    NOVA_COMPUTE \u003d \u0027nova-compute\u0027"},{"line_number":784,"context_line":"    NOVA_API \u003d \u0027nova-api\u0027"},{"line_number":785,"context_line":"    NOVA_CONSOLE \u003d \u0027nova-console\u0027"},{"line_number":786,"context_line":"    NOVA_CONSOLEAUTH \u003d \u0027nova-consoleauth\u0027"},{"line_number":787,"context_line":"    NOVA_CONDUCTOR \u003d \u0027nova-conductor\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_44d481bd","line":784,"range":{"start_line":784,"start_character":4,"end_line":784,"end_character":9},"updated":"2017-07-03 09:19:26.000000000","message":"nit: All these \u0027NOVA_\u0027 prefixes are probably unnecessary","commit_id":"64e5c8de227e0e29733142447bef461d8fa75149"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"792d236a9aa0e589b87624c3a273aa0abc23e9d9","unresolved":false,"context_lines":[{"line_number":781,"context_line":""},{"line_number":782,"context_line":"class Binary(BaseNovaEnum):"},{"line_number":783,"context_line":"    NOVA_COMPUTE \u003d \u0027nova-compute\u0027"},{"line_number":784,"context_line":"    NOVA_API \u003d \u0027nova-api\u0027"},{"line_number":785,"context_line":"    NOVA_CONSOLE \u003d \u0027nova-console\u0027"},{"line_number":786,"context_line":"    NOVA_CONSOLEAUTH \u003d \u0027nova-consoleauth\u0027"},{"line_number":787,"context_line":"    NOVA_CONDUCTOR \u003d \u0027nova-conductor\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f1d235d_6879722d","line":784,"range":{"start_line":784,"start_character":4,"end_line":784,"end_character":9},"in_reply_to":"3f1d235d_44d481bd","updated":"2017-07-04 10:38:28.000000000","message":"Done","commit_id":"64e5c8de227e0e29733142447bef461d8fa75149"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb35c4fafd316ace704336e5140128b981bc3e78","unresolved":false,"context_lines":[{"line_number":779,"context_line":"    ALL \u003d (START, END, ERROR)"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"class NotificationBinary(BaseNovaEnum):"},{"line_number":783,"context_line":"    \"\"\"Represents possible nova binary names in notification payload."},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"    The publisher_id field of the nova notifications consists of the name of"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_94fcb5b5","line":782,"range":{"start_line":782,"start_character":6,"end_line":782,"end_character":24},"updated":"2017-07-05 15:45:10.000000000","message":"Per IRC conversation, this is confusing to call it binary, since nova-api isn\u0027t a valid binary in the nova.services table in the database - the actual binary for nova-api is \"nova-osapi_compute\", for whatever reason. So we should probably think of another name here.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3e2f2bb8fcd0612644bc88b8bc1bd07c0ad4d2a4","unresolved":false,"context_lines":[{"line_number":779,"context_line":"    ALL \u003d (START, END, ERROR)"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"class NotificationBinary(BaseNovaEnum):"},{"line_number":783,"context_line":"    \"\"\"Represents possible nova binary names in notification payload."},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"    The publisher_id field of the nova notifications consists of the name of"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_fa719345","line":782,"range":{"start_line":782,"start_character":6,"end_line":782,"end_character":24},"in_reply_to":"3f1d235d_94fcb5b5","updated":"2017-07-05 16:02:13.000000000","message":"Let\u0027s try NotificationSource","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"29fbe87dd9e05abd6fab1a1f6ea524250f451794","unresolved":false,"context_lines":[{"line_number":779,"context_line":"    ALL \u003d (START, END, ERROR)"},{"line_number":780,"context_line":""},{"line_number":781,"context_line":""},{"line_number":782,"context_line":"class NotificationBinary(BaseNovaEnum):"},{"line_number":783,"context_line":"    \"\"\"Represents possible nova binary names in notification payload."},{"line_number":784,"context_line":""},{"line_number":785,"context_line":"    The publisher_id field of the nova notifications consists of the name of"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_d27b3a89","line":782,"range":{"start_line":782,"start_character":6,"end_line":782,"end_character":24},"in_reply_to":"3f1d235d_fa719345","updated":"2017-07-06 11:57:35.000000000","message":"Done","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb35c4fafd316ace704336e5140128b981bc3e78","unresolved":false,"context_lines":[{"line_number":787,"context_line":"    The below values are the ones that is used in every notification. Please"},{"line_number":788,"context_line":"    note that on the REST API the nova-compute service binary is called"},{"line_number":789,"context_line":"    nova-osapi_compute. This is not reflected here as notifications always used"},{"line_number":790,"context_line":"    the name nova-compute instead."},{"line_number":791,"context_line":"    \"\"\""},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    COMPUTE \u003d \u0027nova-compute\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_142ae52a","line":790,"range":{"start_line":790,"start_character":13,"end_line":790,"end_character":26},"updated":"2017-07-05 15:45:10.000000000","message":"I think you mean \u0027nova-api\u0027 here.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3e2f2bb8fcd0612644bc88b8bc1bd07c0ad4d2a4","unresolved":false,"context_lines":[{"line_number":787,"context_line":"    The below values are the ones that is used in every notification. Please"},{"line_number":788,"context_line":"    note that on the REST API the nova-compute service binary is called"},{"line_number":789,"context_line":"    nova-osapi_compute. This is not reflected here as notifications always used"},{"line_number":790,"context_line":"    the name nova-compute instead."},{"line_number":791,"context_line":"    \"\"\""},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    COMPUTE \u003d \u0027nova-compute\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_9a817ffe","line":790,"range":{"start_line":790,"start_character":13,"end_line":790,"end_character":26},"in_reply_to":"3f1d235d_142ae52a","updated":"2017-07-05 16:02:13.000000000","message":"True. :)","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"29fbe87dd9e05abd6fab1a1f6ea524250f451794","unresolved":false,"context_lines":[{"line_number":787,"context_line":"    The below values are the ones that is used in every notification. Please"},{"line_number":788,"context_line":"    note that on the REST API the nova-compute service binary is called"},{"line_number":789,"context_line":"    nova-osapi_compute. This is not reflected here as notifications always used"},{"line_number":790,"context_line":"    the name nova-compute instead."},{"line_number":791,"context_line":"    \"\"\""},{"line_number":792,"context_line":""},{"line_number":793,"context_line":"    COMPUTE \u003d \u0027nova-compute\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_32626ed9","line":790,"range":{"start_line":790,"start_character":13,"end_line":790,"end_character":26},"in_reply_to":"3f1d235d_9a817ffe","updated":"2017-07-06 11:57:35.000000000","message":"Done","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"}],"nova/tests/functional/notification_sample_tests/test_instance.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cb35c4fafd316ace704336e5140128b981bc3e78","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        # rest is from the nova-compute. To keep the test simpler"},{"line_number":174,"context_line":"        # assert this fact and then modify the publisher_id of the"},{"line_number":175,"context_line":"        # first and eighth notification to match the template"},{"line_number":176,"context_line":"        self.assertEqual(\u0027nova-conductor:fake-mini\u0027,"},{"line_number":177,"context_line":"                         instance_updates[0][\u0027publisher_id\u0027])"},{"line_number":178,"context_line":"        self.assertEqual(\u0027nova-api:fake-mini\u0027,"},{"line_number":179,"context_line":"                         instance_updates[7][\u0027publisher_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_f4cc096b","line":176,"updated":"2017-07-05 15:45:10.000000000","message":"This seems scary. Seems like a side effect of the _map_legacy_service_to_binary change.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3e2f2bb8fcd0612644bc88b8bc1bd07c0ad4d2a4","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        # rest is from the nova-compute. To keep the test simpler"},{"line_number":174,"context_line":"        # assert this fact and then modify the publisher_id of the"},{"line_number":175,"context_line":"        # first and eighth notification to match the template"},{"line_number":176,"context_line":"        self.assertEqual(\u0027nova-conductor:fake-mini\u0027,"},{"line_number":177,"context_line":"                         instance_updates[0][\u0027publisher_id\u0027])"},{"line_number":178,"context_line":"        self.assertEqual(\u0027nova-api:fake-mini\u0027,"},{"line_number":179,"context_line":"                         instance_updates[7][\u0027publisher_id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f1d235d_faa633ab","line":176,"in_reply_to":"3f1d235d_f4cc096b","updated":"2017-07-05 16:02:13.000000000","message":"See my answer in _map_legacy_service_to_binary. I think this is a bugfix actually.","commit_id":"43c9e3a79a80841fb6f11acdda6b2dd46813919c"}]}
