)]}'
{"specs/newton/approved/hypervisor-notification.rst":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f0c1fcbc3a92a3713cbf40516c9d29eae27cbea3","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":"   * - Release Name"},{"line_number":206,"context_line":"     - Description"},{"line_number":207,"context_line":"   * - Mitaka"},{"line_number":208,"context_line":"     - Introduced"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ba0121b8_8750b7d5","line":207,"range":{"start_line":207,"start_character":7,"end_line":207,"end_character":13},"updated":"2016-03-31 15:53:04.000000000","message":"s/Mitaka/Newton/","commit_id":"709084948abb86a022adb1c8d7de20f5d08e2688"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f7c6c81efdd0580ac4e5c120dd4d28b0cbee00d","unresolved":false,"context_lines":[{"line_number":116,"context_line":"            \u0027metrics\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":117,"context_line":"            \u0027stats\u0027: fields.DictOfNullableStringsField(nullable\u003dTrue),"},{"line_number":118,"context_line":"            \u0027host_ip\u0027: fields.IPAddressField(nullable\u003dTrue),"},{"line_number":119,"context_line":"            \u0027numa_topology\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":120,"context_line":"            \u0027supported_hv_specs\u0027: fields.ListOfObjectsField(\u0027HVSpec\u0027),"},{"line_number":121,"context_line":"            \u0027pci_device_pools\u0027: fields.ObjectField(\u0027PciDevicePoolList\u0027,"},{"line_number":122,"context_line":"                                                   nullable\u003dTrue),"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_b214f4e8","line":119,"updated":"2016-04-01 08:57:00.000000000","message":"This will be a big json blob without any knowledge about it\u0027s internal structure for the consumer. This also means that if the structure changes we won\u0027t have a way to detect that and bump the version number of the payload therefore consumer won\u0027t know if the structure is changed and it might fail to parse the notification.\nI suggest not to emit the whole ComputeNode data blindly but figure out what data is needed and only emit that data but emit it in a well structured way.","commit_id":"f639e7f4da24ffc72ec9577dca3c730224ccef49"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f7c6c81efdd0580ac4e5c120dd4d28b0cbee00d","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            \u0027stats\u0027: fields.DictOfNullableStringsField(nullable\u003dTrue),"},{"line_number":118,"context_line":"            \u0027host_ip\u0027: fields.IPAddressField(nullable\u003dTrue),"},{"line_number":119,"context_line":"            \u0027numa_topology\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":120,"context_line":"            \u0027supported_hv_specs\u0027: fields.ListOfObjectsField(\u0027HVSpec\u0027),"},{"line_number":121,"context_line":"            \u0027pci_device_pools\u0027: fields.ObjectField(\u0027PciDevicePoolList\u0027,"},{"line_number":122,"context_line":"                                                   nullable\u003dTrue),"},{"line_number":123,"context_line":"            \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":124,"context_line":"            \u0027ram_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":125,"context_line":"            \u0027disk_allocation_ratio\u0027: fields.FloatField(),"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_52b3d809","line":122,"range":{"start_line":120,"start_character":0,"end_line":122,"end_character":66},"updated":"2016-04-01 08:57:00.000000000","message":"These two fields creates a direct dependency between Nova internal objects and the public notification content. I think we need a clear separation between the object model that is Nova internal and the data that is eventually emitted for public use.","commit_id":"f639e7f4da24ffc72ec9577dca3c730224ccef49"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f7c6c81efdd0580ac4e5c120dd4d28b0cbee00d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":124,"context_line":"            \u0027ram_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":125,"context_line":"            \u0027disk_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":126,"context_line":"        }"},{"line_number":127,"context_line":"        def __init__(self, compute_node):"},{"line_number":128,"context_line":"            super(ComputeNodePayload, self).__init__()"},{"line_number":129,"context_line":"            self.populate_schema(compute_node\u003dcompute_node)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_52e638e8","line":126,"updated":"2016-04-01 08:57:00.000000000","message":"In general, do we need all this data? I think we should understand the use case of external system so that we can emit a smarter notification instead of emitting the whole nova internal data structure.","commit_id":"f639e7f4da24ffc72ec9577dca3c730224ccef49"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"8bc2694a54e0cf0625d324d7970eb254d9a95248","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":124,"context_line":"            \u0027ram_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":125,"context_line":"            \u0027disk_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":126,"context_line":"        }"},{"line_number":127,"context_line":"        def __init__(self, compute_node):"},{"line_number":128,"context_line":"            super(ComputeNodePayload, self).__init__()"},{"line_number":129,"context_line":"            self.populate_schema(compute_node\u003dcompute_node)"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_55b3c209","line":126,"in_reply_to":"ba0121b8_52e638e8","updated":"2016-04-01 09:16:49.000000000","message":"Right, we don\u0027t need all data actually, I think the data changed frequently like vcpu_used, memory_* and disk_* etc. is what we really needed.\n\nI\u0027ll recheck the all data, thanks!","commit_id":"f639e7f4da24ffc72ec9577dca3c730224ccef49"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0f7c6c81efdd0580ac4e5c120dd4d28b0cbee00d","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Performance Impact"},{"line_number":155,"context_line":"------------------"},{"line_number":156,"context_line":"None"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Other deployer impact"},{"line_number":159,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_f2bb0cc2","line":156,"updated":"2016-04-01 08:57:00.000000000","message":"compute_node.update will be a quite frequent notification as resource tracker periodically updates every compute node state.  Do you really need to emit all the data at every ComputeNode.save?","commit_id":"f639e7f4da24ffc72ec9577dca3c730224ccef49"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"8bc2694a54e0cf0625d324d7970eb254d9a95248","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Performance Impact"},{"line_number":155,"context_line":"------------------"},{"line_number":156,"context_line":"None"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"Other deployer impact"},{"line_number":159,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"ba0121b8_35b28ee5","line":156,"in_reply_to":"ba0121b8_f2bb0cc2","updated":"2016-04-01 09:16:49.000000000","message":"Not all data, so i\u0027ll remove the data not really needed.","commit_id":"f639e7f4da24ffc72ec9577dca3c730224ccef49"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6f79a9459cbfeb0c33ccc49a1a481b0f3fb57e55","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Versioned notifications will be added for the following actions:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* ComputeNode.create"},{"line_number":38,"context_line":"* ComputeNode.save"},{"line_number":39,"context_line":"* ComputeNode.destroy"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a061dce_623195a2","line":38,"updated":"2016-04-05 08:06:57.000000000","message":"I think you want to send a notification at ComputeNode.save only if the object change affect those fields that are in the notifications. This is needed to avoid unnecessary notifications with the same content.","commit_id":"ad5774867b78dd2c828cec104af0eb6951225b2a"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"6c937cb89ea4179f27d45893e20441fd904ba51e","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Versioned notifications will be added for the following actions:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* ComputeNode.create"},{"line_number":38,"context_line":"* ComputeNode.save"},{"line_number":39,"context_line":"* ComputeNode.destroy"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a061dce_f3261515","line":38,"in_reply_to":"9a061dce_623195a2","updated":"2016-04-05 09:24:37.000000000","message":"Done","commit_id":"ad5774867b78dd2c828cec104af0eb6951225b2a"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"1a8c01932445106fa69d90d0e6b2d34e1b149b49","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            \u0027cpu_info\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":107,"context_line":"            \u0027disk_available_least\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":108,"context_line":"            \u0027host_ip\u0027: fields.IPAddressField(nullable\u003dTrue),"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"        def __init__(self, compute_node):"},{"line_number":111,"context_line":"            super(ComputeNodePayload, self).__init__()"},{"line_number":112,"context_line":"            self.populate_schema(compute_node\u003dcompute_node)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a061dce_544a54c6","line":109,"updated":"2016-04-05 04:10:31.000000000","message":"I understand Balazs\u0027 concerns, but do they also apply to the hv specs?  This seems like a well defined object to me and also seem static in nature so they wouldn\u0027t change frequently.\n\nhttps://github.com/openstack/nova/blob/bc5035343d366a18cae587f92ecb4e871aba974a/nova/objects/hv_spec.py#L40-L42","commit_id":"ad5774867b78dd2c828cec104af0eb6951225b2a"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"897de34163af6e1d7e07dcb34d4eae814bceffa5","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            \u0027cpu_info\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":107,"context_line":"            \u0027disk_available_least\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":108,"context_line":"            \u0027host_ip\u0027: fields.IPAddressField(nullable\u003dTrue),"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"        def __init__(self, compute_node):"},{"line_number":111,"context_line":"            super(ComputeNodePayload, self).__init__()"},{"line_number":112,"context_line":"            self.populate_schema(compute_node\u003dcompute_node)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a061dce_a0b9cecd","line":109,"in_reply_to":"9a061dce_3ff4cff0","updated":"2016-04-05 14:43:06.000000000","message":"@Balazs thanks for the pointer to that spec. We have BP to investigate and start using the versioned notifications this release, so I\u0027ll be digging into that more shortly.\n\n@Daniel Thanks for the explanation. With searchlight [0], we are wanting to avoid API callbacks to optimize indexing performance, however, I definitely understand what you are saying. It does seem like it would make sense for us to do an API callback to get the non-changing information on the create notification and then get the non-static information in the update notifications.\n\n[0] https://wiki.openstack.org/wiki/Searchlight","commit_id":"ad5774867b78dd2c828cec104af0eb6951225b2a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f3a489a5f612137d9ed8943261383460c907d45b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            \u0027cpu_info\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":107,"context_line":"            \u0027disk_available_least\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":108,"context_line":"            \u0027host_ip\u0027: fields.IPAddressField(nullable\u003dTrue),"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"        def __init__(self, compute_node):"},{"line_number":111,"context_line":"            super(ComputeNodePayload, self).__init__()"},{"line_number":112,"context_line":"            self.populate_schema(compute_node\u003dcompute_node)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5a18252c_5dda9d79","line":109,"in_reply_to":"9a061dce_3ff4cff0","updated":"2016-04-12 10:36:05.000000000","message":"I think service_id is not meaningful for the consumer as it is an id only in the nova DB. The hypervisor_* and host_ip are meaningful but might be static information.","commit_id":"ad5774867b78dd2c828cec104af0eb6951225b2a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6f79a9459cbfeb0c33ccc49a1a481b0f3fb57e55","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            \u0027cpu_info\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":107,"context_line":"            \u0027disk_available_least\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":108,"context_line":"            \u0027host_ip\u0027: fields.IPAddressField(nullable\u003dTrue),"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"        def __init__(self, compute_node):"},{"line_number":111,"context_line":"            super(ComputeNodePayload, self).__init__()"},{"line_number":112,"context_line":"            self.populate_schema(compute_node\u003dcompute_node)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a061dce_e23765e1","line":109,"in_reply_to":"9a061dce_544a54c6","updated":"2016-04-05 08:06:57.000000000","message":"You are right HvSpec seems quite small and stable. However if you read the comment from Daniel here https://review.openstack.org/#/c/286675/4/specs/newton/approved/versioned-notification-transformation.rst then you can see that we want to make a clear distinction about what is part of the public API of Nova and what is internal. \n\nI think we can move the the HvSpec object to the public part and then we can include it to the payload. But I would like to get a second opinion from Daniel about this.","commit_id":"ad5774867b78dd2c828cec104af0eb6951225b2a"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"526c112f116617150ae7123bfa5a878f2e77750d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            \u0027cpu_info\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":107,"context_line":"            \u0027disk_available_least\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":108,"context_line":"            \u0027host_ip\u0027: fields.IPAddressField(nullable\u003dTrue),"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"        def __init__(self, compute_node):"},{"line_number":111,"context_line":"            super(ComputeNodePayload, self).__init__()"},{"line_number":112,"context_line":"            self.populate_schema(compute_node\u003dcompute_node)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a061dce_fd4b8429","line":109,"in_reply_to":"9a061dce_e23765e1","updated":"2016-04-05 08:21:02.000000000","message":"Yep, I want to see a strict separation between public objects and internal objects, even if that means creating 2 objects which are essentially identical.  That said I don\u0027t see all that much point in notifying about data that never changes - the hvspec for a compute node is fixed when nova starts and will never change thereafter. Quite a few other things here are the same. IMHO notifications are useful for determining state changes, but when you start to expose every single possible attribute of a compute node it feels like you\u0027re just re-inventing the public REST API for getting information on a resource.","commit_id":"ad5774867b78dd2c828cec104af0eb6951225b2a"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"6c937cb89ea4179f27d45893e20441fd904ba51e","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            \u0027cpu_info\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":107,"context_line":"            \u0027disk_available_least\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":108,"context_line":"            \u0027host_ip\u0027: fields.IPAddressField(nullable\u003dTrue),"},{"line_number":109,"context_line":"        }"},{"line_number":110,"context_line":"        def __init__(self, compute_node):"},{"line_number":111,"context_line":"            super(ComputeNodePayload, self).__init__()"},{"line_number":112,"context_line":"            self.populate_schema(compute_node\u003dcompute_node)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a061dce_3ff4cff0","line":109,"in_reply_to":"9a061dce_fd4b8429","updated":"2016-04-05 09:24:37.000000000","message":"Agree with Daniel, we don\u0027t need to include data never changes and doesn\u0027t included in public REST API. I removed most of unnecessary fields, not sure if \u0027service_id\u0027, \u0027hypervisor_*\u0027 and \u0027host_ip\u0027 should be removed also.","commit_id":"ad5774867b78dd2c828cec104af0eb6951225b2a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4c09410bc16a1d7e664072570306c47dcd5f7add","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        }"},{"line_number":92,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":93,"context_line":"        fields \u003d {"},{"line_number":94,"context_line":"            \u0027id\u0027: fields.IntegerField(),"},{"line_number":95,"context_line":"            \u0027uuid\u0027: fields.UUIDField(),"},{"line_number":96,"context_line":"            \u0027service_id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":97,"context_line":"            \u0027host\u0027: fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a18252c_9255441f","line":94,"updated":"2016-04-12 10:33:47.000000000","message":"As far as I understand this is some DB specific id that is meaningless for the notification consumer so I think this shall not be part of the notification. The uuid field identifies the compute node anyhow.","commit_id":"716f766a5e886b84eb28286c736cf59575abc293"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c41d0414298a4279e2acc39819d05cb2e511112c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        }"},{"line_number":92,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":93,"context_line":"        fields \u003d {"},{"line_number":94,"context_line":"            \u0027id\u0027: fields.IntegerField(),"},{"line_number":95,"context_line":"            \u0027uuid\u0027: fields.UUIDField(),"},{"line_number":96,"context_line":"            \u0027service_id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":97,"context_line":"            \u0027host\u0027: fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a122d0e_c11ea35e","line":94,"in_reply_to":"5a18252c_0c92509e","updated":"2016-05-03 13:38:48.000000000","message":"That sounds bad but I agree that if the id is exposed on the API then it can be in the notification.","commit_id":"716f766a5e886b84eb28286c736cf59575abc293"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"1a1632e3cc73b88da5a8682d7878dcdc55569859","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        }"},{"line_number":92,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":93,"context_line":"        fields \u003d {"},{"line_number":94,"context_line":"            \u0027id\u0027: fields.IntegerField(),"},{"line_number":95,"context_line":"            \u0027uuid\u0027: fields.UUIDField(),"},{"line_number":96,"context_line":"            \u0027service_id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":97,"context_line":"            \u0027host\u0027: fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a18252c_0c92509e","line":94,"in_reply_to":"5a18252c_23167655","updated":"2016-04-13 22:08:52.000000000","message":"That\u0027s really weird.  I thought maybe it was a mistake in the API docs, but you\u0027re right, it\u0027s the integer DB id.  It\u0027s a mystery why the API doesn\u0027t expose the UUID instead, which would be the normal practice.","commit_id":"716f766a5e886b84eb28286c736cf59575abc293"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"442a81c15d7b6f307822bb9e54e3fe0ee5593961","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        }"},{"line_number":92,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":93,"context_line":"        fields \u003d {"},{"line_number":94,"context_line":"            \u0027id\u0027: fields.IntegerField(),"},{"line_number":95,"context_line":"            \u0027uuid\u0027: fields.UUIDField(),"},{"line_number":96,"context_line":"            \u0027service_id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":97,"context_line":"            \u0027host\u0027: fields.StringField(nullable\u003dTrue),"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a18252c_23167655","line":94,"in_reply_to":"5a18252c_9255441f","updated":"2016-04-13 02:58:10.000000000","message":"The api is using id instead of uuid[1], so i think we should be keep it for now.\n\n[1]: http://developer.openstack.org/api-ref-compute-v2.1.html#showHypervisor","commit_id":"716f766a5e886b84eb28286c736cf59575abc293"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4c09410bc16a1d7e664072570306c47dcd5f7add","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        fields \u003d {"},{"line_number":94,"context_line":"            \u0027id\u0027: fields.IntegerField(),"},{"line_number":95,"context_line":"            \u0027uuid\u0027: fields.UUIDField(),"},{"line_number":96,"context_line":"            \u0027service_id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":97,"context_line":"            \u0027host\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":98,"context_line":"            \u0027vcpus\u0027: fields.IntegerField(),"},{"line_number":99,"context_line":"            \u0027memory_mb\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a18252c_fd4c4978","line":96,"updated":"2016-04-12 10:33:47.000000000","message":"This also seems to be DB specific. If some related service information is needed then I think we shall add that directly instead of referring to the id of the service.","commit_id":"716f766a5e886b84eb28286c736cf59575abc293"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"442a81c15d7b6f307822bb9e54e3fe0ee5593961","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        fields \u003d {"},{"line_number":94,"context_line":"            \u0027id\u0027: fields.IntegerField(),"},{"line_number":95,"context_line":"            \u0027uuid\u0027: fields.UUIDField(),"},{"line_number":96,"context_line":"            \u0027service_id\u0027: fields.IntegerField(nullable\u003dTrue),"},{"line_number":97,"context_line":"            \u0027host\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":98,"context_line":"            \u0027vcpus\u0027: fields.IntegerField(),"},{"line_number":99,"context_line":"            \u0027memory_mb\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5a18252c_0600a800","line":96,"in_reply_to":"5a18252c_fd4c4978","updated":"2016-04-13 02:58:10.000000000","message":"looks reasonable","commit_id":"716f766a5e886b84eb28286c736cf59575abc293"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"44fcfe94b4d23fcdce39f474f0afcfc2a78f8b22","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Currently, no notification will be sent for hypervisor(compute node) state"},{"line_number":14,"context_line":"change, so it is not possible for external system to get notifications when"},{"line_number":15,"context_line":"there are hypervisors created, updated or deleted."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Having such notifications help external system to get the up to date hypervisor"},{"line_number":18,"context_line":"status and metrics."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_5e755330","line":15,"range":{"start_line":15,"start_character":10,"end_line":15,"end_character":21},"updated":"2016-05-03 10:31:45.000000000","message":"It\u0027s clearer to say \u0027compute node\u0027 imo, I was confused by this","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d6576a8d823b7193adfe38a2fab90ca8382cad12","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Currently, no notification will be sent for hypervisor(compute node) state"},{"line_number":14,"context_line":"change, so it is not possible for external system to get notifications when"},{"line_number":15,"context_line":"there are hypervisors created, updated or deleted."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Having such notifications help external system to get the up to date hypervisor"},{"line_number":18,"context_line":"status and metrics."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_21b5d730","line":15,"range":{"start_line":15,"start_character":10,"end_line":15,"end_character":21},"in_reply_to":"1a122d0e_5e755330","updated":"2016-05-03 13:48:50.000000000","message":"+1 let\u0027s make it clear that this notification only talks about the compute node part of the hypervisor","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"4df72e910adb5fbb4adc3683c8d1344386814253","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Currently, no notification will be sent for hypervisor(compute node) state"},{"line_number":14,"context_line":"change, so it is not possible for external system to get notifications when"},{"line_number":15,"context_line":"there are hypervisors created, updated or deleted."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Having such notifications help external system to get the up to date hypervisor"},{"line_number":18,"context_line":"status and metrics."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_a17a70ee","line":15,"range":{"start_line":15,"start_character":10,"end_line":15,"end_character":21},"in_reply_to":"1a122d0e_5e755330","updated":"2016-05-04 01:25:33.000000000","message":"Done","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"6bfc550520e39d359e86f4d2395944a4b0da75e9","unresolved":false,"context_lines":[{"line_number":24,"context_line":"---------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The external system wants to index the hypervisors which makes the query for"},{"line_number":27,"context_line":"large number of compute nodes more fast and efficient."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The maintainer wants to get the notifications when there are compute nodes"},{"line_number":30,"context_line":"added or removed."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a18252c_995dfb49","line":27,"updated":"2016-04-14 04:35:21.000000000","message":"If it adds value, maybe say an example of this is Searchlight and provide a link in the references to either the wiki or developer docs.","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"4df72e910adb5fbb4adc3683c8d1344386814253","unresolved":false,"context_lines":[{"line_number":24,"context_line":"---------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The external system wants to index the hypervisors which makes the query for"},{"line_number":27,"context_line":"large number of compute nodes more fast and efficient."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The maintainer wants to get the notifications when there are compute nodes"},{"line_number":30,"context_line":"added or removed."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_81e494ac","line":27,"in_reply_to":"5a18252c_995dfb49","updated":"2016-05-04 01:25:33.000000000","message":"Done","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d6576a8d823b7193adfe38a2fab90ca8382cad12","unresolved":false,"context_lines":[{"line_number":24,"context_line":"---------"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"The external system wants to index the hypervisors which makes the query for"},{"line_number":27,"context_line":"large number of compute nodes more fast and efficient."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"The maintainer wants to get the notifications when there are compute nodes"},{"line_number":30,"context_line":"added or removed."}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_81994bd3","line":27,"in_reply_to":"5a18252c_995dfb49","updated":"2016-05-03 13:48:50.000000000","message":"I think it make sense to mention Searchlight as a user of this feature","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d6576a8d823b7193adfe38a2fab90ca8382cad12","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":69,"context_line":"    class ComputeNodePayload(notification.NotificationPayloadBase):"},{"line_number":70,"context_line":"        # Version 1.0: Initial version"},{"line_number":71,"context_line":"        SCHEMA \u003d {"},{"line_number":72,"context_line":"            \u0027id\u0027: (\u0027compute_node\u0027, \u0027id\u0027),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_c1db434e","line":69,"updated":"2016-05-03 13:48:50.000000000","message":"I\u0027m wondering if we want to have the same notification payload for create, update and delete. I mean when a new compute node is created almost all the fields of the compute node internal object has information for Searchlight even the static ones. However when the compute node is updated just the non static fields can change therefore sending all the static fields is simple waste of amqp bandwidth. With the same way of thinking delete notification can be as simple as an id / uuid. What do you think?\nI think this payload is quite good for the update notification as it contains the non static fields of the compute node.","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a55ac417863365fcc825500dfa74969dc878ab3c","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":69,"context_line":"    class ComputeNodePayload(notification.NotificationPayloadBase):"},{"line_number":70,"context_line":"        # Version 1.0: Initial version"},{"line_number":71,"context_line":"        SCHEMA \u003d {"},{"line_number":72,"context_line":"            \u0027id\u0027: (\u0027compute_node\u0027, \u0027id\u0027),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_e1211ffe","line":69,"in_reply_to":"1a122d0e_c1db434e","updated":"2016-05-03 13:56:53.000000000","message":"+1 for delete, -1 for update. There\u0027s resilience in getting a consistent view of the whole object and it makes writing stateless processors easier.","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"4df72e910adb5fbb4adc3683c8d1344386814253","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":69,"context_line":"    class ComputeNodePayload(notification.NotificationPayloadBase):"},{"line_number":70,"context_line":"        # Version 1.0: Initial version"},{"line_number":71,"context_line":"        SCHEMA \u003d {"},{"line_number":72,"context_line":"            \u0027id\u0027: (\u0027compute_node\u0027, \u0027id\u0027),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_9ca237ac","line":69,"in_reply_to":"1a122d0e_e1211ffe","updated":"2016-05-04 01:25:33.000000000","message":"Agree with the delete one","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"11b31562884cc5e7bf5256334100cf5d13ac1942","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            \u0027running_vms\u0027: (\u0027compute_node\u0027, \u0027running_vms\u0027),"},{"line_number":88,"context_line":"            \u0027disk_available_least\u0027: (\u0027compute_node\u0027, \u0027disk_available_least\u0027),"},{"line_number":89,"context_line":"            \u0027host_ip\u0027: (\u0027compute_node\u0027, \u0027host_ip\u0027),"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":92,"context_line":"        fields \u003d {"},{"line_number":93,"context_line":"            \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_5ec71364","line":90,"updated":"2016-05-03 10:29:40.000000000","message":"Please review https://review.openstack.org/300006","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d6576a8d823b7193adfe38a2fab90ca8382cad12","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            \u0027running_vms\u0027: (\u0027compute_node\u0027, \u0027running_vms\u0027),"},{"line_number":88,"context_line":"            \u0027disk_available_least\u0027: (\u0027compute_node\u0027, \u0027disk_available_least\u0027),"},{"line_number":89,"context_line":"            \u0027host_ip\u0027: (\u0027compute_node\u0027, \u0027host_ip\u0027),"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":92,"context_line":"        fields \u003d {"},{"line_number":93,"context_line":"            \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_a15a8728","line":90,"in_reply_to":"1a122d0e_5ec71364","updated":"2016-05-03 13:48:50.000000000","message":"how this is related to the current spec?","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a55ac417863365fcc825500dfa74969dc878ab3c","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            \u0027running_vms\u0027: (\u0027compute_node\u0027, \u0027running_vms\u0027),"},{"line_number":88,"context_line":"            \u0027disk_available_least\u0027: (\u0027compute_node\u0027, \u0027disk_available_least\u0027),"},{"line_number":89,"context_line":"            \u0027host_ip\u0027: (\u0027compute_node\u0027, \u0027host_ip\u0027),"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":92,"context_line":"        fields \u003d {"},{"line_number":93,"context_line":"            \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_e13abf33","line":90,"in_reply_to":"1a122d0e_a15a8728","updated":"2016-05-03 13:56:53.000000000","message":"Reading this spec made me go \"ugh, let\u0027s fix that duplication\" so if my patch merges the author may want to update the spec to match.","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2b60325ec14c16433ccaa7ace4349fd082c721b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            \u0027running_vms\u0027: (\u0027compute_node\u0027, \u0027running_vms\u0027),"},{"line_number":88,"context_line":"            \u0027disk_available_least\u0027: (\u0027compute_node\u0027, \u0027disk_available_least\u0027),"},{"line_number":89,"context_line":"            \u0027host_ip\u0027: (\u0027compute_node\u0027, \u0027host_ip\u0027),"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":92,"context_line":"        fields \u003d {"},{"line_number":93,"context_line":"            \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_c0c83d24","line":90,"in_reply_to":"1a122d0e_bcd1f331","updated":"2016-05-04 08:53:37.000000000","message":"@Alexsis: I still not get it. https://review.openstack.org/#/c/300006/ points to \nAdd offset to console log spec I don\u0027t see how the console log relates to the compute node.","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"ad334f5238553f24854a07040e46a9053f911914","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            \u0027running_vms\u0027: (\u0027compute_node\u0027, \u0027running_vms\u0027),"},{"line_number":88,"context_line":"            \u0027disk_available_least\u0027: (\u0027compute_node\u0027, \u0027disk_available_least\u0027),"},{"line_number":89,"context_line":"            \u0027host_ip\u0027: (\u0027compute_node\u0027, \u0027host_ip\u0027),"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":92,"context_line":"        fields \u003d {"},{"line_number":93,"context_line":"            \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_7b1ab8c7","line":90,"in_reply_to":"1a122d0e_c0c83d24","updated":"2016-05-04 09:17:12.000000000","message":"ahhhh OK makes sense now! Wrong link!\n\nIa4fb4dd004f0f0fe0006852e2411ddcb2bb84fd4","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"4df72e910adb5fbb4adc3683c8d1344386814253","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            \u0027running_vms\u0027: (\u0027compute_node\u0027, \u0027running_vms\u0027),"},{"line_number":88,"context_line":"            \u0027disk_available_least\u0027: (\u0027compute_node\u0027, \u0027disk_available_least\u0027),"},{"line_number":89,"context_line":"            \u0027host_ip\u0027: (\u0027compute_node\u0027, \u0027host_ip\u0027),"},{"line_number":90,"context_line":"        }"},{"line_number":91,"context_line":"        VERSION \u003d \u00271.0\u0027"},{"line_number":92,"context_line":"        fields \u003d {"},{"line_number":93,"context_line":"            \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_bcd1f331","line":90,"in_reply_to":"1a122d0e_e13abf33","updated":"2016-05-04 01:25:33.000000000","message":"Sure","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d6576a8d823b7193adfe38a2fab90ca8382cad12","unresolved":false,"context_lines":[{"line_number":131,"context_line":"and compute_node.delete (will be sent after a compute node deleted) will be"},{"line_number":132,"context_line":"introduced with INFO priority and payload of the notifications will be the"},{"line_number":133,"context_line":"serialized form of the already existing ComputeNode versioned object."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Other end user impact"},{"line_number":136,"context_line":"---------------------"},{"line_number":137,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_41757330","line":134,"updated":"2016-05-03 13:48:50.000000000","message":"Will we send an update notification every time the resource tracker updates the node? Will it generate too much messages? I mean with 1000 nodes and with the resource tracker updating the db once per a minute means ~17 message/second.","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a55ac417863365fcc825500dfa74969dc878ab3c","unresolved":false,"context_lines":[{"line_number":131,"context_line":"and compute_node.delete (will be sent after a compute node deleted) will be"},{"line_number":132,"context_line":"introduced with INFO priority and payload of the notifications will be the"},{"line_number":133,"context_line":"serialized form of the already existing ComputeNode versioned object."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Other end user impact"},{"line_number":136,"context_line":"---------------------"},{"line_number":137,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_21731717","line":134,"in_reply_to":"1a122d0e_41757330","updated":"2016-05-03 13:56:53.000000000","message":"+1 can we throttle these? Ideally we\u0027d drop the earlier messages, not the later ones...\n\nThe scheduler shouldn\u0027t constantly be running at capacity but we need to deal with peaks for sure.","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"4df72e910adb5fbb4adc3683c8d1344386814253","unresolved":false,"context_lines":[{"line_number":131,"context_line":"and compute_node.delete (will be sent after a compute node deleted) will be"},{"line_number":132,"context_line":"introduced with INFO priority and payload of the notifications will be the"},{"line_number":133,"context_line":"serialized form of the already existing ComputeNode versioned object."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"Other end user impact"},{"line_number":136,"context_line":"---------------------"},{"line_number":137,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":5,"id":"1a122d0e_1c6c679c","line":134,"in_reply_to":"1a122d0e_41757330","updated":"2016-05-04 01:25:33.000000000","message":"No, notification will be sent only if there is any of the non static fields changed. I\u0027ll add a note here.","commit_id":"07c1dfea9928aa91815c52f33b6a22d30eb0e333"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"978cdeaacf873679e7ed9f88b60c0193dc467ef4","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        }"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    @base.NovaObjectRegistry.register"},{"line_number":130,"context_line":"    class DeletePayload(notification.NotificationPayloadBase):"},{"line_number":131,"context_line":"        # Version 1.0: Initial version"},{"line_number":132,"context_line":"        SCHEMA \u003d {"},{"line_number":133,"context_line":"            \u0027id\u0027: (\u0027compute_node\u0027, \u0027id\u0027),"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1a122d0e_8043e5ae","line":130,"updated":"2016-05-04 08:49:50.000000000","message":"Please make this ComputeNodeDeletePayload","commit_id":"38ad60bb95f9fde35f4ac4b02dcd05b4a9047930"}]}
