)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3e5768dff04ec9bf1bcbb29af6658ac38ea35143","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] create ResourceSummaryNotification object"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"this is a poc of what the obejct woudl look like"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I70e54d2a1d7cb26da473e7e7dda7a8a8afea9d9b"},{"line_number":12,"context_line":"Signed-off-by: Sean Mooney \u003cwork@seanmooney.info\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"15a9d482_4c0b56d1","line":9,"updated":"2025-11-26 19:58:03.000000000","message":"https://termbin.com/hary","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"}],"nova/notifications/objects/resources.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aaaf7a02714b228749e24fa95d82efe828fed42a","unresolved":true,"context_lines":[{"line_number":30,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":31,"context_line":"    fields \u003d {"},{"line_number":32,"context_line":"        \u0027request_spec\u0027: fields.ObjectField(\u0027RequestSpec\u0027),"},{"line_number":33,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027kernel_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":35,"context_line":"        \u0027ramdisk_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":36,"context_line":"        \u0027metadata\u0027: fields.DictOfStringsField()"}],"source_content_type":"text/x-python","patch_set":1,"id":"4367cd86_bcbe0691","line":33,"updated":"2025-11-27 16:03:33.000000000","message":"I would include the instance_uuid as well. Or is it in the request spec already? Anyhow it is a bit strange structure that display_name is on top level but instance_uuid is in inside the request_spec","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"90304ce422a67add4abc7df52e6d72604b17bc25","unresolved":true,"context_lines":[{"line_number":30,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":31,"context_line":"    fields \u003d {"},{"line_number":32,"context_line":"        \u0027request_spec\u0027: fields.ObjectField(\u0027RequestSpec\u0027),"},{"line_number":33,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027kernel_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":35,"context_line":"        \u0027ramdisk_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":36,"context_line":"        \u0027metadata\u0027: fields.DictOfStringsField()"}],"source_content_type":"text/x-python","patch_set":1,"id":"8855caf4_5fe404a8","line":33,"in_reply_to":"3bcf93da_7ea21a07","updated":"2025-12-02 15:54:09.000000000","message":"so i had planned to add properly to provide a nicer interface in some cases but im obvioulsy not focusing on the the completeness of the poc right now.\n\nbut ok i take the feedback on optimising not for reuse of the exsiting object as i tought i was asked to do orgianlly and instead optimise for easy of consumption.","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d4ddb16f9812bc6ebe9c827925ec675c7ea69f8f","unresolved":true,"context_lines":[{"line_number":30,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":31,"context_line":"    fields \u003d {"},{"line_number":32,"context_line":"        \u0027request_spec\u0027: fields.ObjectField(\u0027RequestSpec\u0027),"},{"line_number":33,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027kernel_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":35,"context_line":"        \u0027ramdisk_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":36,"context_line":"        \u0027metadata\u0027: fields.DictOfStringsField()"}],"source_content_type":"text/x-python","patch_set":1,"id":"a279090f_75318aaf","line":33,"in_reply_to":"4367cd86_bcbe0691","updated":"2025-11-27 16:38:57.000000000","message":"its in the request sepc yes as instance_uuid\n\nhttps://github.com/openstack/nova/blob/master/nova/objects/request_spec.py#L101\n\ni can provide a property for exposing it or duplicate it into the top level","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cefe898c6ac3a4a3e587b8dc8e69cc8890ffabe2","unresolved":true,"context_lines":[{"line_number":30,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":31,"context_line":"    fields \u003d {"},{"line_number":32,"context_line":"        \u0027request_spec\u0027: fields.ObjectField(\u0027RequestSpec\u0027),"},{"line_number":33,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027kernel_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":35,"context_line":"        \u0027ramdisk_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":36,"context_line":"        \u0027metadata\u0027: fields.DictOfStringsField()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3bcf93da_7ea21a07","line":33,"in_reply_to":"a279090f_75318aaf","updated":"2025-12-02 14:28:50.000000000","message":"This shows one of the reason I\u0027m uneasy about exposing the RequestSpec directly. It is structured in way that is good for nova\u0027s internal use, but makes it a bit confusing to consume it externally.","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aaaf7a02714b228749e24fa95d82efe828fed42a","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    fields \u003d {"},{"line_number":32,"context_line":"        \u0027request_spec\u0027: fields.ObjectField(\u0027RequestSpec\u0027),"},{"line_number":33,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027kernel_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":35,"context_line":"        \u0027ramdisk_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":36,"context_line":"        \u0027metadata\u0027: fields.DictOfStringsField()"},{"line_number":37,"context_line":"    }"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"a8121381_4da705f3","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":56},"updated":"2025-11-27 16:03:33.000000000","message":"Isn\u0027t it part of the request_spec.image already?","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"90304ce422a67add4abc7df52e6d72604b17bc25","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    fields \u003d {"},{"line_number":32,"context_line":"        \u0027request_spec\u0027: fields.ObjectField(\u0027RequestSpec\u0027),"},{"line_number":33,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027kernel_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":35,"context_line":"        \u0027ramdisk_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":36,"context_line":"        \u0027metadata\u0027: fields.DictOfStringsField()"},{"line_number":37,"context_line":"    }"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"d6bb0b12_ff7558a4","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":56},"in_reply_to":"79d376f4_024b5cff","updated":"2025-12-02 15:54:09.000000000","message":"i can remove the request spec and create a new obejct\n\ni was orgianly trying to aoid addin new object if an exsitng once coudl be used but i can add a RequestSummary object instead","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d4ddb16f9812bc6ebe9c827925ec675c7ea69f8f","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    fields \u003d {"},{"line_number":32,"context_line":"        \u0027request_spec\u0027: fields.ObjectField(\u0027RequestSpec\u0027),"},{"line_number":33,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027kernel_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":35,"context_line":"        \u0027ramdisk_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":36,"context_line":"        \u0027metadata\u0027: fields.DictOfStringsField()"},{"line_number":37,"context_line":"    }"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f0e9c5a2_c7b3fd7c","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":56},"in_reply_to":"a8121381_4da705f3","updated":"2025-11-27 16:38:57.000000000","message":"ill double check that i tried to dedupcliate the field between the two but i may have missed that.","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cefe898c6ac3a4a3e587b8dc8e69cc8890ffabe2","unresolved":true,"context_lines":[{"line_number":31,"context_line":"    fields \u003d {"},{"line_number":32,"context_line":"        \u0027request_spec\u0027: fields.ObjectField(\u0027RequestSpec\u0027),"},{"line_number":33,"context_line":"        \u0027display_name\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":34,"context_line":"        \u0027kernel_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":35,"context_line":"        \u0027ramdisk_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":36,"context_line":"        \u0027metadata\u0027: fields.DictOfStringsField()"},{"line_number":37,"context_line":"    }"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"79d376f4_024b5cff","line":35,"range":{"start_line":34,"start_character":0,"end_line":35,"end_character":56},"in_reply_to":"f0e9c5a2_c7b3fd7c","updated":"2025-12-02 14:28:50.000000000","message":"yeah again, I think exposing the request spec directly creates this kind of de-duplication needs.","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aaaf7a02714b228749e24fa95d82efe828fed42a","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        \u0027numa_topology\u0027: fields.ObjectField(\u0027NUMATopology\u0027),"},{"line_number":53,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField("},{"line_number":54,"context_line":"            \u0027PciDevicePoolList\u0027, nullable\u003dTrue),"},{"line_number":55,"context_line":"        \u0027local_gb\u0027: fields.IntegerField(),"},{"line_number":56,"context_line":"        \u0027local_gb_used\u0027: fields.IntegerField(),"},{"line_number":57,"context_line":"        \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":58,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"c513f357_d92f99a4","line":55,"updated":"2025-11-27 16:03:33.000000000","message":"Do we always have a numa_topology with cpu and ram, therefore only local disk needed separately?","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"90304ce422a67add4abc7df52e6d72604b17bc25","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        \u0027numa_topology\u0027: fields.ObjectField(\u0027NUMATopology\u0027),"},{"line_number":53,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField("},{"line_number":54,"context_line":"            \u0027PciDevicePoolList\u0027, nullable\u003dTrue),"},{"line_number":55,"context_line":"        \u0027local_gb\u0027: fields.IntegerField(),"},{"line_number":56,"context_line":"        \u0027local_gb_used\u0027: fields.IntegerField(),"},{"line_number":57,"context_line":"        \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":58,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"d0e432b9_f1e0b653","line":55,"in_reply_to":"c2bdb6cc_47e1002e","updated":"2025-12-02 15:54:09.000000000","message":"we can do that.\n\nto be clear we do not have access to the request spec and i was going to have to generate it form the aviabel data on the compute so this is not really optimised for ease of generation\n\ni was optimisting for the smallest number fo new objects and trying to reuses as many fo the exsting obejcts as possible.","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d4ddb16f9812bc6ebe9c827925ec675c7ea69f8f","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        \u0027numa_topology\u0027: fields.ObjectField(\u0027NUMATopology\u0027),"},{"line_number":53,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField("},{"line_number":54,"context_line":"            \u0027PciDevicePoolList\u0027, nullable\u003dTrue),"},{"line_number":55,"context_line":"        \u0027local_gb\u0027: fields.IntegerField(),"},{"line_number":56,"context_line":"        \u0027local_gb_used\u0027: fields.IntegerField(),"},{"line_number":57,"context_line":"        \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":58,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"fabec193_6bde89fb","line":55,"in_reply_to":"c513f357_d92f99a4","updated":"2025-11-27 16:38:57.000000000","message":"a host toplogy yes if its the libvirt driver.\n\nthat intially all im targeting but if i wanted to supprot other drvier i woudl need to add field for it.\n\n\ni actullly started the https://github.com/openstack/nova/blob/master/nova/objects/compute_node.py#L58-L99\n\nand removed the filed that i either didnt need like running_vms\nor that could be determine dform the other files but perhaps i shoudl\nkeep the topevel cpu/ram/disk\n\nthat exacty why i didnt include them since you can compute it\nbut i could provide properties or","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cefe898c6ac3a4a3e587b8dc8e69cc8890ffabe2","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        \u0027numa_topology\u0027: fields.ObjectField(\u0027NUMATopology\u0027),"},{"line_number":53,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField("},{"line_number":54,"context_line":"            \u0027PciDevicePoolList\u0027, nullable\u003dTrue),"},{"line_number":55,"context_line":"        \u0027local_gb\u0027: fields.IntegerField(),"},{"line_number":56,"context_line":"        \u0027local_gb_used\u0027: fields.IntegerField(),"},{"line_number":57,"context_line":"        \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":58,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"c2bdb6cc_47e1002e","line":55,"in_reply_to":"fabec193_6bde89fb","updated":"2025-12-02 14:28:50.000000000","message":"yeah as this notification will probably be consumed by may different parties we might want to prioritize the easy of consumption over the easy of generation.","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aaaf7a02714b228749e24fa95d82efe828fed42a","unresolved":true,"context_lines":[{"line_number":54,"context_line":"            \u0027PciDevicePoolList\u0027, nullable\u003dTrue),"},{"line_number":55,"context_line":"        \u0027local_gb\u0027: fields.IntegerField(),"},{"line_number":56,"context_line":"        \u0027local_gb_used\u0027: fields.IntegerField(),"},{"line_number":57,"context_line":"        \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":58,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":59,"context_line":"        \u0027disk_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":60,"context_line":"        \u0027instances\u0027: fields.ListOfObjectsField(\u0027InstanceSummaryPayload\u0027)"},{"line_number":61,"context_line":"        # TODO(sean-k-mooney): add the pci aliases definitions"},{"line_number":62,"context_line":"        # mdevs and resources field and that should be the full object?"}],"source_content_type":"text/x-python","patch_set":1,"id":"cb9c0fb6_46aaea6b","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":53},"updated":"2025-11-27 16:03:33.000000000","message":"I\u0027m wondering if about this placement is the authoritative source not nova compute any more.\n\nI think we passed the point many years ago when the compute does not really define the allocation ratio in all cases and the authoritative source of that information is placement. \n\nSo will this field show what is set in placement? Or the real value in placement can be different from this as this will be based on how the compute is configured?\n\nhttps://docs.openstack.org/nova/latest/admin/scheduling.html#usage-scenarios","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"90304ce422a67add4abc7df52e6d72604b17bc25","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            \u0027PciDevicePoolList\u0027, nullable\u003dTrue),"},{"line_number":55,"context_line":"        \u0027local_gb\u0027: fields.IntegerField(),"},{"line_number":56,"context_line":"        \u0027local_gb_used\u0027: fields.IntegerField(),"},{"line_number":57,"context_line":"        \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":58,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":59,"context_line":"        \u0027disk_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":60,"context_line":"        \u0027instances\u0027: fields.ListOfObjectsField(\u0027InstanceSummaryPayload\u0027)"},{"line_number":61,"context_line":"        # TODO(sean-k-mooney): add the pci aliases definitions"},{"line_number":62,"context_line":"        # mdevs and resources field and that should be the full object?"}],"source_content_type":"text/x-python","patch_set":1,"id":"cd708e32_2ced69e5","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":53},"in_reply_to":"49136065_e251af4b","updated":"2025-12-02 15:54:09.000000000","message":"yes that is why i remvoed them in v2 based on yoru comment in v1","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d4ddb16f9812bc6ebe9c827925ec675c7ea69f8f","unresolved":true,"context_lines":[{"line_number":54,"context_line":"            \u0027PciDevicePoolList\u0027, nullable\u003dTrue),"},{"line_number":55,"context_line":"        \u0027local_gb\u0027: fields.IntegerField(),"},{"line_number":56,"context_line":"        \u0027local_gb_used\u0027: fields.IntegerField(),"},{"line_number":57,"context_line":"        \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":58,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":59,"context_line":"        \u0027disk_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":60,"context_line":"        \u0027instances\u0027: fields.ListOfObjectsField(\u0027InstanceSummaryPayload\u0027)"},{"line_number":61,"context_line":"        # TODO(sean-k-mooney): add the pci aliases definitions"},{"line_number":62,"context_line":"        # mdevs and resources field and that should be the full object?"}],"source_content_type":"text/x-python","patch_set":1,"id":"f41bb48e_feab3528","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":53},"in_reply_to":"cb9c0fb6_46aaea6b","updated":"2025-11-27 16:38:57.000000000","message":"i could just remvoe this and say regreadless of if it coming form the the config or not jsut check placement.\n\nthis would reduce the size of the object slightly but you woudl have to enrich your data model slighty with extra info form palcement which is fine sicne im not planning ot include all the tratis ectra that we reprot there so you will have to do that anyway.\n\ni dont really consider placement to be the athoritive soruce of the value just a data store sicne the comptue manage controels the creation fo the inventory and the config option contple if you can manage this via the api or not without it being overwrtienen but i think your point that its simpler if you jsut read the value form there instead.","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cefe898c6ac3a4a3e587b8dc8e69cc8890ffabe2","unresolved":true,"context_lines":[{"line_number":54,"context_line":"            \u0027PciDevicePoolList\u0027, nullable\u003dTrue),"},{"line_number":55,"context_line":"        \u0027local_gb\u0027: fields.IntegerField(),"},{"line_number":56,"context_line":"        \u0027local_gb_used\u0027: fields.IntegerField(),"},{"line_number":57,"context_line":"        \u0027cpu_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":58,"context_line":"        \u0027ram_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":59,"context_line":"        \u0027disk_allocation_ratio\u0027: fields.FloatField(),"},{"line_number":60,"context_line":"        \u0027instances\u0027: fields.ListOfObjectsField(\u0027InstanceSummaryPayload\u0027)"},{"line_number":61,"context_line":"        # TODO(sean-k-mooney): add the pci aliases definitions"},{"line_number":62,"context_line":"        # mdevs and resources field and that should be the full object?"}],"source_content_type":"text/x-python","patch_set":1,"id":"49136065_e251af4b","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":53},"in_reply_to":"f41bb48e_feab3528","updated":"2025-12-02 14:28:50.000000000","message":"\u003e this would reduce the size of the object slightly but you woudl have to enrich your data model slighty with extra info form palcement which is fine sicne im not planning ot include all the tratis ectra that we reprot there so you will have to do that anyway.\n\nMy point is that even if we include these fields to the notification if the value of these fields cannot be guaranteed to be the same as the value in placement then these fields are useless as the consumer of the notification cannot trust this field values and instead needs to go to placement to read it anyhow.\n\nAnd we know that the nova config value cannot be trusted as we documented that in usage scenario 2 the admin manages the allocation ratio directly in placement \nhttps://docs.openstack.org/nova/latest/admin/scheduling.html#usage-scenarios\n\nSo the only way to make these field useful if nova ensures that the value in the notification is the same as the value in placement. So either nova does that (which probably means reading the value back from placement. The provider_tree should have it.) or nova should not emit these fields to avoid confusion.","commit_id":"540fe7655dae6589fab6679fec67bac897a562c8"}]}
