)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"96841968d446858740533597d1f07f7e9b83b689","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"00fc6b5a_6f48266a","updated":"2023-12-15 10:16:56.000000000","message":"recheck","commit_id":"b8451b3ce605c09a0781cc8ecd24c2fe73c2b0a9"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"29d331f9fb2e6111f736201caaa024030b731084","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"921f298f_b74fb015","updated":"2023-12-14 21:20:05.000000000","message":"recheck","commit_id":"b8451b3ce605c09a0781cc8ecd24c2fe73c2b0a9"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"52a608ea3f60320d771ccefa929c522f55cdf863","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9db7a681_d5a8c500","updated":"2024-03-19 20:21:28.000000000","message":"dan raised so valid concurns with this overall approch\n\nhe would like use to abandon the backporatable hcange and just do this properly with the object changed.\n\nim also concered about the question he raised about how looping over the keys is working in the dirver currently.","commit_id":"2b2ebc25b86a84dcdadadd8b3f0afb9f6dc0026a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"449fade96acbc476935d6a25bd52311ee4cfed03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"33423fb4_413f3f3b","updated":"2024-03-22 13:28:43.000000000","message":"Test stuff, see inline.","commit_id":"f865e970e5b7fce480e0e184fd5ddbb92b9b153a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b757e392cb6ad632952bc6315b8f038b3592146e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"79eed5ca_10588596","updated":"2024-04-02 14:42:57.000000000","message":"Oh, when we discussed this with Dan and Sean, we think that splitting out the object changes into their own patch is a good idea.","commit_id":"e7913ee7bb556367b8e9c7952321b0dd63701656"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"910e9311fdfb3e31b4a033fb1b7aa092b457174b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9feb467f_7d1cec0c","in_reply_to":"79eed5ca_10588596","updated":"2024-04-03 14:14:34.000000000","message":"Yep.","commit_id":"e7913ee7bb556367b8e9c7952321b0dd63701656"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"03e50f7cc9511c0d8daadbd90c02905fd7206c5e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"5e4ce5c6_8df11827","updated":"2024-04-24 14:59:50.000000000","message":"Sean was +2 before, this was just rebased","commit_id":"2c3f4f2da541c87c10c0ecef6d006715922c5c84"}],"nova/objects/migrate_data.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"60a3f6052a6d13480e6015e3c400bd4ea7555753","unresolved":true,"context_lines":[{"line_number":296,"context_line":"        if value is None:"},{"line_number":297,"context_line":"            self.dst_numa_info.cpu_pins[\"dst_cpu_shared_set_info\"] \u003d set()"},{"line_number":298,"context_line":"        else:"},{"line_number":299,"context_line":"            self.dst_numa_info.cpu_pins[\"dst_cpu_shared_set_info\"] \u003d value"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":302,"context_line":"        super(LibvirtLiveMigrateData, self).obj_make_compatible("}],"source_content_type":"text/x-python","patch_set":1,"id":"988e57c9_fbc2deb1","side":"PARENT","line":299,"updated":"2023-12-21 02:08:37.000000000","message":"we cant actully just drop the property\n\nwe still need to supprot this old workflow when one compute is upgraded and the other is not\n\nso you should add the field with a slightly diffent name and continue to use property to supprot 1.10 and older obejcts form nodes that are patched.\n\nwe can only really drop this on a 2.0 object version","commit_id":"7a57bb076b056f6d2067482ca01d837d2a9bf56f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"539af6bb65711357745789fcc79ec44bbcab04f0","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        if value is None:"},{"line_number":297,"context_line":"            self.dst_numa_info.cpu_pins[\"dst_cpu_shared_set_info\"] \u003d set()"},{"line_number":298,"context_line":"        else:"},{"line_number":299,"context_line":"            self.dst_numa_info.cpu_pins[\"dst_cpu_shared_set_info\"] \u003d value"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":302,"context_line":"        super(LibvirtLiveMigrateData, self).obj_make_compatible("}],"source_content_type":"text/x-python","patch_set":1,"id":"3e907605_2b4c1559","side":"PARENT","line":299,"in_reply_to":"916f80cb_8d7a662d","updated":"2024-04-07 05:11:02.000000000","message":"Acknowledged","commit_id":"7a57bb076b056f6d2067482ca01d837d2a9bf56f"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"47757622335cbbe7dd0b1bcb02bf5d1b7b6f4237","unresolved":true,"context_lines":[{"line_number":296,"context_line":"        if value is None:"},{"line_number":297,"context_line":"            self.dst_numa_info.cpu_pins[\"dst_cpu_shared_set_info\"] \u003d set()"},{"line_number":298,"context_line":"        else:"},{"line_number":299,"context_line":"            self.dst_numa_info.cpu_pins[\"dst_cpu_shared_set_info\"] \u003d value"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":302,"context_line":"        super(LibvirtLiveMigrateData, self).obj_make_compatible("}],"source_content_type":"text/x-python","patch_set":1,"id":"b18c9f5a_ff5fe73f","side":"PARENT","line":299,"in_reply_to":"988e57c9_fbc2deb1","updated":"2024-03-12 13:57:47.000000000","message":"Hi Sean, after discussing this point with Artom, we don\u0027t see a case where the new code would require the properties.\n\nMiration between computes:\n\nold without patch --\u003e old without patch \u003d\u003e bug\nold without patch --\u003e old + patch \u003d\u003e bug\nold without patch --\u003e new code (bug) \u003d\u003e bug\n\nold + patch --\u003e old without patch \u003d\u003e bug\nold + patch --\u003e old + patch \u003d\u003e ok\nold + patch --\u003e new code \u003d\u003e ok\n\nnew code --\u003e old without patch \u003d\u003e bug\nnew code --\u003e old + patch \u003d\u003e ok\nnew code --\u003e new code \u003d\u003e ok\n\n\nMaybe we missed something; could you highlight such a case ?","commit_id":"7a57bb076b056f6d2067482ca01d837d2a9bf56f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"52a608ea3f60320d771ccefa929c522f55cdf863","unresolved":true,"context_lines":[{"line_number":296,"context_line":"        if value is None:"},{"line_number":297,"context_line":"            self.dst_numa_info.cpu_pins[\"dst_cpu_shared_set_info\"] \u003d set()"},{"line_number":298,"context_line":"        else:"},{"line_number":299,"context_line":"            self.dst_numa_info.cpu_pins[\"dst_cpu_shared_set_info\"] \u003d value"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":302,"context_line":"        super(LibvirtLiveMigrateData, self).obj_make_compatible("}],"source_content_type":"text/x-python","patch_set":1,"id":"916f80cb_8d7a662d","side":"PARENT","line":299,"in_reply_to":"b18c9f5a_ff5fe73f","updated":"2024-03-19 20:21:28.000000000","message":"im not sure that \"new code --\u003e old + patch\" works\nin this case, we would have to back level the ovo to the object without the field.","commit_id":"7a57bb076b056f6d2067482ca01d837d2a9bf56f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9d66f9fbe7860a8a1e40d83d664018b04d0657e6","unresolved":true,"context_lines":[{"line_number":243,"context_line":"    # Version 1.11: Added dst_supports_mdev_live_migration,"},{"line_number":244,"context_line":"    #               source_mdev_types and target_mdevs fields"},{"line_number":245,"context_line":"    # Version 1.12: Added dst_cpu_shared_set_info"},{"line_number":246,"context_line":"    VERSION \u003d \u00271.12\u0027"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    fields \u003d {"},{"line_number":249,"context_line":"        \u0027filename\u0027: fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"f31c84a8_04b99e0a","line":246,"updated":"2024-03-14 16:37:47.000000000","message":"eeek","commit_id":"6104c9320f189b04f9385108623460a6f8bb6e7a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"611e69232fb92eb4db1e286840d439f3f1fc180a","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    # Version 1.11: Added dst_supports_mdev_live_migration,"},{"line_number":244,"context_line":"    #               source_mdev_types and target_mdevs fields"},{"line_number":245,"context_line":"    # Version 1.12: Added dst_cpu_shared_set_info"},{"line_number":246,"context_line":"    VERSION \u003d \u00271.12\u0027"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"    fields \u003d {"},{"line_number":249,"context_line":"        \u0027filename\u0027: fields.StringField(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"079cb91d_1af0003e","line":246,"in_reply_to":"f31c84a8_04b99e0a","updated":"2024-04-08 14:21:09.000000000","message":"Done","commit_id":"6104c9320f189b04f9385108623460a6f8bb6e7a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"52a608ea3f60320d771ccefa929c522f55cdf863","unresolved":true,"context_lines":[{"line_number":290,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":291,"context_line":"        if (target_version \u003c (1, 12) and"},{"line_number":292,"context_line":"                \u0027dst_cpu_shared_set_info\u0027 in primitive):"},{"line_number":293,"context_line":"            del primitive[\u0027dst_cpu_shared_set_info\u0027]"},{"line_number":294,"context_line":"        if target_version \u003c (1, 11):"},{"line_number":295,"context_line":"            primitive.pop(\u0027target_mdevs\u0027, None)"},{"line_number":296,"context_line":"            primitive.pop(\u0027source_mdev_types\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"db749244_ff96916e","line":293,"updated":"2024-03-19 20:21:28.000000000","message":"so we would have to do more then just delete this here\nto make  \"new code --\u003e old + patch\" work","commit_id":"2b2ebc25b86a84dcdadadd8b3f0afb9f6dc0026a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"539af6bb65711357745789fcc79ec44bbcab04f0","unresolved":true,"context_lines":[{"line_number":290,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":291,"context_line":"        if (target_version \u003c (1, 12) and"},{"line_number":292,"context_line":"                \u0027dst_cpu_shared_set_info\u0027 in primitive):"},{"line_number":293,"context_line":"            del primitive[\u0027dst_cpu_shared_set_info\u0027]"},{"line_number":294,"context_line":"        if target_version \u003c (1, 11):"},{"line_number":295,"context_line":"            primitive.pop(\u0027target_mdevs\u0027, None)"},{"line_number":296,"context_line":"            primitive.pop(\u0027source_mdev_types\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f5679da2_dea3e590","line":293,"in_reply_to":"db749244_ff96916e","updated":"2024-04-07 05:11:02.000000000","message":"my previous comment is nolonger relevent that was for the hack approch.\n\nbut instead can you do this \nif target_version \u003c (1,12):\n  primitive.pop(‘dest_cpu_shared_set_info’, None)","commit_id":"2b2ebc25b86a84dcdadadd8b3f0afb9f6dc0026a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"611e69232fb92eb4db1e286840d439f3f1fc180a","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":291,"context_line":"        if (target_version \u003c (1, 12) and"},{"line_number":292,"context_line":"                \u0027dst_cpu_shared_set_info\u0027 in primitive):"},{"line_number":293,"context_line":"            del primitive[\u0027dst_cpu_shared_set_info\u0027]"},{"line_number":294,"context_line":"        if target_version \u003c (1, 11):"},{"line_number":295,"context_line":"            primitive.pop(\u0027target_mdevs\u0027, None)"},{"line_number":296,"context_line":"            primitive.pop(\u0027source_mdev_types\u0027, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"e9c50836_ee41637a","line":293,"in_reply_to":"f5679da2_dea3e590","updated":"2024-04-08 14:21:09.000000000","message":"Done","commit_id":"2b2ebc25b86a84dcdadadd8b3f0afb9f6dc0026a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ace6f66c9d1f2ac08032dd141c6b16bc59db0a57","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"efe9ffe9_eab8a1e0","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"updated":"2024-04-05 15:00:26.000000000","message":"I don\u0027t see where you ever set this field to None. I see you check for it, but I\u0027m not sure why. This should only be `nullable\u003dTrue` if you want to be able to set it to None. Anything that should always be set to something should not be nullable to avoid needing to check for None-ness everywhere.\n\nNote that being `nullable` has nothing to do with \"can be missing\" as any field can be in the latter state regardless.","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"90bdc6b6af18aaaf426700a46d7329d18acf8235","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ceb2b7f_193cfb84","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"in_reply_to":"36ed831d_91c792ab","updated":"2024-04-08 16:49:27.000000000","message":"i would prefer \"X or Y or []\" or i guess \"X or Y or set()\" where we assign this\n\nwith that said we only add the cpuset xml element if the host have one of the config options set.\n\nso as long as we can detect that there is no restriction None or the empty set is equally valid.","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1110cd9310e0c70c15fb91b34edfd6b73a39f562","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"149dea25_93c12252","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"in_reply_to":"395fed42_924bc703","updated":"2024-04-08 13:56:58.000000000","message":"Okay that\u0027s what I thought.","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"611e69232fb92eb4db1e286840d439f3f1fc180a","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"72b4de3a_ef88cbe1","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"in_reply_to":"395fed42_924bc703","updated":"2024-04-08 14:21:09.000000000","message":"Unless I miss something, during check_can_live_migration_destination both methods get_cpu_shared_set() and get_vcpu_pin_set() return None if no compute configuration is defined.\nSo this field can be set to None when there is no configuration.","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"585afd57d41b368aaafab2cd1b5bfc07b5f44d13","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"68f439cf_d2a82216","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"in_reply_to":"48c1735f_5b4fdb0a","updated":"2024-04-08 15:13:19.000000000","message":"They have both early return:\n\nhttps://github.com/openstack/nova/blob/1bca24aeb0323d70f053d18c61bd0b94e211f5f8/nova/virt/hardware.py#L69\n\nand \n\nhttps://github.com/openstack/nova/blob/1bca24aeb0323d70f053d18c61bd0b94e211f5f8/nova/virt/hardware.py#L54","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"7adc7d6f4aeef64479328faece3f781af8d0ad6d","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"36ed831d_91c792ab","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"in_reply_to":"68f439cf_d2a82216","updated":"2024-04-08 15:22:21.000000000","message":"Okay yep, I guess I missed it.\n\nYou\u0027re doing `X or Y` which means if the first returns None you\u0027ll get the Y value. The reason to consider this is: is there value in communicating None here, or is it easier for the client to just iterate over a list, even if empty? Meaning would `X or Y or []` be just as expressive for what the client cares about without having to do all the checks for \"is this set\" and \"is this set to something\"?\n\nIf None is an important thing to communicate then that\u0027s fine, it can be `nullable\u003dTrue`. If it\u0027s not, I\u0027d prefer it be the simpler definition.","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"ac1698db2c46c82a71bb033900996025a5bb5ed9","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"48c1735f_5b4fdb0a","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"in_reply_to":"72b4de3a_ef88cbe1","updated":"2024-04-08 14:27:40.000000000","message":"I looked last week and could not see it returning None. I may have missed something, but if it can, please point to the code.","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"455fec85f001a753371b793362e261048875c3ab","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"e9c9f019_66341564","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"in_reply_to":"7ceb2b7f_193cfb84","updated":"2024-04-10 07:57:20.000000000","message":"I have changed to using X or Y or set() and removed the nullable\u003dTrue. I hope this is what you expect.","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"03e50f7cc9511c0d8daadbd90c02905fd7206c5e","unresolved":false,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"e51c780b_fcbe785f","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"in_reply_to":"bdf839e4_08cc832d","updated":"2024-04-24 14:59:50.000000000","message":"Done","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"121aa0d45f31b1afca918558e790fc919c3fd874","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"bdf839e4_08cc832d","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"in_reply_to":"e9c9f019_66341564","updated":"2024-04-24 14:20:44.000000000","message":"ill leave dan resolve this but yes i belive you have resolved there comment","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"539af6bb65711357745789fcc79ec44bbcab04f0","unresolved":true,"context_lines":[{"line_number":281,"context_line":"        \u0027source_mdev_types\u0027: fields.DictOfStringsField(),"},{"line_number":282,"context_line":"        # key is source mdev UUID and value is the destination mdev UUID."},{"line_number":283,"context_line":"        \u0027target_mdevs\u0027: fields.DictOfStringsField(),"},{"line_number":284,"context_line":"        \u0027dst_cpu_shared_set_info\u0027: fields.SetOfIntegersField(nullable\u003dTrue),"},{"line_number":285,"context_line":"    }"},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"    def obj_make_compatible(self, primitive, target_version):"}],"source_content_type":"text/x-python","patch_set":7,"id":"395fed42_924bc703","line":284,"range":{"start_line":284,"start_character":61,"end_line":284,"end_character":74},"in_reply_to":"efe9ffe9_eab8a1e0","updated":"2024-04-07 05:11:02.000000000","message":"it does not need to be nullable\u003dtrue\n\nit can be unset or empthy but it should nto need to be None","commit_id":"55875582d62d6eb87918e20d06d56fa61fd71a44"}],"nova/tests/unit/objects/test_migrate_data.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"449fade96acbc476935d6a25bd52311ee4cfed03","unresolved":true,"context_lines":[{"line_number":140,"context_line":"                                              version_manifest\u003dmanifest))"},{"line_number":141,"context_line":"        self.assertNotIn(\u0027dst_supports_mdev_live_migration\u0027, primitive)"},{"line_number":142,"context_line":"        self.assertNotIn(\u0027source_mdev_types\u0027, primitive)"},{"line_number":143,"context_line":"        self.assertNotIn(\u0027target_mdevs\u0027, primitive)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def test_bdm_obj_make_compatible(self):"},{"line_number":146,"context_line":"        obj \u003d migrate_data.LibvirtLiveMigrateBDMInfo("}],"source_content_type":"text/x-python","patch_set":4,"id":"5b46460b_ffb1ce43","line":143,"updated":"2024-03-22 13:28:43.000000000","message":"You need to test your addition to obj_to_primitive() here.","commit_id":"f865e970e5b7fce480e0e184fd5ddbb92b9b153a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eb98462007845fc98943af20ac8622a15d8c5d37","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                              version_manifest\u003dmanifest))"},{"line_number":141,"context_line":"        self.assertNotIn(\u0027dst_supports_mdev_live_migration\u0027, primitive)"},{"line_number":142,"context_line":"        self.assertNotIn(\u0027source_mdev_types\u0027, primitive)"},{"line_number":143,"context_line":"        self.assertNotIn(\u0027target_mdevs\u0027, primitive)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def test_bdm_obj_make_compatible(self):"},{"line_number":146,"context_line":"        obj \u003d migrate_data.LibvirtLiveMigrateBDMInfo("}],"source_content_type":"text/x-python","patch_set":4,"id":"5fbe3531_bad48a06","line":143,"in_reply_to":"5b46460b_ffb1ce43","updated":"2024-03-26 15:15:24.000000000","message":"Done","commit_id":"f865e970e5b7fce480e0e184fd5ddbb92b9b153a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c7a2ffec18f7ca598259d5abd4a6fe9fd7c6730a","unresolved":true,"context_lines":[{"line_number":136,"context_line":"        self.assertNotIn(\u0027dst_numa_info\u0027, primitive)"},{"line_number":137,"context_line":"        self.assertNotIn(\u0027src_supports_numa_live_migration\u0027, primitive)"},{"line_number":138,"context_line":"        self.assertNotIn(\u0027dst_supports_numa_live_migration\u0027, primitive)"},{"line_number":139,"context_line":"        primitive \u003d data(obj.obj_to_primitive(target_version\u003d\u00271.10\u0027,"},{"line_number":140,"context_line":"                                              version_manifest\u003dmanifest))"},{"line_number":141,"context_line":"        self.assertNotIn(\u0027dst_supports_mdev_live_migration\u0027, primitive)"},{"line_number":142,"context_line":"        self.assertNotIn(\u0027source_mdev_types\u0027, primitive)"}],"source_content_type":"text/x-python","patch_set":5,"id":"61a38789_b5fce68c","line":139,"updated":"2024-03-26 15:38:16.000000000","message":"So you would call this again with target_version\u003d\u00271.11\u0027","commit_id":"41cd3bad92f349c73a6203442613f88453fc1b35"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"92da8ccee54cc575d7a53b40c6c9f47bee621173","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.assertNotIn(\u0027dst_numa_info\u0027, primitive)"},{"line_number":137,"context_line":"        self.assertNotIn(\u0027src_supports_numa_live_migration\u0027, primitive)"},{"line_number":138,"context_line":"        self.assertNotIn(\u0027dst_supports_numa_live_migration\u0027, primitive)"},{"line_number":139,"context_line":"        primitive \u003d data(obj.obj_to_primitive(target_version\u003d\u00271.10\u0027,"},{"line_number":140,"context_line":"                                              version_manifest\u003dmanifest))"},{"line_number":141,"context_line":"        self.assertNotIn(\u0027dst_supports_mdev_live_migration\u0027, primitive)"},{"line_number":142,"context_line":"        self.assertNotIn(\u0027source_mdev_types\u0027, primitive)"}],"source_content_type":"text/x-python","patch_set":5,"id":"36e3a562_14b4346e","line":139,"in_reply_to":"61a38789_b5fce68c","updated":"2024-03-27 08:35:05.000000000","message":"Done","commit_id":"41cd3bad92f349c73a6203442613f88453fc1b35"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c7a2ffec18f7ca598259d5abd4a6fe9fd7c6730a","unresolved":true,"context_lines":[{"line_number":141,"context_line":"        self.assertNotIn(\u0027dst_supports_mdev_live_migration\u0027, primitive)"},{"line_number":142,"context_line":"        self.assertNotIn(\u0027source_mdev_types\u0027, primitive)"},{"line_number":143,"context_line":"        self.assertNotIn(\u0027target_mdevs\u0027, primitive)"},{"line_number":144,"context_line":"        self.assertNotIn(\u0027dst_cpu_shared_set_info\u0027, primitive)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_bdm_obj_make_compatible(self):"},{"line_number":147,"context_line":"        obj \u003d migrate_data.LibvirtLiveMigrateBDMInfo("}],"source_content_type":"text/x-python","patch_set":5,"id":"82c4318a_0fef576d","line":144,"updated":"2024-03-26 15:38:16.000000000","message":"No, this needs to be specific to the version that you incremented (1.12)","commit_id":"41cd3bad92f349c73a6203442613f88453fc1b35"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"92da8ccee54cc575d7a53b40c6c9f47bee621173","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        self.assertNotIn(\u0027dst_supports_mdev_live_migration\u0027, primitive)"},{"line_number":142,"context_line":"        self.assertNotIn(\u0027source_mdev_types\u0027, primitive)"},{"line_number":143,"context_line":"        self.assertNotIn(\u0027target_mdevs\u0027, primitive)"},{"line_number":144,"context_line":"        self.assertNotIn(\u0027dst_cpu_shared_set_info\u0027, primitive)"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    def test_bdm_obj_make_compatible(self):"},{"line_number":147,"context_line":"        obj \u003d migrate_data.LibvirtLiveMigrateBDMInfo("}],"source_content_type":"text/x-python","patch_set":5,"id":"23c5eae3_c49f17f7","line":144,"in_reply_to":"82c4318a_0fef576d","updated":"2024-03-27 08:35:05.000000000","message":"I hope I did it correctly this time.\nPlease let me know if something is still not good.","commit_id":"41cd3bad92f349c73a6203442613f88453fc1b35"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"449fade96acbc476935d6a25bd52311ee4cfed03","unresolved":true,"context_lines":[{"line_number":774,"context_line":"        \u003c/domain\u003e"},{"line_number":775,"context_line":"        \"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        self.dst_numa_info \u003d objects.LibvirtLiveMigrateNUMAInfo()"},{"line_number":778,"context_line":"        self.dst_numa_info.cpu_pins \u003d {\"dst_cpu_shared_set_info\": set()}"},{"line_number":779,"context_line":"        self.dst_numa_info \u003d self.dst_numa_info.obj_to_primitive()"},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3ed502f9_6f84dea8","line":777,"updated":"2024-03-22 13:28:43.000000000","message":"I think you forgot to clean this up from the previous backportable version.","commit_id":"f865e970e5b7fce480e0e184fd5ddbb92b9b153a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eb98462007845fc98943af20ac8622a15d8c5d37","unresolved":false,"context_lines":[{"line_number":774,"context_line":"        \u003c/domain\u003e"},{"line_number":775,"context_line":"        \"\"\""},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        self.dst_numa_info \u003d objects.LibvirtLiveMigrateNUMAInfo()"},{"line_number":778,"context_line":"        self.dst_numa_info.cpu_pins \u003d {\"dst_cpu_shared_set_info\": set()}"},{"line_number":779,"context_line":"        self.dst_numa_info \u003d self.dst_numa_info.obj_to_primitive()"},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"f338face_50e38f6e","line":777,"in_reply_to":"3ed502f9_6f84dea8","updated":"2024-03-26 15:15:24.000000000","message":"Done","commit_id":"f865e970e5b7fce480e0e184fd5ddbb92b9b153a"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"449fade96acbc476935d6a25bd52311ee4cfed03","unresolved":true,"context_lines":[{"line_number":10025,"context_line":"        if instance.numa_topology:"},{"line_number":10026,"context_line":"            data.dst_supports_numa_live_migration \u003d True"},{"line_number":10027,"context_line":""},{"line_number":10028,"context_line":"        data.dst_cpu_shared_set_info \u003d hardware.get_cpu_shared_set()"},{"line_number":10029,"context_line":"        if data.dst_cpu_shared_set_info is None:"},{"line_number":10030,"context_line":"            data.dst_cpu_shared_set_info \u003d hardware.get_vcpu_pin_set()"},{"line_number":10031,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"10fabf9a_c053bb39","line":10028,"updated":"2024-03-22 13:28:43.000000000","message":"nit:\n\n    data.dst_cpu_shared_set_info \u003d (hardware.get_cpu_shared_set() or\n                                    hardware.get_vcpu_pin_set())","commit_id":"f865e970e5b7fce480e0e184fd5ddbb92b9b153a"},{"author":{"_account_id":16207,"name":"ribaudr","display_name":"uggla","email":"rene.ribaud@gmail.com","username":"uggla","status":"Red Hat"},"change_message_id":"eb98462007845fc98943af20ac8622a15d8c5d37","unresolved":false,"context_lines":[{"line_number":10025,"context_line":"        if instance.numa_topology:"},{"line_number":10026,"context_line":"            data.dst_supports_numa_live_migration \u003d True"},{"line_number":10027,"context_line":""},{"line_number":10028,"context_line":"        data.dst_cpu_shared_set_info \u003d hardware.get_cpu_shared_set()"},{"line_number":10029,"context_line":"        if data.dst_cpu_shared_set_info is None:"},{"line_number":10030,"context_line":"            data.dst_cpu_shared_set_info \u003d hardware.get_vcpu_pin_set()"},{"line_number":10031,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"a5681322_11e323f1","line":10028,"in_reply_to":"10fabf9a_c053bb39","updated":"2024-03-26 15:15:24.000000000","message":"Done","commit_id":"f865e970e5b7fce480e0e184fd5ddbb92b9b153a"}]}
