)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"281db3dccb6b709916203655c67766cca377d775","unresolved":false,"context_lines":[{"line_number":13,"context_line":"is available) and also send the service.delete notification after the"},{"line_number":14,"context_line":"service is deleted."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implement blueprint: service-create-destroy-notification"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Change-Id: I955d98f9fd4b121f98e172e5ab30eb668a24006d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"ff82abbf_28450f71","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":56},"updated":"2017-11-20 05:32:48.000000000","message":"nit: Implements: blueprint service-create-destroy-notification","commit_id":"3c5f7421d495a3d587d811c185b51c5571c16770"}],"doc/notification_samples/service-create.json":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73dce83b3a58e7218167ea106b4092ed25dbe9d7","unresolved":false,"context_lines":[{"line_number":13,"context_line":"            \"disabled_reason\": null,"},{"line_number":14,"context_line":"            \"report_count\": 0,"},{"line_number":15,"context_line":"            \"forced_down\": false,"},{"line_number":16,"context_line":"            \"version\": 23,"},{"line_number":17,"context_line":"            \"availability_zone\": null,"},{"line_number":18,"context_line":"            \"uuid\": \"fa69c544-906b-4a6a-a9c6-c1f7a8078c73\""},{"line_number":19,"context_line":"        }"}],"source_content_type":"application/json","patch_set":7,"id":"ff82abbf_2bdfa23a","line":16,"range":{"start_line":16,"start_character":23,"end_line":16,"end_character":25},"updated":"2017-11-27 16:04:36.000000000","message":"We could fix this in a follow up, but this number is going to change over time which means this sample is going to need to be updated. We should use a variable to replace this instead, like in the GET /versions sample:\n\nhttps://github.com/openstack/nova/blob/master/nova/tests/functional/api_sample_tests/api_samples/versions/v21-version-get-resp.json.tpl#L22","commit_id":"b4e2b56ea54ab70e3678ddff82098a855596847e"}],"nova/notifications/objects/base.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73dce83b3a58e7218167ea106b4092ed25dbe9d7","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    def from_service_obj(cls, service):"},{"line_number":165,"context_line":"        # nova-osapi_compute binary name needs to be translated to nova-api"},{"line_number":166,"context_line":"        # notification source enum value."},{"line_number":167,"context_line":"        source \u003d (\"nova-api\""},{"line_number":168,"context_line":"                  if service.binary \u003d\u003d \"nova-osapi_compute\""},{"line_number":169,"context_line":"                  else service.binary)"},{"line_number":170,"context_line":"        return cls(host\u003dservice.host, source\u003dsource)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_4b8b061e","line":169,"range":{"start_line":167,"start_character":8,"end_line":169,"end_character":38},"updated":"2017-11-27 16:04:36.000000000","message":"nit: this little utility could be moved into NotificationSource.","commit_id":"b4e2b56ea54ab70e3678ddff82098a855596847e"}],"nova/objects/fields.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"64304bc1ad57f37ae389794be7a4ed02ef90f668","unresolved":false,"context_lines":[{"line_number":801,"context_line":"    CONDUCTOR \u003d \u0027nova-conductor\u0027"},{"line_number":802,"context_line":"    SCHEDULER \u003d \u0027nova-scheduler\u0027"},{"line_number":803,"context_line":"    NETWORK \u003d \u0027nova-network\u0027"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    ALL \u003d (API, COMPUTE, CONDUCTOR, SCHEDULER, NETWORK)"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_efe0f5fc","line":804,"updated":"2017-11-14 15:20:40.000000000","message":"Based on the test results you have to add couple of other sources as well.","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"28030cbc74cd867386a81f32558232014649afb9","unresolved":false,"context_lines":[{"line_number":801,"context_line":"    CONDUCTOR \u003d \u0027nova-conductor\u0027"},{"line_number":802,"context_line":"    SCHEDULER \u003d \u0027nova-scheduler\u0027"},{"line_number":803,"context_line":"    NETWORK \u003d \u0027nova-network\u0027"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    ALL \u003d (API, COMPUTE, CONDUCTOR, SCHEDULER, NETWORK)"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_b587da0f","line":804,"in_reply_to":"1f485f77_efe0f5fc","updated":"2017-11-15 03:06:07.000000000","message":"Done","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"64304bc1ad57f37ae389794be7a4ed02ef90f668","unresolved":false,"context_lines":[{"line_number":802,"context_line":"    SCHEDULER \u003d \u0027nova-scheduler\u0027"},{"line_number":803,"context_line":"    NETWORK \u003d \u0027nova-network\u0027"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    ALL \u003d (API, COMPUTE, CONDUCTOR, SCHEDULER, NETWORK)"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"class NotificationAction(BaseNovaEnum):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_2f64cdb8","line":805,"updated":"2017-11-14 15:20:40.000000000","message":"I just note it for the reviews that we need to add new notification sources as this patch emits notification for _every_ service creation which means we need all this new source values. \n\nAn alternative would be to only send create notification for nova-compute service creation but the proposal in the spec was not limited to this and it could be beneficial to see when a new nova-api or a new nova-scheduler service is added to the control plane.","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"64304bc1ad57f37ae389794be7a4ed02ef90f668","unresolved":false,"context_lines":[{"line_number":803,"context_line":"    NETWORK \u003d \u0027nova-network\u0027"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"    ALL \u003d (API, COMPUTE, CONDUCTOR, SCHEDULER, NETWORK)"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"class NotificationAction(BaseNovaEnum):"},{"line_number":809,"context_line":"    UPDATE \u003d \u0027update\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_b2aa62cf","line":806,"updated":"2017-11-14 15:20:40.000000000","message":"As this enum is used in the NotificationPublisher class you have to bump the version of that ovo.","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"9f5a8546343d58c3b2d7747f0fdb69df92e24ab3","unresolved":false,"context_lines":[{"line_number":800,"context_line":"    API \u003d \u0027nova-api\u0027"},{"line_number":801,"context_line":"    CONDUCTOR \u003d \u0027nova-conductor\u0027"},{"line_number":802,"context_line":"    SCHEDULER \u003d \u0027nova-scheduler\u0027"},{"line_number":803,"context_line":"    NETWORK \u003d \u0027nova-network\u0027"},{"line_number":804,"context_line":"    CONSOLEAUTH \u003d \u0027nova-consoleauth\u0027"},{"line_number":805,"context_line":"    CELLS \u003d \u0027nova-cells\u0027"},{"line_number":806,"context_line":"    CONSOLE \u003d \u0027nova-console\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f485f77_90af4ce2","line":803,"range":{"start_line":803,"start_character":3,"end_line":803,"end_character":28},"updated":"2017-11-15 03:32:15.000000000","message":"should we still add this?","commit_id":"7a988d5533e0d167eae15af9d02255b75ca10e1d"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"e5203f80a710679b7628cb9b5bd83d98339e112a","unresolved":false,"context_lines":[{"line_number":800,"context_line":"    API \u003d \u0027nova-api\u0027"},{"line_number":801,"context_line":"    CONDUCTOR \u003d \u0027nova-conductor\u0027"},{"line_number":802,"context_line":"    SCHEDULER \u003d \u0027nova-scheduler\u0027"},{"line_number":803,"context_line":"    NETWORK \u003d \u0027nova-network\u0027"},{"line_number":804,"context_line":"    CONSOLEAUTH \u003d \u0027nova-consoleauth\u0027"},{"line_number":805,"context_line":"    CELLS \u003d \u0027nova-cells\u0027"},{"line_number":806,"context_line":"    CONSOLE \u003d \u0027nova-console\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f485f77_5022f401","line":803,"range":{"start_line":803,"start_character":3,"end_line":803,"end_character":28},"in_reply_to":"1f485f77_90af4ce2","updated":"2017-11-15 04:00:26.000000000","message":"There are nova-network related tests, without this the tests will fail, it could be removed if nova-network code is removed in future","commit_id":"7a988d5533e0d167eae15af9d02255b75ca10e1d"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"b077826a3953852d4fecb397813d20eedd5e622f","unresolved":false,"context_lines":[{"line_number":800,"context_line":"    API \u003d \u0027nova-api\u0027"},{"line_number":801,"context_line":"    CONDUCTOR \u003d \u0027nova-conductor\u0027"},{"line_number":802,"context_line":"    SCHEDULER \u003d \u0027nova-scheduler\u0027"},{"line_number":803,"context_line":"    NETWORK \u003d \u0027nova-network\u0027"},{"line_number":804,"context_line":"    CONSOLEAUTH \u003d \u0027nova-consoleauth\u0027"},{"line_number":805,"context_line":"    CELLS \u003d \u0027nova-cells\u0027"},{"line_number":806,"context_line":"    CONSOLE \u003d \u0027nova-console\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_2a4a837f","line":803,"range":{"start_line":803,"start_character":3,"end_line":803,"end_character":28},"updated":"2017-11-23 06:26:23.000000000","message":"Add a TODO or Note here?","commit_id":"ba146f569f27c32c35b54710f3f8923b71fa041b"}],"nova/objects/service.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"64304bc1ad57f37ae389794be7a4ed02ef90f668","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def _send_notification(self, action):"},{"line_number":380,"context_line":"        payload \u003d service_notification.ServiceStatusPayload(self)"},{"line_number":381,"context_line":"        # Always use nova-api for notifications publisher"},{"line_number":382,"context_line":"        if self.binary \u003d\u003d \"nova-osapi_compute\":"},{"line_number":383,"context_line":"            publisher \u003d notification.NotificationPublisher("},{"line_number":384,"context_line":"                self.host, \"nova-api\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_6f8d257a","line":381,"updated":"2017-11-14 15:20:40.000000000","message":"I suggest to note instead that nova-osapi_compute binary name needs to be translated to nova-api notification source enum value.","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"28030cbc74cd867386a81f32558232014649afb9","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def _send_notification(self, action):"},{"line_number":380,"context_line":"        payload \u003d service_notification.ServiceStatusPayload(self)"},{"line_number":381,"context_line":"        # Always use nova-api for notifications publisher"},{"line_number":382,"context_line":"        if self.binary \u003d\u003d \"nova-osapi_compute\":"},{"line_number":383,"context_line":"            publisher \u003d notification.NotificationPublisher("},{"line_number":384,"context_line":"                self.host, \"nova-api\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_95af3ee2","line":381,"in_reply_to":"1f485f77_6f8d257a","updated":"2017-11-15 03:06:07.000000000","message":"Done","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"64304bc1ad57f37ae389794be7a4ed02ef90f668","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def _send_notification(self, action):"},{"line_number":380,"context_line":"        payload \u003d service_notification.ServiceStatusPayload(self)"},{"line_number":381,"context_line":"        # Always use nova-api for notifications publisher"},{"line_number":382,"context_line":"        if self.binary \u003d\u003d \"nova-osapi_compute\":"},{"line_number":383,"context_line":"            publisher \u003d notification.NotificationPublisher("},{"line_number":384,"context_line":"                self.host, \"nova-api\")"},{"line_number":385,"context_line":"        else:"},{"line_number":386,"context_line":"            publisher \u003d notification.NotificationPublisher.from_service_obj("},{"line_number":387,"context_line":"                self)"},{"line_number":388,"context_line":"        service_notification.ServiceStatusNotification("},{"line_number":389,"context_line":"            publisher\u003dpublisher,"},{"line_number":390,"context_line":"            event_type\u003dnotification.EventType("}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_eff6b5f9","line":387,"range":{"start_line":381,"start_character":1,"end_line":387,"end_character":21},"updated":"2017-11-14 15:20:40.000000000","message":"I suggest to move this logic to the from_service_obj method.","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"28030cbc74cd867386a81f32558232014649afb9","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"    def _send_notification(self, action):"},{"line_number":380,"context_line":"        payload \u003d service_notification.ServiceStatusPayload(self)"},{"line_number":381,"context_line":"        # Always use nova-api for notifications publisher"},{"line_number":382,"context_line":"        if self.binary \u003d\u003d \"nova-osapi_compute\":"},{"line_number":383,"context_line":"            publisher \u003d notification.NotificationPublisher("},{"line_number":384,"context_line":"                self.host, \"nova-api\")"},{"line_number":385,"context_line":"        else:"},{"line_number":386,"context_line":"            publisher \u003d notification.NotificationPublisher.from_service_obj("},{"line_number":387,"context_line":"                self)"},{"line_number":388,"context_line":"        service_notification.ServiceStatusNotification("},{"line_number":389,"context_line":"            publisher\u003dpublisher,"},{"line_number":390,"context_line":"            event_type\u003dnotification.EventType("}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_95c61e9a","line":387,"range":{"start_line":381,"start_character":1,"end_line":387,"end_character":21},"in_reply_to":"1f485f77_eff6b5f9","updated":"2017-11-15 03:06:07.000000000","message":"Done","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"}],"nova/tests/functional/notification_sample_tests/test_aggregate.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"282f077d195e193ece3afebb9f2c280995f6ed0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1f485f77_1e3126ed","updated":"2017-11-15 09:49:42.000000000","message":"These changes caused by the fact that now service.create is emitted for the services started in the functional env. I suggest to call a fake_notifier.reset() at the end of NotificationSampleTestBase.setUp() [1] or move the stubbing of the notifier [2] to the end to avoid this repetitive changes.\n\n[1] https://github.com/openstack/nova/blob/008bc4065da3fe972f1e7f3bc26cf4ca546059db/nova/tests/functional/notification_sample_tests/notification_sample_base.py#L89\n\n[2] https://github.com/openstack/nova/blob/008bc4065da3fe972f1e7f3bc26cf4ca546059db/nova/tests/functional/notification_sample_tests/notification_sample_base.py#L76-L77","commit_id":"128e3bf63671051652f23bdec33dda487de667f4"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"98218a1c35e18bdb8db1797aef94a6648e6f956e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1f485f77_db333c61","in_reply_to":"1f485f77_1e3126ed","updated":"2017-11-19 09:49:55.000000000","message":"Done","commit_id":"128e3bf63671051652f23bdec33dda487de667f4"}],"nova/tests/functional/notification_sample_tests/test_exception_notification.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"282f077d195e193ece3afebb9f2c280995f6ed0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1f485f77_9e5ab627","updated":"2017-11-15 09:49:42.000000000","message":"same comment as in test_aggregate.py","commit_id":"128e3bf63671051652f23bdec33dda487de667f4"}],"nova/tests/functional/notification_sample_tests/test_flavor.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"282f077d195e193ece3afebb9f2c280995f6ed0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1f485f77_5e3c3ebe","updated":"2017-11-15 09:49:42.000000000","message":"same comment as in test_aggregate.py","commit_id":"128e3bf63671051652f23bdec33dda487de667f4"}],"nova/tests/functional/notification_sample_tests/test_keypair.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"282f077d195e193ece3afebb9f2c280995f6ed0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1f485f77_3e4bc259","updated":"2017-11-15 09:49:42.000000000","message":"same comment as in test_aggregate.py","commit_id":"128e3bf63671051652f23bdec33dda487de667f4"}],"nova/tests/functional/notification_sample_tests/test_server_group.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"282f077d195e193ece3afebb9f2c280995f6ed0d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1f485f77_1e46c650","updated":"2017-11-15 09:49:42.000000000","message":"same comment as in test_aggregate.py","commit_id":"128e3bf63671051652f23bdec33dda487de667f4"}],"nova/tests/functional/notification_sample_tests/test_service.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"64304bc1ad57f37ae389794be7a4ed02ef90f668","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        # This just extends the generic _verify_notification to default the"},{"line_number":36,"context_line":"        # service version to the current service version to avoid sample update"},{"line_number":37,"context_line":"        # after every service version bump."},{"line_number":38,"context_line":"        if \u0027version\u0027 not in replacements:"},{"line_number":39,"context_line":"            replacements[\u0027version\u0027] \u003d service.SERVICE_VERSION"},{"line_number":40,"context_line":"        base \u003d super(TestServiceUpdateNotificationSamplev2_52, self)"},{"line_number":41,"context_line":"        base._verify_notification(sample_file_name, replacements, actual)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_5229ee87","line":39,"range":{"start_line":38,"start_character":1,"end_line":39,"end_character":61},"updated":"2017-11-14 15:20:40.000000000","message":"You need this in your TestServiceNotificationSample class as well to avoid the sample file update after service version bump. I suggest to create a common base class for service tests and move this extension there.","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"28030cbc74cd867386a81f32558232014649afb9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        # This just extends the generic _verify_notification to default the"},{"line_number":36,"context_line":"        # service version to the current service version to avoid sample update"},{"line_number":37,"context_line":"        # after every service version bump."},{"line_number":38,"context_line":"        if \u0027version\u0027 not in replacements:"},{"line_number":39,"context_line":"            replacements[\u0027version\u0027] \u003d service.SERVICE_VERSION"},{"line_number":40,"context_line":"        base \u003d super(TestServiceUpdateNotificationSamplev2_52, self)"},{"line_number":41,"context_line":"        base._verify_notification(sample_file_name, replacements, actual)"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_55f1c6cc","line":39,"range":{"start_line":38,"start_character":1,"end_line":39,"end_character":61},"in_reply_to":"1f485f77_5229ee87","updated":"2017-11-15 03:06:07.000000000","message":"Done","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"64304bc1ad57f37ae389794be7a4ed02ef90f668","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[4])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class TestServiceNotificationSample("},{"line_number":156,"context_line":"        notification_sample_base.NotificationSampleTestBase):"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test_service_create(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_cf609904","line":155,"range":{"start_line":155,"start_character":6,"end_line":155,"end_character":35},"updated":"2017-11-14 15:20:40.000000000","message":"This could be merged with the above class but then you have to rename that so I\u0027m OK to keep this as separate.","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"28030cbc74cd867386a81f32558232014649afb9","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[4])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"class TestServiceNotificationSample("},{"line_number":156,"context_line":"        notification_sample_base.NotificationSampleTestBase):"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test_service_create(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_b5b91aea","line":155,"range":{"start_line":155,"start_character":6,"end_line":155,"end_character":35},"in_reply_to":"1f485f77_cf609904","updated":"2017-11-15 03:06:07.000000000","message":"ok","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"281db3dccb6b709916203655c67766cca377d775","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            \u0027service-delete\u0027,"},{"line_number":167,"context_line":"            replacements\u003d{"},{"line_number":168,"context_line":"                \u0027uuid\u0027:"},{"line_number":169,"context_line":"                notification_sample_base.NotificationSampleTestBase.ANY},"},{"line_number":170,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[1])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_0885abad","line":169,"range":{"start_line":169,"start_character":16,"end_line":169,"end_character":71},"updated":"2017-11-20 05:32:48.000000000","message":"It can be \u0027compute2_service_id\u0027.","commit_id":"3c5f7421d495a3d587d811c185b51c5571c16770"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e4999f4a7c5b243202c6f97eb8db09fc3bce618c","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            \u0027service-delete\u0027,"},{"line_number":167,"context_line":"            replacements\u003d{"},{"line_number":168,"context_line":"                \u0027uuid\u0027:"},{"line_number":169,"context_line":"                notification_sample_base.NotificationSampleTestBase.ANY},"},{"line_number":170,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[1])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_cf6c7b38","line":169,"range":{"start_line":169,"start_character":16,"end_line":169,"end_character":71},"in_reply_to":"ff82abbf_0885abad","updated":"2017-11-21 16:05:06.000000000","message":"+1","commit_id":"3c5f7421d495a3d587d811c185b51c5571c16770"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"5f163f8c9230ec71760f62834d8ecd984e6cc41a","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            \u0027service-delete\u0027,"},{"line_number":167,"context_line":"            replacements\u003d{"},{"line_number":168,"context_line":"                \u0027uuid\u0027:"},{"line_number":169,"context_line":"                notification_sample_base.NotificationSampleTestBase.ANY},"},{"line_number":170,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[1])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_caf997c8","line":169,"range":{"start_line":169,"start_character":16,"end_line":169,"end_character":71},"in_reply_to":"ff82abbf_0885abad","updated":"2017-11-23 03:36:29.000000000","message":"Done","commit_id":"3c5f7421d495a3d587d811c185b51c5571c16770"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1eceec66737494f204b241b33dffc306cdb03866","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        body \u003d {\u0027host\u0027: \u0027host1\u0027,"},{"line_number":59,"context_line":"                \u0027binary\u0027: \u0027nova-compute\u0027}"},{"line_number":60,"context_line":"        self.admin_api.api_put(\u0027os-services/enable\u0027, body)"},{"line_number":61,"context_line":"        self._verify_notification("},{"line_number":62,"context_line":"            \u0027service-update\u0027,"},{"line_number":63,"context_line":"            replacements\u003d{\u0027uuid\u0027: self.service_uuid})"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ff82abbf_f381f34b","line":61,"updated":"2017-11-23 08:48:06.000000000","message":"these reformatting seems unnecessary.","commit_id":"ba146f569f27c32c35b54710f3f8923b71fa041b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73dce83b3a58e7218167ea106b4092ed25dbe9d7","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        self.compute2 \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host2\u0027)"},{"line_number":146,"context_line":"        self._verify_notification("},{"line_number":147,"context_line":"            \u0027service-create\u0027,"},{"line_number":148,"context_line":"            replacements\u003d{"},{"line_number":149,"context_line":"                \u0027uuid\u0027:"},{"line_number":150,"context_line":"                notification_sample_base.NotificationSampleTestBase.ANY})"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_service_destroy(self):"},{"line_number":153,"context_line":"        self.compute2 \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host2\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_6b312a5a","line":150,"range":{"start_line":148,"start_character":12,"end_line":150,"end_character":73},"updated":"2017-11-27 16:04:36.000000000","message":"We should always replace the version in the sample so we don\u0027t have to update that every time we bump the compute RPC API version, e.g.:\n\nhttps://github.com/openstack/nova/blob/master/nova/tests/functional/api_sample_tests/test_versions.py#L42","commit_id":"b4e2b56ea54ab70e3678ddff82098a855596847e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"68d0318d82b20a2107b564c99799a33c85d6d220","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        self.compute2 \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host2\u0027)"},{"line_number":146,"context_line":"        self._verify_notification("},{"line_number":147,"context_line":"            \u0027service-create\u0027,"},{"line_number":148,"context_line":"            replacements\u003d{"},{"line_number":149,"context_line":"                \u0027uuid\u0027:"},{"line_number":150,"context_line":"                notification_sample_base.NotificationSampleTestBase.ANY})"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_service_destroy(self):"},{"line_number":153,"context_line":"        self.compute2 \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host2\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_0eb50c7e","line":150,"range":{"start_line":148,"start_character":12,"end_line":150,"end_character":73},"in_reply_to":"ff82abbf_6b312a5a","updated":"2017-11-27 16:39:32.000000000","message":"Oh I guess this is already handled in _verify_notification.\n\nAnd https://github.com/openstack/nova/blob/master/nova/tests/functional/api_sample_tests/test_versions.py#L42 was the wrong version anyway.","commit_id":"b4e2b56ea54ab70e3678ddff82098a855596847e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73dce83b3a58e7218167ea106b4092ed25dbe9d7","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def test_service_destroy(self):"},{"line_number":153,"context_line":"        self.compute2 \u003d self.start_service(\u0027compute\u0027, host\u003d\u0027host2\u0027)"},{"line_number":154,"context_line":"        compute2_service_id \u003d self.admin_api.get_services("},{"line_number":155,"context_line":"            host\u003dself.compute2.host, binary\u003d\u0027nova-compute\u0027)[0][\u0027id\u0027]"},{"line_number":156,"context_line":"        self.admin_api.api_delete(\u0027os-services/%s\u0027 % compute2_service_id)"},{"line_number":157,"context_line":"        self._verify_notification("},{"line_number":158,"context_line":"            \u0027service-delete\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_2b8562cf","line":155,"range":{"start_line":154,"start_character":8,"end_line":155,"end_character":68},"updated":"2017-11-27 16:04:36.000000000","message":"OK this only works because NotificationSampleTestBase passes \u0027latest\u0027 as the microversion which is why you get a uuid back in the response. I was trying to figure out how this was working by default.","commit_id":"b4e2b56ea54ab70e3678ddff82098a855596847e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73dce83b3a58e7218167ea106b4092ed25dbe9d7","unresolved":false,"context_lines":[{"line_number":156,"context_line":"        self.admin_api.api_delete(\u0027os-services/%s\u0027 % compute2_service_id)"},{"line_number":157,"context_line":"        self._verify_notification("},{"line_number":158,"context_line":"            \u0027service-delete\u0027,"},{"line_number":159,"context_line":"            replacements\u003d{\u0027uuid\u0027: compute2_service_id},"},{"line_number":160,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[1])"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff82abbf_cb3f1623","line":159,"updated":"2017-11-27 16:04:36.000000000","message":"same","commit_id":"b4e2b56ea54ab70e3678ddff82098a855596847e"}],"nova/tests/unit/notifications/objects/test_notification.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"281db3dccb6b709916203655c67766cca377d775","unresolved":false,"context_lines":[{"line_number":397,"context_line":"    \u0027IpPayload\u0027: \u00271.0-8ecf567a99e516d4af094439a7632d34\u0027,"},{"line_number":398,"context_line":"    \u0027KeypairNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"},{"line_number":399,"context_line":"    \u0027KeypairPayload\u0027: \u00271.0-6daebbbde0e1bf35c1556b1ecd9385c1\u0027,"},{"line_number":400,"context_line":"    \u0027NotificationPublisher\u0027: \u00272.1-b6ad48126247e10b46b6b0240e52e614\u0027,"},{"line_number":401,"context_line":"    \u0027ServerGroupNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"},{"line_number":402,"context_line":"    \u0027ServerGroupPayload\u0027: \u00271.0-eb4bd1738b4670cfe1b7c30344c143c3\u0027,"},{"line_number":403,"context_line":"    \u0027ServiceStatusNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_08004b34","line":400,"range":{"start_line":400,"start_character":30,"end_line":400,"end_character":33},"updated":"2017-11-20 05:32:48.000000000","message":"It should be bumped to 2.2.","commit_id":"3c5f7421d495a3d587d811c185b51c5571c16770"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"5f163f8c9230ec71760f62834d8ecd984e6cc41a","unresolved":false,"context_lines":[{"line_number":397,"context_line":"    \u0027IpPayload\u0027: \u00271.0-8ecf567a99e516d4af094439a7632d34\u0027,"},{"line_number":398,"context_line":"    \u0027KeypairNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"},{"line_number":399,"context_line":"    \u0027KeypairPayload\u0027: \u00271.0-6daebbbde0e1bf35c1556b1ecd9385c1\u0027,"},{"line_number":400,"context_line":"    \u0027NotificationPublisher\u0027: \u00272.1-b6ad48126247e10b46b6b0240e52e614\u0027,"},{"line_number":401,"context_line":"    \u0027ServerGroupNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"},{"line_number":402,"context_line":"    \u0027ServerGroupPayload\u0027: \u00271.0-eb4bd1738b4670cfe1b7c30344c143c3\u0027,"},{"line_number":403,"context_line":"    \u0027ServiceStatusNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_2a2cc345","line":400,"range":{"start_line":400,"start_character":30,"end_line":400,"end_character":33},"in_reply_to":"ff82abbf_08004b34","updated":"2017-11-23 03:36:29.000000000","message":"Done","commit_id":"3c5f7421d495a3d587d811c185b51c5571c16770"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e4999f4a7c5b243202c6f97eb8db09fc3bce618c","unresolved":false,"context_lines":[{"line_number":397,"context_line":"    \u0027IpPayload\u0027: \u00271.0-8ecf567a99e516d4af094439a7632d34\u0027,"},{"line_number":398,"context_line":"    \u0027KeypairNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"},{"line_number":399,"context_line":"    \u0027KeypairPayload\u0027: \u00271.0-6daebbbde0e1bf35c1556b1ecd9385c1\u0027,"},{"line_number":400,"context_line":"    \u0027NotificationPublisher\u0027: \u00272.1-b6ad48126247e10b46b6b0240e52e614\u0027,"},{"line_number":401,"context_line":"    \u0027ServerGroupNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"},{"line_number":402,"context_line":"    \u0027ServerGroupPayload\u0027: \u00271.0-eb4bd1738b4670cfe1b7c30344c143c3\u0027,"},{"line_number":403,"context_line":"    \u0027ServiceStatusNotification\u0027: \u00271.0-a73147b93b520ff0061865849d3dfa56\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_af733715","line":400,"range":{"start_line":400,"start_character":30,"end_line":400,"end_character":33},"in_reply_to":"ff82abbf_08004b34","updated":"2017-11-21 16:05:06.000000000","message":"Yeah, it is due to the new enum values added to the NotificationSource enum","commit_id":"3c5f7421d495a3d587d811c185b51c5571c16770"}],"nova/tests/unit/notifications/objects/test_service.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"281db3dccb6b709916203655c67766cca377d775","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import copy"},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"from oslo_utils import timeutils"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_e802c73e","line":16,"updated":"2017-11-20 05:32:48.000000000","message":"nit: Add a blank line between line 16 and 17.\n\nhttps://docs.openstack.org/hacking/latest/user/hacking.html#import-order-template","commit_id":"3c5f7421d495a3d587d811c185b51c5571c16770"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"5f163f8c9230ec71760f62834d8ecd984e6cc41a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import copy"},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"from oslo_utils import timeutils"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_8af14fd0","line":16,"in_reply_to":"ff82abbf_e802c73e","updated":"2017-11-23 03:36:29.000000000","message":"Done","commit_id":"3c5f7421d495a3d587d811c185b51c5571c16770"}],"releasenotes/notes/bp-service-create-destroy-notification-f2f340903eed8f84.yaml":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"64304bc1ad57f37ae389794be7a4ed02ef90f668","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support versioned notifications for service create and destroy."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"1f485f77_d26a7eb1","line":3,"updated":"2017-11-14 15:20:40.000000000","message":"It could be a bit more detailed, like:\nEmit service.create versioned notification when a service is created and emit service.delete when the service is deleted.","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"28030cbc74cd867386a81f32558232014649afb9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support versioned notifications for service create and destroy."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"1f485f77_158b4e1f","line":3,"in_reply_to":"1f485f77_d26a7eb1","updated":"2017-11-15 03:06:07.000000000","message":"Done","commit_id":"bc10a0b88bfd24c1f649bab9433c96c699462381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73dce83b3a58e7218167ea106b4092ed25dbe9d7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support versioned notifications for service create and destroy."},{"line_number":4,"context_line":"    Service.create notification will be emitted after the service is"},{"line_number":5,"context_line":"    created (so the uuid is available) and also send the service.delete"},{"line_number":6,"context_line":"    notification after the service is deleted."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff82abbf_4bf1c66a","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":67},"updated":"2017-11-27 16:04:36.000000000","message":"I\u0027d re-word this as:\n\n\"Added support for service create and destroy versioned notifications.\"","commit_id":"b4e2b56ea54ab70e3678ddff82098a855596847e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73dce83b3a58e7218167ea106b4092ed25dbe9d7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support versioned notifications for service create and destroy."},{"line_number":4,"context_line":"    Service.create notification will be emitted after the service is"},{"line_number":5,"context_line":"    created (so the uuid is available) and also send the service.delete"},{"line_number":6,"context_line":"    notification after the service is deleted."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff82abbf_ebd8daef","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":18},"updated":"2017-11-27 16:04:36.000000000","message":"\"The ``service.create`` notification will be...\"","commit_id":"b4e2b56ea54ab70e3678ddff82098a855596847e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"73dce83b3a58e7218167ea106b4092ed25dbe9d7","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Support versioned notifications for service create and destroy."},{"line_number":4,"context_line":"    Service.create notification will be emitted after the service is"},{"line_number":5,"context_line":"    created (so the uuid is available) and also send the service.delete"},{"line_number":6,"context_line":"    notification after the service is deleted."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"ff82abbf_2bec828d","line":5,"range":{"start_line":5,"start_character":57,"end_line":5,"end_character":71},"updated":"2017-11-27 16:04:36.000000000","message":"``service.delete``","commit_id":"b4e2b56ea54ab70e3678ddff82098a855596847e"}]}
