)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ba96614fd1429e32ec08629930c94d009b93a580","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add notifications for server groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently, no notification will be sent"},{"line_number":10,"context_line":"for server groups changes, so it is not"},{"line_number":11,"context_line":"possible for external system to get"},{"line_number":12,"context_line":"notifications when there are server groups"},{"line_number":13,"context_line":"created, updated or deleted."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba5da102_b48679b7","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":25},"updated":"2016-10-27 15:52:08.000000000","message":"I think nova already sends server group notifications. See my pointers to the code below.","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ba96614fd1429e32ec08629930c94d009b93a580","unresolved":false,"context_lines":[{"line_number":19,"context_line":"This spec is proposed to nova to send out"},{"line_number":20,"context_line":"notifications when:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"- new SeverGroup is created"},{"line_number":23,"context_line":"- ServerGroup is deleted"},{"line_number":24,"context_line":"- new servers added to the ServerGroup"},{"line_number":25,"context_line":"- server has been deleted from the ServerGroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba5da102_54e8bd7c","line":22,"updated":"2016-10-27 15:52:08.000000000","message":"Covered by:\nhttps://github.com/openstack/nova/blob/4f91ed3a547965ed96a22520edcfb783e7936e95/nova/objects/instance_group.py#L406-L407","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ba96614fd1429e32ec08629930c94d009b93a580","unresolved":false,"context_lines":[{"line_number":20,"context_line":"notifications when:"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"- new SeverGroup is created"},{"line_number":23,"context_line":"- ServerGroup is deleted"},{"line_number":24,"context_line":"- new servers added to the ServerGroup"},{"line_number":25,"context_line":"- server has been deleted from the ServerGroup"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba5da102_b4ff5933","line":23,"updated":"2016-10-27 15:52:08.000000000","message":"Covered by:\nhttps://github.com/openstack/nova/blob/4f91ed3a547965ed96a22520edcfb783e7936e95/nova/objects/instance_group.py#L421-L422","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ba96614fd1429e32ec08629930c94d009b93a580","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"- new SeverGroup is created"},{"line_number":23,"context_line":"- ServerGroup is deleted"},{"line_number":24,"context_line":"- new servers added to the ServerGroup"},{"line_number":25,"context_line":"- server has been deleted from the ServerGroup"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: Ibe7bbd323fd8a87239168825c5bdde4301edb3c3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba5da102_545a7d84","line":24,"updated":"2016-10-27 15:52:08.000000000","message":"Covered by:\nhttps://github.com/openstack/nova/blob/4f91ed3a547965ed96a22520edcfb783e7936e95/nova/objects/instance_group.py#L435-L436","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ba96614fd1429e32ec08629930c94d009b93a580","unresolved":false,"context_lines":[{"line_number":22,"context_line":"- new SeverGroup is created"},{"line_number":23,"context_line":"- ServerGroup is deleted"},{"line_number":24,"context_line":"- new servers added to the ServerGroup"},{"line_number":25,"context_line":"- server has been deleted from the ServerGroup"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: Ibe7bbd323fd8a87239168825c5bdde4301edb3c3"},{"line_number":28,"context_line":"blueprint: add-notification-for-server-groups"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"ba5da102_74d6a1c6","line":25,"updated":"2016-10-27 15:52:08.000000000","message":"Most probably already covered by:\nhttps://github.com/openstack/nova/blob/4f91ed3a547965ed96a22520edcfb783e7936e95/nova/objects/instance_group.py#L364-L365","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"}],"specs/ocata/approved/server-groups-notification.rst":[{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"e553c63fef2ddf7d2a405f6795c314de494e2453","unresolved":false,"context_lines":[{"line_number":24,"context_line":"---------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The external system like Searchlight[1] wants to index the server groups"},{"line_number":27,"context_line":"which makes the query for large number of server groups more fast and"},{"line_number":28,"context_line":"efficient."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"The maintainer wants to get the notifications when there are server groups"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa6399be_c2731a14","line":27,"range":{"start_line":27,"start_character":56,"end_line":27,"end_character":65},"updated":"2016-10-12 03:25:34.000000000","message":"faster","commit_id":"0a9b45652c364158f503cd526b9f589665e6f293"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"e553c63fef2ddf7d2a405f6795c314de494e2453","unresolved":false,"context_lines":[{"line_number":55,"context_line":".. code-block:: python"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":58,"context_line":"    class ServerGroupNotification(notification.NotificationBase):"},{"line_number":59,"context_line":"        # Version 1.0: Initial version"},{"line_number":60,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":61,"context_line":"        fields \u003d {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa6399be_8285a2ae","line":58,"range":{"start_line":58,"start_character":10,"end_line":58,"end_character":21},"updated":"2016-10-12 03:25:34.000000000","message":"Seems it should be InstanceGroup: https://github.com/openstack/nova/blob/master/nova/objects/instance_group.py#L112-L112\n\nSame in other places","commit_id":"0a9b45652c364158f503cd526b9f589665e6f293"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"9696187be7b6b8f7285784c8eebb2e4426becc2e","unresolved":false,"context_lines":[{"line_number":55,"context_line":".. code-block:: python"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":58,"context_line":"    class ServerGroupNotification(notification.NotificationBase):"},{"line_number":59,"context_line":"        # Version 1.0: Initial version"},{"line_number":60,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":61,"context_line":"        fields \u003d {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa6399be_1ce1f5d0","line":58,"range":{"start_line":58,"start_character":10,"end_line":58,"end_character":21},"in_reply_to":"fa6399be_8285a2ae","updated":"2016-10-12 07:32:10.000000000","message":"Done","commit_id":"0a9b45652c364158f503cd526b9f589665e6f293"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"e553c63fef2ddf7d2a405f6795c314de494e2453","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            \u0027project_id\u0027: (\u0027server_group\u0027, \u0027project_id\u0027),"},{"line_number":72,"context_line":"            \u0027user_id\u0027: (\u0027server_group\u0027, \u0027user_id\u0027),"},{"line_number":73,"context_line":"            \u0027name\u0027: (\u0027server_group\u0027, \u0027name\u0027),"},{"line_number":74,"context_line":"            \u0027policy\u0027: (\u0027server_group\u0027, \u0027policy\u0027),"},{"line_number":75,"context_line":"            \u0027members\u0027: (\u0027server_group\u0027, \u0027members\u0027),"},{"line_number":76,"context_line":"        }"},{"line_number":77,"context_line":"        VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa6399be_42baaa6f","line":74,"range":{"start_line":74,"start_character":13,"end_line":74,"end_character":19},"updated":"2016-10-12 03:25:34.000000000","message":"policies","commit_id":"0a9b45652c364158f503cd526b9f589665e6f293"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"e553c63fef2ddf7d2a405f6795c314de494e2453","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            \u0027user_id\u0027: (\u0027server_group\u0027, \u0027user_id\u0027),"},{"line_number":73,"context_line":"            \u0027name\u0027: (\u0027server_group\u0027, \u0027name\u0027),"},{"line_number":74,"context_line":"            \u0027policy\u0027: (\u0027server_group\u0027, \u0027policy\u0027),"},{"line_number":75,"context_line":"            \u0027members\u0027: (\u0027server_group\u0027, \u0027members\u0027),"},{"line_number":76,"context_line":"        }"},{"line_number":77,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":78,"context_line":"        fields \u003d {"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fa6399be_82acc236","line":75,"updated":"2016-10-12 03:25:34.000000000","message":"Missing hosts field","commit_id":"0a9b45652c364158f503cd526b9f589665e6f293"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb79679eb4d52e37b56c17c1a0f377ece3b56108","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"No database schema change is needed."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"The following new objects will be added to instace_group for create and update:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":".. code-block:: python"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa6399be_275e6be9","line":53,"range":{"start_line":53,"start_character":72,"end_line":53,"end_character":78},"updated":"2016-10-20 01:42:43.000000000","message":"By update to you mean members added/removed?\n\nIs it worth having a separate update payload for that case with members/members_added/members_removed fields? Else the notification consumer needs to have the previous state of the server group and diff it\u0027s membership against the update payload\u0027s members list. Maybe that\u0027s OK but I don\u0027t know how these are going to be consumed.\n\nIt looks like policies don\u0027t change once the server group is created, so that won\u0027t be in any update payload. So the only things that can change on a server group are the members, and implicitly the hosts when the members change.","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb79679eb4d52e37b56c17c1a0f377ece3b56108","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"No database schema change is needed."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"The following new objects will be added to instace_group for create and update:"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":".. code-block:: python"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa6399be_a7afdbe1","line":53,"range":{"start_line":53,"start_character":43,"end_line":53,"end_character":56},"updated":"2016-10-20 01:42:43.000000000","message":"instance_group\n\nBy the way, does instance_group here mean nova.objects.InstanceGroup?","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb79679eb4d52e37b56c17c1a0f377ece3b56108","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    class InstanceGroupPayload(notification.NotificationPayloadBase):"},{"line_number":67,"context_line":"        # Version 1.0: Initial version"},{"line_number":68,"context_line":"        SCHEMA \u003d {"},{"line_number":69,"context_line":"            \u0027id\u0027: (\u0027instace_group\u0027, \u0027id\u0027),"},{"line_number":70,"context_line":"            \u0027uuid\u0027: (\u0027instace_group\u0027, \u0027uuid\u0027),"},{"line_number":71,"context_line":"            \u0027project_id\u0027: (\u0027instace_group\u0027, \u0027project_id\u0027),"},{"line_number":72,"context_line":"            \u0027user_id\u0027: (\u0027instace_group\u0027, \u0027user_id\u0027),"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa6399be_27374bb1","line":69,"range":{"start_line":69,"start_character":13,"end_line":69,"end_character":15},"updated":"2016-10-20 01:42:43.000000000","message":"We don\u0027t want to expose the internal db primary key ids in the notifications, so you should remove this.","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb79679eb4d52e37b56c17c1a0f377ece3b56108","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    class InstanceGroupPayload(notification.NotificationPayloadBase):"},{"line_number":67,"context_line":"        # Version 1.0: Initial version"},{"line_number":68,"context_line":"        SCHEMA \u003d {"},{"line_number":69,"context_line":"            \u0027id\u0027: (\u0027instace_group\u0027, \u0027id\u0027),"},{"line_number":70,"context_line":"            \u0027uuid\u0027: (\u0027instace_group\u0027, \u0027uuid\u0027),"},{"line_number":71,"context_line":"            \u0027project_id\u0027: (\u0027instace_group\u0027, \u0027project_id\u0027),"},{"line_number":72,"context_line":"            \u0027user_id\u0027: (\u0027instace_group\u0027, \u0027user_id\u0027),"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa6399be_67ca23a3","line":69,"range":{"start_line":69,"start_character":20,"end_line":69,"end_character":33},"updated":"2016-10-20 01:42:43.000000000","message":"instance_group here and throughout.","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb79679eb4d52e37b56c17c1a0f377ece3b56108","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        }"},{"line_number":78,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":79,"context_line":"        fields \u003d {"},{"line_number":80,"context_line":"            \u0027id\u0027: fields.IntegerField(),"},{"line_number":81,"context_line":"            \u0027uuid\u0027: fields.UUIDField(),"},{"line_number":82,"context_line":"            \u0027project_id\u0027: fields.UUIDField(),"},{"line_number":83,"context_line":"            \u0027user_id\u0027: fields.UUIDField(),"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa6399be_6741430b","line":80,"updated":"2016-10-20 01:42:43.000000000","message":"Remove id.","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb79679eb4d52e37b56c17c1a0f377ece3b56108","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            \u0027project_id\u0027: fields.UUIDField(),"},{"line_number":83,"context_line":"            \u0027user_id\u0027: fields.UUIDField(),"},{"line_number":84,"context_line":"            \u0027name\u0027: fields.StringField(),"},{"line_number":85,"context_line":"            \u0027policy\u0027: fields.StringField(),"},{"line_number":86,"context_line":"            \u0027members\u0027: fields.ListOfStringsField,"},{"line_number":87,"context_line":"            \u0027hosts\u0027: fields.ListOfStringsField"},{"line_number":88,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa6399be_8744971b","line":85,"range":{"start_line":85,"start_character":13,"end_line":85,"end_character":19},"updated":"2016-10-20 01:42:43.000000000","message":"policies?","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb79679eb4d52e37b56c17c1a0f377ece3b56108","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    class InstanceGroupDeletePayload(notification.NotificationPayloadBase):"},{"line_number":107,"context_line":"        # Version 1.0: Initial version"},{"line_number":108,"context_line":"        SCHEMA \u003d {"},{"line_number":109,"context_line":"            \u0027id\u0027: (\u0027instace_group\u0027, \u0027id\u0027),"},{"line_number":110,"context_line":"            \u0027uuid\u0027: (\u0027instace_group\u0027, \u0027uuid\u0027),"},{"line_number":111,"context_line":"        }"},{"line_number":112,"context_line":"        VERSION \u003d \u00271.0\u0027"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa6399be_075167d8","line":109,"updated":"2016-10-20 01:42:43.000000000","message":"Remove id.","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb79679eb4d52e37b56c17c1a0f377ece3b56108","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"Performance Impact"},{"line_number":144,"context_line":"------------------"},{"line_number":145,"context_line":"None"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"Other deployer impact"},{"line_number":148,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa6399be_67822302","line":145,"updated":"2016-10-20 01:42:43.000000000","message":"Hmm, there might be a performance impact of creating the payload if we have to lazy-load the InstanceGroup.hosts field:\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/instance_group.py#L288\n\nIt would be nice if we could check something like we can for logging before building up a payload that won\u0027t be used. Like if I\u0027m going to log something big, but only for debug, I\u0027d first check:\n\n  if LOG.isEnabledFor(logging.DEBUG):\n    LOG.debug(\u0027log this big payload %s\u0027, self.create_big_payload())","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eb79679eb4d52e37b56c17c1a0f377ece3b56108","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"Documentation Impact"},{"line_number":180,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":181,"context_line":"None"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"References"},{"line_number":184,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":7,"id":"fa6399be_e776333d","line":181,"updated":"2016-10-20 01:42:43.000000000","message":"There will be examples in the nova developer docs:\n\nhttp://docs.openstack.org/developer/nova/notifications.html#existing-versioned-notifications","commit_id":"cfcd7790f44147796ef7b4efa9c6aad2dbd1f19f"}]}
