)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"504962ff99cf47931614eb7b7ec6654d3084ae85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cf8aada4_0b78c8bb","updated":"2024-04-08 14:54:20.000000000","message":"-1 for the missing test and soft -1 on the mixin name itself.","commit_id":"508d56e3d98b327c49232edaba9ea0b182587d7d"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"abe8eaeaf5c2ee688e2a03f15037bb7af4c07756","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"eddf1864_3c0d9298","updated":"2024-03-21 00:20:00.000000000","message":"Looks OK to me, seems to work in my local testing. The mixin is a nice approach.","commit_id":"508d56e3d98b327c49232edaba9ea0b182587d7d"}],"nova/objects/base.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"504962ff99cf47931614eb7b7ec6654d3084ae85","unresolved":true,"context_lines":[{"line_number":170,"context_line":"            self._context \u003d original_context"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"class NovaVerbosePrintableObject():"},{"line_number":174,"context_line":"    \"\"\"Mixin class for verbose printing in logs."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    this mixin provides an alternative __str__ which"}],"source_content_type":"text/x-python","patch_set":2,"id":"69fe13ce_2b5caccd","line":173,"updated":"2024-04-08 14:54:20.000000000","message":"I\u0027d have appreciated some base UTs like the ones we do in nova.tests.unit.objects.test_objects test module.","commit_id":"508d56e3d98b327c49232edaba9ea0b182587d7d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ea02b880afb9693838accf2c84f06c83de6d5aae","unresolved":false,"context_lines":[{"line_number":170,"context_line":"            self._context \u003d original_context"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"class NovaVerbosePrintableObject():"},{"line_number":174,"context_line":"    \"\"\"Mixin class for verbose printing in logs."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    this mixin provides an alternative __str__ which"}],"source_content_type":"text/x-python","patch_set":2,"id":"a0c10ea0_b04320f7","line":173,"in_reply_to":"69fe13ce_2b5caccd","updated":"2024-08-19 16:51:36.000000000","message":"Done","commit_id":"508d56e3d98b327c49232edaba9ea0b182587d7d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb4debd76e6f7240fd7df99e6d89c8a158bb13d0","unresolved":true,"context_lines":[{"line_number":170,"context_line":"            self._context \u003d original_context"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"class JSONPrintableObject():"},{"line_number":174,"context_line":"    \"\"\"Mixin class for verbose printing in logs."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    this mixin provides an alternative __str__ which"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa07358d_fbcd0bc4","line":173,"range":{"start_line":173,"start_character":25,"end_line":173,"end_character":27},"updated":"2024-08-20 12:05:15.000000000","message":"You don\u0027t need this in Python 3\n\nAlso, any reason to make this a mixin rather than adding it to the base Nova object?","commit_id":"16b700310c2a1e3d8039d5cd086b695991ac6971"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"557700fd4b636103c37214b9e0d677c086a2a0bc","unresolved":true,"context_lines":[{"line_number":170,"context_line":"            self._context \u003d original_context"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"class JSONPrintableObject():"},{"line_number":174,"context_line":"    \"\"\"Mixin class for verbose printing in logs."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    this mixin provides an alternative __str__ which"}],"source_content_type":"text/x-python","patch_set":3,"id":"19e26574_36972f27","line":173,"range":{"start_line":173,"start_character":25,"end_line":173,"end_character":27},"in_reply_to":"fa07358d_fbcd0bc4","updated":"2024-08-20 12:35:22.000000000","message":"I had considered that but this is pretty verbose, which is why previously called this NovaVerbosePrintableObject. i think its likely too verbose to use by default but if other are happy with it then i could.\n\ni applied this to only the object that were not providing enough info to allow me to properly debug numa issues.","commit_id":"16b700310c2a1e3d8039d5cd086b695991ac6971"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb4debd76e6f7240fd7df99e6d89c8a158bb13d0","unresolved":true,"context_lines":[{"line_number":177,"context_line":"    dumps the object as json via invoking obj_to_primitive"},{"line_number":178,"context_line":"    \"\"\""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def __str__(self):"},{"line_number":181,"context_line":"        return jsonutils.dumps(self.obj_to_primitive())"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"448e21f3_85401c8a","line":180,"range":{"start_line":180,"start_character":8,"end_line":180,"end_character":15},"updated":"2024-08-20 12:05:15.000000000","message":"Wouldn\u0027t `__repr__` make more sense given this is machine-readable? https://stackoverflow.com/questions/1436703/what-is-the-difference-between-str-and-repr","commit_id":"16b700310c2a1e3d8039d5cd086b695991ac6971"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"557700fd4b636103c37214b9e0d677c086a2a0bc","unresolved":true,"context_lines":[{"line_number":177,"context_line":"    dumps the object as json via invoking obj_to_primitive"},{"line_number":178,"context_line":"    \"\"\""},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    def __str__(self):"},{"line_number":181,"context_line":"        return jsonutils.dumps(self.obj_to_primitive())"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"16876a4d_36f1530e","line":180,"range":{"start_line":180,"start_character":8,"end_line":180,"end_character":15},"in_reply_to":"448e21f3_85401c8a","updated":"2024-08-20 12:35:22.000000000","message":"i consider json to be human readibale but hte main reason not to is that the __repr__ is menat ot be in the formce of a constcutor call\n\nMyClass(\"posArg1\",kwarg2\u003dsomeval)\n\nso it would be less correct to use __repr__ hear.","commit_id":"16b700310c2a1e3d8039d5cd086b695991ac6971"}],"nova/objects/instance_numa.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"504962ff99cf47931614eb7b7ec6654d3084ae85","unresolved":true,"context_lines":[{"line_number":29,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":30,"context_line":"class InstanceNUMACell("},{"line_number":31,"context_line":"    base.NovaEphemeralObject, base.NovaObjectDictCompat,"},{"line_number":32,"context_line":"    base.NovaVerbosePrintableObject):"},{"line_number":33,"context_line":"    # Version 1.0: Initial version"},{"line_number":34,"context_line":"    # Version 1.1: Add pagesize field"},{"line_number":35,"context_line":"    # Version 1.2: Add cpu_pinning_raw and topology fields"}],"source_content_type":"text/x-python","patch_set":2,"id":"09e027d8_e1600514","line":32,"range":{"start_line":32,"start_character":9,"end_line":32,"end_character":35},"updated":"2024-04-08 14:54:20.000000000","message":"nit: JSONPrintableObject seems a better name to me.","commit_id":"508d56e3d98b327c49232edaba9ea0b182587d7d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ea02b880afb9693838accf2c84f06c83de6d5aae","unresolved":false,"context_lines":[{"line_number":29,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":30,"context_line":"class InstanceNUMACell("},{"line_number":31,"context_line":"    base.NovaEphemeralObject, base.NovaObjectDictCompat,"},{"line_number":32,"context_line":"    base.NovaVerbosePrintableObject):"},{"line_number":33,"context_line":"    # Version 1.0: Initial version"},{"line_number":34,"context_line":"    # Version 1.1: Add pagesize field"},{"line_number":35,"context_line":"    # Version 1.2: Add cpu_pinning_raw and topology fields"}],"source_content_type":"text/x-python","patch_set":2,"id":"355f1db0_cd261e83","line":32,"range":{"start_line":32,"start_character":9,"end_line":32,"end_character":35},"in_reply_to":"09e027d8_e1600514","updated":"2024-08-19 16:51:36.000000000","message":"Done","commit_id":"508d56e3d98b327c49232edaba9ea0b182587d7d"}],"nova/objects/instance_pci_requests.py":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"abe8eaeaf5c2ee688e2a03f15037bb7af4c07756","unresolved":true,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":73,"context_line":"class InstancePCIRequests("},{"line_number":74,"context_line":"    base.NovaObject, base.NovaVerbosePrintableObject):"},{"line_number":75,"context_line":"    # Version 1.0: Initial version"},{"line_number":76,"context_line":"    # Version 1.1: InstancePCIRequest 1.1"},{"line_number":77,"context_line":"    VERSION \u003d \u00271.1\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"2b81dbbb_34235d65","line":74,"updated":"2024-03-21 00:20:00.000000000","message":"This appears to work to show individual `InstancePCIRequest` details in the `r.pci_requests` list:\n```\n\u003e\u003e\u003e str(r)\n\u0027RequestSpec(availability_zone\u003d\u003c?\u003e,flavor\u003d\u003c?\u003e,force_hosts\u003d\u003c?\u003e,force_nodes\u003d\u003c?\u003e,id\u003d\u003c?\u003e,ignore_hosts\u003d\u003c?\u003e,image\u003d\u003c?\u003e,instance_group\u003d\u003c?\u003e,instance_uuid\u003d\u003c?\u003e,is_bfv\u003d\u003c?\u003e,limits\u003d\u003c?\u003e,network_metadata\u003d\u003c?\u003e,num_instances\u003d\u003c?\u003e,numa_topology\u003d\u003c?\u003e,pci_requests\u003dInstancePCIRequests,project_id\u003d\u003c?\u003e,request_level_params\u003d\u003c?\u003e,requested_destination\u003d\u003c?\u003e,requested_networks\u003d\u003c?\u003e,requested_resources\u003d\u003c?\u003e,retry\u003d\u003c?\u003e,scheduler_hints\u003d\u003c?\u003e,security_groups\u003d\u003c?\u003e,user_id\u003d\u003c?\u003e)\u0027\n\u003e\u003e\u003e str(r.pci_requests)\n\u0027{\"nova_object.name\": \"InstancePCIRequests\", \"nova_object.namespace\": \"nova\", \"nova_object.version\": \"1.1\", \"nova_object.data\": {\"requests\": [{\"nova_object.name\": \"InstancePCIRequest\", \"nova_object.namespace\": \"nova\", \"nova_object.version\": \"1.4\", \"nova_object.data\": {\"requester_id\": \"foo\"}, \"nova_object.changes\": [\"requester_id\"]}]}, \"nova_object.changes\": [\"requests\"]}\u0027\n\u003e\u003e\u003e str(r.pci_requests.requests)\n\"[InstancePCIRequest(alias_name\u003d\u003c?\u003e,count\u003d\u003c?\u003e,is_new\u003d\u003c?\u003e,numa_policy\u003d\u003c?\u003e,request_id\u003d\u003c?\u003e,requester_id\u003d\u0027foo\u0027,spec\u003d\u003c?\u003e)]\"\n```","commit_id":"508d56e3d98b327c49232edaba9ea0b182587d7d"}]}
