)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"406f0763b4a1bff168d9bae267b566ef9e7d5370","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"beded86b_e0ae8d78","updated":"2022-02-08 15:49:33.000000000","message":"split of objects/notifications","commit_id":"b0327a421e1e4af9630617857af92759fa71af39"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6ce13254528c223bb788c379d36afa9d08ce46dc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e8437ab7_d42a1c55","updated":"2022-02-10 09:57:04.000000000","message":"The grenade failure seems relevant:\n\ntempest-LiveAutoBlockMigrationV225Test-404060165-project-admin] Unexpected exception in API method: nova.exception_Remote.MigrationError_Remote: Migration error: Architecture name \u0027riscv32\u0027 is not valid\n\noslo_versionedobjects.exception.IncompatibleObjectVersion: Version 1.3 of HVSpec is not supported, supported version is 1.2\n\nhttps://zuul.opendev.org/t/openstack/build/f3aad23caf9e41b88a7a786fdf9d5841/log/controller/logs/screen-n-api.txt#8942","commit_id":"7aeaf2066786a0e046f3b9d500d1174ebeccf293"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"74dc320190bf1cee38c992e66c12915e255106f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"8a091b91_dce2e2a2","updated":"2022-02-21 17:32:49.000000000","message":"Looks good! Thanks Jonathan\n","commit_id":"6151ea95b4f091aec500ab186142552264655e66"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6d84497c3f5149b29c64dfcab98c6efe4739dfc9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"4fd8c96a_583927ea","updated":"2022-02-24 19:57:29.000000000","message":"recheck","commit_id":"79887a610bef5b9402d059b9f7afd3d204e7342e"}],"nova/objects/compute_node.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"fc72a0dda5b368c23a91f8a6b0244e10b8d511a5","unresolved":true,"context_lines":[{"line_number":85,"context_line":"        \u0027numa_topology\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":86,"context_line":"        # NOTE(pmurray): the supported_hv_specs field maps to the"},{"line_number":87,"context_line":"        # supported_instances field in the database"},{"line_number":88,"context_line":"        \u0027supported_hv_specs\u0027: fields.ListOfObjectsField(\u0027HVSpec\u0027),"},{"line_number":89,"context_line":"        # NOTE(pmurray): the pci_device_pools field maps to the"},{"line_number":90,"context_line":"        # pci_stats field in the database"},{"line_number":91,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField(\u0027PciDevicePoolList\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"e053f676_d04e6738","line":88,"updated":"2022-02-14 10:54:03.000000000","message":"Grenade is still failing [1]. If I understand correctly the old compute loads up the new compute ovo from the DB (via the conductor) during check_can_live_migrate_destination() that triggers a backport of the HVSpec object in the new compute node ovo. But in the new compute ovo we have HVSpec objects already pointing to the new arch enum values. \n\nWondering if we need to bump the version of the ComputeNode object too and drop the those HVSpec objects from this list that contains the new architecture values.\n\n@Dan: What do you think? What would be the proper solution here?\n\n[1] https://zuul.opendev.org/t/openstack/build/ca559899914e41a28759296949ef4fbe/log/compute1/logs/screen-n-cpu.txt#10493","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"bce20b73e09830874e99cedfe9e84a8b2c9544bb","unresolved":true,"context_lines":[{"line_number":85,"context_line":"        \u0027numa_topology\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":86,"context_line":"        # NOTE(pmurray): the supported_hv_specs field maps to the"},{"line_number":87,"context_line":"        # supported_instances field in the database"},{"line_number":88,"context_line":"        \u0027supported_hv_specs\u0027: fields.ListOfObjectsField(\u0027HVSpec\u0027),"},{"line_number":89,"context_line":"        # NOTE(pmurray): the pci_device_pools field maps to the"},{"line_number":90,"context_line":"        # pci_stats field in the database"},{"line_number":91,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField(\u0027PciDevicePoolList\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"f55b6641_8f9cce38","line":88,"in_reply_to":"a1eafc4a_cb8484d3","updated":"2022-02-14 14:58:04.000000000","message":"the riscv64 is for guest support via qemu. no fields were added or removed, it is just 2 values being added to the enum for architectures.","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"65137c76b51cb1249c1e5cdc200b40d5cc22980e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        \u0027numa_topology\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":86,"context_line":"        # NOTE(pmurray): the supported_hv_specs field maps to the"},{"line_number":87,"context_line":"        # supported_instances field in the database"},{"line_number":88,"context_line":"        \u0027supported_hv_specs\u0027: fields.ListOfObjectsField(\u0027HVSpec\u0027),"},{"line_number":89,"context_line":"        # NOTE(pmurray): the pci_device_pools field maps to the"},{"line_number":90,"context_line":"        # pci_stats field in the database"},{"line_number":91,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField(\u0027PciDevicePoolList\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bbd834d6_320dd0fb","line":88,"in_reply_to":"be6d407a_6ce44cf4","updated":"2022-02-14 18:05:57.000000000","message":"up\u0027d compute_node object version, and added backport to pop just the HVspec listobject for the riscv archs","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"6804fda8fc40d805183643e88ed2f4bbbd1d0ecc","unresolved":true,"context_lines":[{"line_number":85,"context_line":"        \u0027numa_topology\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":86,"context_line":"        # NOTE(pmurray): the supported_hv_specs field maps to the"},{"line_number":87,"context_line":"        # supported_instances field in the database"},{"line_number":88,"context_line":"        \u0027supported_hv_specs\u0027: fields.ListOfObjectsField(\u0027HVSpec\u0027),"},{"line_number":89,"context_line":"        # NOTE(pmurray): the pci_device_pools field maps to the"},{"line_number":90,"context_line":"        # pci_stats field in the database"},{"line_number":91,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField(\u0027PciDevicePoolList\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"be6d407a_6ce44cf4","line":88,"in_reply_to":"c0252f19_5fb4830e","updated":"2022-02-14 15:26:30.000000000","message":"it shouldnt be, and id rather not do an exception here. I was initially looking at a way to unset the value, as our initial error for hv_spec was \u0027version 1.3 is not support. version 1.2 is supported\u0027. Im just not quite sure how to make that happen.\nfor \u0027What was that field set to before we introduced the new value for the enum?\u0027 would i want to just call the previous versions field?","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c4135d06f7a8d81fa3883b8efd4e93d64647bca7","unresolved":true,"context_lines":[{"line_number":85,"context_line":"        \u0027numa_topology\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":86,"context_line":"        # NOTE(pmurray): the supported_hv_specs field maps to the"},{"line_number":87,"context_line":"        # supported_instances field in the database"},{"line_number":88,"context_line":"        \u0027supported_hv_specs\u0027: fields.ListOfObjectsField(\u0027HVSpec\u0027),"},{"line_number":89,"context_line":"        # NOTE(pmurray): the pci_device_pools field maps to the"},{"line_number":90,"context_line":"        # pci_stats field in the database"},{"line_number":91,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField(\u0027PciDevicePoolList\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"a1eafc4a_cb8484d3","line":88,"in_reply_to":"e053f676_d04e6738","updated":"2022-02-14 14:44:41.000000000","message":"Well, the right thing to do is to not raise the exception for a case that seems (to me) to be unexceptional. What was that field set to before we introduced the new value for the enum? We should set it to *that* during the backport (or potentially unset it) and not raise. The raise just breaks the upgrade potential exactly like you\u0027re seeing here. The point of obj_make_compatible() is not to notice and break incompatibilities, it\u0027s to ... make it compatible (when possible of course ;)\n\nHowever, that job looks to me to be running on an x64 machine. Unless we\u0027re dealing with a host (or is it guest in this case?) with arch\u003driscv32, I\u0027m not sure why we\u0027re failing here. Since there\u0027s no job change in that patch, I would guess that this is actually introducing some upgrade incompatibility that is causing us to trigger the raise in the backport, right?","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"650e7a6c6f27b25355ce953a42e41c7142d71419","unresolved":true,"context_lines":[{"line_number":85,"context_line":"        \u0027numa_topology\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":86,"context_line":"        # NOTE(pmurray): the supported_hv_specs field maps to the"},{"line_number":87,"context_line":"        # supported_instances field in the database"},{"line_number":88,"context_line":"        \u0027supported_hv_specs\u0027: fields.ListOfObjectsField(\u0027HVSpec\u0027),"},{"line_number":89,"context_line":"        # NOTE(pmurray): the pci_device_pools field maps to the"},{"line_number":90,"context_line":"        # pci_stats field in the database"},{"line_number":91,"context_line":"        \u0027pci_device_pools\u0027: fields.ObjectField(\u0027PciDevicePoolList\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"c0252f19_5fb4830e","line":88,"in_reply_to":"f55b6641_8f9cce38","updated":"2022-02-14 15:03:14.000000000","message":"Right, but the thing that is raising is saying that an object *has* that new enum set. Not that they\u0027re not available in v2, but that it\u0027s actually set to that. Why would that be in this case?","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6b716a1dd2ab0279b59f3bcfeb8a67657048b738","unresolved":true,"context_lines":[{"line_number":104,"context_line":"            for index, hvspec in enumerate(primitive[\u0027supported_hv_specs\u0027]):"},{"line_number":105,"context_line":"                if hvspec[\u0027nova_object.data\u0027][\u0027arch\u0027] in (\u0027riscv32\u0027,"},{"line_number":106,"context_line":"                    \u0027riscv64\u0027):"},{"line_number":107,"context_line":"                    hvspec.pop(index)"},{"line_number":108,"context_line":"        if target_version \u003c (1, 17):"},{"line_number":109,"context_line":"            if \u0027mapped\u0027 in primitive:"},{"line_number":110,"context_line":"                del primitive[\u0027mapped\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"86e29e22_7ca30ef9","line":107,"updated":"2022-02-15 10:22:46.000000000","message":"I think it is a bug. You want to remove things from the primitive[\u0027supported_hv_specs\u0027] list, while hvspec is one item in that list. What you probably want is something like: \n\n if target_version \u003c (1, 20) and \u0027supported_hv_specs\u0027 in primitive:\n     primitive[\u0027supported_hv_specs\u0027] \u003d [\n         hvspec \n         for primitive[\u0027supported_hv_specs\u0027] \n         if hvspec[\u0027nova_object.data\u0027][\u0027arch\u0027] not in (\u0027riscv32\u0027,\u0027riscv64\u0027)\n     ]","commit_id":"07cbc2618b75b5a14fc7fedc2aa65e9270706bd1"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"2df602551fec3eb66a8181c9675c5f271c10827b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            for index, hvspec in enumerate(primitive[\u0027supported_hv_specs\u0027]):"},{"line_number":105,"context_line":"                if hvspec[\u0027nova_object.data\u0027][\u0027arch\u0027] in (\u0027riscv32\u0027,"},{"line_number":106,"context_line":"                    \u0027riscv64\u0027):"},{"line_number":107,"context_line":"                    hvspec.pop(index)"},{"line_number":108,"context_line":"        if target_version \u003c (1, 17):"},{"line_number":109,"context_line":"            if \u0027mapped\u0027 in primitive:"},{"line_number":110,"context_line":"                del primitive[\u0027mapped\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"e5f740a9_8e8ec7ef","line":107,"in_reply_to":"34fb770e_6eb82f8b","updated":"2022-02-15 13:44:42.000000000","message":"accidently forgot to remove old code, see patchset 12 for proper fix","commit_id":"07cbc2618b75b5a14fc7fedc2aa65e9270706bd1"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"44b60e320bbffe2552afee3f395e1388d2d56289","unresolved":false,"context_lines":[{"line_number":104,"context_line":"            for index, hvspec in enumerate(primitive[\u0027supported_hv_specs\u0027]):"},{"line_number":105,"context_line":"                if hvspec[\u0027nova_object.data\u0027][\u0027arch\u0027] in (\u0027riscv32\u0027,"},{"line_number":106,"context_line":"                    \u0027riscv64\u0027):"},{"line_number":107,"context_line":"                    hvspec.pop(index)"},{"line_number":108,"context_line":"        if target_version \u003c (1, 17):"},{"line_number":109,"context_line":"            if \u0027mapped\u0027 in primitive:"},{"line_number":110,"context_line":"                del primitive[\u0027mapped\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"34fb770e_6eb82f8b","line":107,"in_reply_to":"86e29e22_7ca30ef9","updated":"2022-02-15 13:38:10.000000000","message":"that makes more sense, made the adjustment and added some tweaks for proper syntax.","commit_id":"07cbc2618b75b5a14fc7fedc2aa65e9270706bd1"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"36f98c439cc729590ec87ab6004d850243edd370","unresolved":true,"context_lines":[{"line_number":52,"context_line":"    # Version 1.17: Added mapped"},{"line_number":53,"context_line":"    # Version 1.18: Added get_by_uuid()."},{"line_number":54,"context_line":"    # Version 1.19: Added get_by_nodename()."},{"line_number":55,"context_line":"    # Version 1.20: backport for HVSpec version 1.3"},{"line_number":56,"context_line":"    VERSION \u003d \u00271.20\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":13,"id":"dff676ea_3ec78d36","line":55,"updated":"2022-02-16 09:29:23.000000000","message":"nit: Support for HVSpec version 1.3","commit_id":"bec66f87c749e9029401b8383f4fd05547f555fe"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"86f05fd767faf390231b4500e2e50f71b3d6b1fa","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    # Version 1.17: Added mapped"},{"line_number":53,"context_line":"    # Version 1.18: Added get_by_uuid()."},{"line_number":54,"context_line":"    # Version 1.19: Added get_by_nodename()."},{"line_number":55,"context_line":"    # Version 1.20: backport for HVSpec version 1.3"},{"line_number":56,"context_line":"    VERSION \u003d \u00271.20\u0027"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    fields \u003d {"}],"source_content_type":"text/x-python","patch_set":13,"id":"43b7f459_9a23a3eb","line":55,"in_reply_to":"dff676ea_3ec78d36","updated":"2022-02-16 21:15:18.000000000","message":"Done","commit_id":"bec66f87c749e9029401b8383f4fd05547f555fe"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"972c529d5f574ed20e80d4123cb587be77ce3c8b","unresolved":true,"context_lines":[{"line_number":100,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":101,"context_line":"        super(ComputeNode, self).obj_make_compatible(primitive, target_version)"},{"line_number":102,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":103,"context_line":"        if target_version \u003c (1, 20) and \u0027supported_hv_specs\u0027 in primitive:"},{"line_number":104,"context_line":"            primitive[\u0027supported_hv_specs\u0027] \u003d ["},{"line_number":105,"context_line":"                hvspec for hvspec in primitive[\u0027supported_hv_specs\u0027]"},{"line_number":106,"context_line":"                if hvspec[\u0027nova_object.data\u0027][\u0027arch\u0027] not in"},{"line_number":107,"context_line":"                (\u0027riscv32\u0027, \u0027riscv64\u0027)"},{"line_number":108,"context_line":"                ]"},{"line_number":109,"context_line":"        if target_version \u003c (1, 17):"},{"line_number":110,"context_line":"            if \u0027mapped\u0027 in primitive:"},{"line_number":111,"context_line":"                del primitive[\u0027mapped\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"089b1dcb_a814aa2c","line":108,"range":{"start_line":103,"start_character":0,"end_line":108,"end_character":17},"updated":"2022-02-17 11:34:01.000000000","message":"It think we need to move this logic before we call super().obj_make_compatible() as that call already try to convert the data of the dependent objects (HVSpec) to ovos.","commit_id":"321ebf2422d519bd3082369bc08112cecb853001"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"b7ff990d27360cb471db1ed9a8aa48380573bb8d","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":101,"context_line":"        super(ComputeNode, self).obj_make_compatible(primitive, target_version)"},{"line_number":102,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":103,"context_line":"        if target_version \u003c (1, 20) and \u0027supported_hv_specs\u0027 in primitive:"},{"line_number":104,"context_line":"            primitive[\u0027supported_hv_specs\u0027] \u003d ["},{"line_number":105,"context_line":"                hvspec for hvspec in primitive[\u0027supported_hv_specs\u0027]"},{"line_number":106,"context_line":"                if hvspec[\u0027nova_object.data\u0027][\u0027arch\u0027] not in"},{"line_number":107,"context_line":"                (\u0027riscv32\u0027, \u0027riscv64\u0027)"},{"line_number":108,"context_line":"                ]"},{"line_number":109,"context_line":"        if target_version \u003c (1, 17):"},{"line_number":110,"context_line":"            if \u0027mapped\u0027 in primitive:"},{"line_number":111,"context_line":"                del primitive[\u0027mapped\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"2c8f8bd1_e250a50c","line":108,"range":{"start_line":103,"start_character":0,"end_line":108,"end_character":17},"in_reply_to":"089b1dcb_a814aa2c","updated":"2022-02-17 16:39:25.000000000","message":"moved to above super.","commit_id":"321ebf2422d519bd3082369bc08112cecb853001"}],"nova/objects/hv_spec.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7af09f8692fc9aac5efce5d00e368a681fc435f2","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    def to_list(self):"},{"line_number":45,"context_line":"        return [self.arch, self.hv_type, self.vm_mode]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":48,"context_line":"        super(HVSpec, self).obj_make_compatible(primitive, target_version)"},{"line_number":49,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":50,"context_line":"        if (target_version \u003c (1, 1) and \u0027hv_type\u0027 in primitive and"}],"source_content_type":"text/x-python","patch_set":5,"id":"c3b3b2a2_f3f0e4af","line":47,"updated":"2022-02-10 09:59:35.000000000","message":"Probably backporting from obj version 1.3 to 1.2 is needed here","commit_id":"7aeaf2066786a0e046f3b9d500d1174ebeccf293"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"a2af6f844f8c526b5d51e413021853e81088be2d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    def to_list(self):"},{"line_number":45,"context_line":"        return [self.arch, self.hv_type, self.vm_mode]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":48,"context_line":"        super(HVSpec, self).obj_make_compatible(primitive, target_version)"},{"line_number":49,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":50,"context_line":"        if (target_version \u003c (1, 1) and \u0027hv_type\u0027 in primitive and"}],"source_content_type":"text/x-python","patch_set":5,"id":"6b09b7eb_df0c5ec9","line":47,"in_reply_to":"076080fb_eda4dde1","updated":"2022-02-11 15:51:54.000000000","message":"Done","commit_id":"7aeaf2066786a0e046f3b9d500d1174ebeccf293"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ff8ba7dc317625284e50acb08a153a73b9c94148","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    def to_list(self):"},{"line_number":45,"context_line":"        return [self.arch, self.hv_type, self.vm_mode]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":48,"context_line":"        super(HVSpec, self).obj_make_compatible(primitive, target_version)"},{"line_number":49,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":50,"context_line":"        if (target_version \u003c (1, 1) and \u0027hv_type\u0027 in primitive and"}],"source_content_type":"text/x-python","patch_set":5,"id":"076080fb_eda4dde1","line":47,"in_reply_to":"c3b3b2a2_f3f0e4af","updated":"2022-02-11 11:25:16.000000000","message":"As a backport from 1.3 to 1.2 I would check the value of arch and if it is one of the newly introduced values then I simply raise an exception as that should not happen.","commit_id":"7aeaf2066786a0e046f3b9d500d1174ebeccf293"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"c4135d06f7a8d81fa3883b8efd4e93d64647bca7","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":51,"context_line":"        if target_version \u003c (1, 3):"},{"line_number":52,"context_line":"            arch \u003d primitive.get(\u0027arch\u0027, None)"},{"line_number":53,"context_line":"            if arch in (\u0027riscv32\u0027, \u0027riscv64\u0027, \u0027none\u0027):"},{"line_number":54,"context_line":"                raise exception.ObjectActionError("},{"line_number":55,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":56,"context_line":"                    reason\u003d\u0027arch\u003d%s not supported in version %s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":7,"id":"99c93a68_fd7ae0e0","line":53,"range":{"start_line":53,"start_character":46,"end_line":53,"end_character":52},"updated":"2022-02-14 14:44:41.000000000","message":"Ideally we would never have a string of \u0027none\u0027 to mean something in a versioned object, unless that\u0027s really the value we want. Why would this ever be set this way? If the value should be able to be set to None, then nullable\u003dTrue on the field.","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"650e7a6c6f27b25355ce953a42e41c7142d71419","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":51,"context_line":"        if target_version \u003c (1, 3):"},{"line_number":52,"context_line":"            arch \u003d primitive.get(\u0027arch\u0027, None)"},{"line_number":53,"context_line":"            if arch in (\u0027riscv32\u0027, \u0027riscv64\u0027, \u0027none\u0027):"},{"line_number":54,"context_line":"                raise exception.ObjectActionError("},{"line_number":55,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":56,"context_line":"                    reason\u003d\u0027arch\u003d%s not supported in version %s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":7,"id":"a821b26b_02994109","line":53,"range":{"start_line":53,"start_character":46,"end_line":53,"end_character":52},"in_reply_to":"86616659_164c677e","updated":"2022-02-14 15:03:14.000000000","message":"That probably exists in the image properties definitions, but it should not be in the actual field definition for this, IMHO.","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"bce20b73e09830874e99cedfe9e84a8b2c9544bb","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":51,"context_line":"        if target_version \u003c (1, 3):"},{"line_number":52,"context_line":"            arch \u003d primitive.get(\u0027arch\u0027, None)"},{"line_number":53,"context_line":"            if arch in (\u0027riscv32\u0027, \u0027riscv64\u0027, \u0027none\u0027):"},{"line_number":54,"context_line":"                raise exception.ObjectActionError("},{"line_number":55,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":56,"context_line":"                    reason\u003d\u0027arch\u003d%s not supported in version %s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":7,"id":"86616659_164c677e","line":53,"range":{"start_line":53,"start_character":46,"end_line":53,"end_character":52},"in_reply_to":"99c93a68_fd7ae0e0","updated":"2022-02-14 14:58:04.000000000","message":"I was leveraging other examples in nova, \u0027none\u0027 is not required to be there.","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"6804fda8fc40d805183643e88ed2f4bbbd1d0ecc","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":51,"context_line":"        if target_version \u003c (1, 3):"},{"line_number":52,"context_line":"            arch \u003d primitive.get(\u0027arch\u0027, None)"},{"line_number":53,"context_line":"            if arch in (\u0027riscv32\u0027, \u0027riscv64\u0027, \u0027none\u0027):"},{"line_number":54,"context_line":"                raise exception.ObjectActionError("},{"line_number":55,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":56,"context_line":"                    reason\u003d\u0027arch\u003d%s not supported in version %s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":7,"id":"cbb441fb_578df34d","line":53,"range":{"start_line":53,"start_character":46,"end_line":53,"end_character":52},"in_reply_to":"a821b26b_02994109","updated":"2022-02-14 15:26:30.000000000","message":"that makes sense and ill remove it.","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"20b6bf2aa60ce7f7250b3465094c5187fae7a12d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":51,"context_line":"        if target_version \u003c (1, 3):"},{"line_number":52,"context_line":"            arch \u003d primitive.get(\u0027arch\u0027, None)"},{"line_number":53,"context_line":"            if arch in (\u0027riscv32\u0027, \u0027riscv64\u0027, \u0027none\u0027):"},{"line_number":54,"context_line":"                raise exception.ObjectActionError("},{"line_number":55,"context_line":"                    action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":56,"context_line":"                    reason\u003d\u0027arch\u003d%s not supported in version %s\u0027 % ("}],"source_content_type":"text/x-python","patch_set":7,"id":"30142671_57eb3aaf","line":53,"range":{"start_line":53,"start_character":46,"end_line":53,"end_character":52},"in_reply_to":"cbb441fb_578df34d","updated":"2022-02-14 15:44:22.000000000","message":"Done","commit_id":"11ff6f57ae2c63f041b66662743091847e0764bf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"36f98c439cc729590ec87ab6004d850243edd370","unresolved":true,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":48,"context_line":"        super(HVSpec, self).obj_make_compatible(primitive, target_version)"},{"line_number":49,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":50,"context_line":"        if (target_version \u003c (1, 1) and \u0027hv_type\u0027 in primitive and"},{"line_number":51,"context_line":"                fields.HVType.VIRTUOZZO \u003d\u003d primitive[\u0027hv_type\u0027]):"},{"line_number":52,"context_line":"            primitive[\u0027hv_type\u0027] \u003d fields.HVType.PARALLELS"}],"source_content_type":"text/x-python","patch_set":13,"id":"092e8807_0291d344","line":49,"updated":"2022-02-16 09:29:23.000000000","message":"I would still add back raising the error from PS7 (without the none).","commit_id":"bec66f87c749e9029401b8383f4fd05547f555fe"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"86f05fd767faf390231b4500e2e50f71b3d6b1fa","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":48,"context_line":"        super(HVSpec, self).obj_make_compatible(primitive, target_version)"},{"line_number":49,"context_line":"        target_version \u003d versionutils.convert_version_to_tuple(target_version)"},{"line_number":50,"context_line":"        if (target_version \u003c (1, 1) and \u0027hv_type\u0027 in primitive and"},{"line_number":51,"context_line":"                fields.HVType.VIRTUOZZO \u003d\u003d primitive[\u0027hv_type\u0027]):"},{"line_number":52,"context_line":"            primitive[\u0027hv_type\u0027] \u003d fields.HVType.PARALLELS"}],"source_content_type":"text/x-python","patch_set":13,"id":"b597a33f_095f9a6a","line":49,"in_reply_to":"092e8807_0291d344","updated":"2022-02-16 21:15:18.000000000","message":"Done","commit_id":"bec66f87c749e9029401b8383f4fd05547f555fe"}],"nova/objects/vcpu_model.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7af09f8692fc9aac5efce5d00e368a681fc435f2","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        if not db_extra or not db_extra[\u0027vcpu_model\u0027]:"},{"line_number":53,"context_line":"            return None"},{"line_number":54,"context_line":"        return cls.obj_from_primitive(jsonutils.loads(db_extra[\u0027vcpu_model\u0027]))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":58,"context_line":"class VirtCPUFeature(base.NovaObject):"}],"source_content_type":"text/x-python","patch_set":5,"id":"49820beb_3fd6f138","line":55,"updated":"2022-02-10 09:59:35.000000000","message":"Probably object backporting of object version from 1.1 to 1.0 is needed here","commit_id":"7aeaf2066786a0e046f3b9d500d1174ebeccf293"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ff8ba7dc317625284e50acb08a153a73b9c94148","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        if not db_extra or not db_extra[\u0027vcpu_model\u0027]:"},{"line_number":53,"context_line":"            return None"},{"line_number":54,"context_line":"        return cls.obj_from_primitive(jsonutils.loads(db_extra[\u0027vcpu_model\u0027]))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":58,"context_line":"class VirtCPUFeature(base.NovaObject):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fe688295_281d991f","line":55,"in_reply_to":"49820beb_3fd6f138","updated":"2022-02-11 11:25:16.000000000","message":"Similar to the other ovo backports in 1.1 to 1.0 backport I would check the value of arch and if it is one of the newly introduced values then I simply raise an exception as that should not happen.","commit_id":"7aeaf2066786a0e046f3b9d500d1174ebeccf293"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"a2af6f844f8c526b5d51e413021853e81088be2d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        if not db_extra or not db_extra[\u0027vcpu_model\u0027]:"},{"line_number":53,"context_line":"            return None"},{"line_number":54,"context_line":"        return cls.obj_from_primitive(jsonutils.loads(db_extra[\u0027vcpu_model\u0027]))"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"@base.NovaObjectRegistry.register"},{"line_number":58,"context_line":"class VirtCPUFeature(base.NovaObject):"}],"source_content_type":"text/x-python","patch_set":5,"id":"8ffea105_59c110d7","line":55,"in_reply_to":"fe688295_281d991f","updated":"2022-02-11 15:51:54.000000000","message":"Done","commit_id":"7aeaf2066786a0e046f3b9d500d1174ebeccf293"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"36f98c439cc729590ec87ab6004d850243edd370","unresolved":true,"context_lines":[{"line_number":43,"context_line":"        if target_version \u003c (1, 1):"},{"line_number":44,"context_line":"            arch \u003d primitive.get(\u0027arch\u0027, None)"},{"line_number":45,"context_line":"            if arch in (\u0027riscv32\u0027, \u0027riscv64\u0027, \u0027none\u0027):"},{"line_number":46,"context_line":"                primitive.pop(\u0027arch\u0027, None)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def obj_load_attr(self, attrname):"},{"line_number":49,"context_line":"        setattr(self, attrname, None)"}],"source_content_type":"text/x-python","patch_set":13,"id":"ab060e43_e2ca016d","line":46,"updated":"2022-02-16 09:29:23.000000000","message":"I don\u0027t think this is the right approach. This pop will make the VirtCPUModel model incomplete as the arch field will be undefined.\n\nI think raising an error like in PS7 (without the none) is better.","commit_id":"bec66f87c749e9029401b8383f4fd05547f555fe"},{"author":{"_account_id":34141,"name":"Jonathan Race","display_name":"chateaulav","email":"jrace@augusta.edu","username":"chateaulav","status":"Always Available"},"change_message_id":"86f05fd767faf390231b4500e2e50f71b3d6b1fa","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        if target_version \u003c (1, 1):"},{"line_number":44,"context_line":"            arch \u003d primitive.get(\u0027arch\u0027, None)"},{"line_number":45,"context_line":"            if arch in (\u0027riscv32\u0027, \u0027riscv64\u0027, \u0027none\u0027):"},{"line_number":46,"context_line":"                primitive.pop(\u0027arch\u0027, None)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def obj_load_attr(self, attrname):"},{"line_number":49,"context_line":"        setattr(self, attrname, None)"}],"source_content_type":"text/x-python","patch_set":13,"id":"927ef006_23776ddf","line":46,"in_reply_to":"ab060e43_e2ca016d","updated":"2022-02-16 21:15:18.000000000","message":"Done","commit_id":"bec66f87c749e9029401b8383f4fd05547f555fe"}]}
