)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"846d359e0650ac2e8fb3be98027f201f98557e1d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ed1c8bf3_ce88c031","updated":"2026-08-19 11:00:23.000000000","message":"thanks","commit_id":"99cec111d2b18b74760b208aea63b56e31953104"}],"cyborg/objects/base.py":[{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"a0948cf3b492a150964d02fcb8a84b920fb54383","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    if value in new_values:"},{"line_number":232,"context_line":"        raise exception.ObjectActionError("},{"line_number":233,"context_line":"            action\u003d\u0027obj_make_compatible\u0027,"},{"line_number":234,"context_line":"            reason\u003d\u0027%s\u003d%s not supported in version %s\u0027"},{"line_number":235,"context_line":"            % (field, value, version),"},{"line_number":236,"context_line":"        )"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"2443e83f_135fe41a","line":234,"updated":"2026-08-24 04:33:54.000000000","message":"Device.obj_make_compatible converts target_version with versionutils.convert_version_to_tuple() and passes the tuple to base.raise_on_too_new_values(), which interpolates it into \u0027%s\u003d%s not supported in version %s\u0027. Rejected backports therefore log \u0027type\u003dMDEV not supported in version (1, 2)\u0027 instead of the readable \u00271.2\u0027.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Impact**: Low: the error text operators see when a backport is rejected is harder to read and grep, slightly slowing diagnosis of version-pin mismatches during upgrades.\n\n**Recommendation**:\nPass the original string target_version into raise_on_too_new_values for the message, or format the tuple as \u0027.\u0027.join(map(str, version)) inside the helper before interpolation.","commit_id":"5d22ab38ee709c95df8de92bc451be3bc8aec70b"}],"cyborg/objects/device.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1a2ada1de6d317c2b4468f5d3e0bb640b817a5e0","unresolved":true,"context_lines":[{"line_number":28,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":29,"context_line":"class Device(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":30,"context_line":"    # Version 1.0: Initial version"},{"line_number":31,"context_line":"    # Version 1.1: Add AICHIP, GENERIC type"},{"line_number":32,"context_line":"    # Version 1.2: Add status field"},{"line_number":33,"context_line":"    # Version 1.3: Add MDEV, PCI type"},{"line_number":34,"context_line":"    VERSION \u003d \u00271.3\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"cd110864_9118f52c","line":31,"range":{"start_line":31,"start_character":29,"end_line":31,"end_character":43},"updated":"2026-08-19 11:12:31.000000000","message":"nit: generic is not a type so this comemnt is slightly missleading\n\nhttps://github.com/openstack/cyborg/commit/e8574bb2351e2da538ce9ecfe30dfdb22e393d04","commit_id":"99cec111d2b18b74760b208aea63b56e31953104"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"61e864dffb25c1a699019d2777145a1a21012b3c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":29,"context_line":"class Device(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":30,"context_line":"    # Version 1.0: Initial version"},{"line_number":31,"context_line":"    # Version 1.1: Add AICHIP, GENERIC type"},{"line_number":32,"context_line":"    # Version 1.2: Add status field"},{"line_number":33,"context_line":"    # Version 1.3: Add MDEV, PCI type"},{"line_number":34,"context_line":"    VERSION \u003d \u00271.3\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"facb1e9f_27923566","line":31,"range":{"start_line":31,"start_character":29,"end_line":31,"end_character":43},"in_reply_to":"cd110864_9118f52c","updated":"2026-08-19 19:15:16.000000000","message":"Done","commit_id":"99cec111d2b18b74760b208aea63b56e31953104"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1a2ada1de6d317c2b4468f5d3e0bb640b817a5e0","unresolved":true,"context_lines":[{"line_number":62,"context_line":"                primitive,"},{"line_number":63,"context_line":"                \u0027type\u0027,"},{"line_number":64,"context_line":"                (constants.DEVICE_MDEV, constants.DEVICE_PCI),"},{"line_number":65,"context_line":"            )"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def create(self, context):"},{"line_number":68,"context_line":"        \"\"\"Create a device record in the DB.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"771b13da_7898cc57","line":65,"updated":"2026-08-19 11:12:31.000000000","message":"so thinking about this we should probely complte the set\n\n```\n       if target_version \u003c (1, 2):\n          primitive.pop(\u0027status\u0027, None)\n       if target_version \u003c (1, 1):\n            base.raise_on_too_new_values(\n                target_version,\n                primitive,\n                \u0027type\u0027,\n                (constants.DEVICE_AICHIP,),\n            )\n```\n\ncan you add tests for that as well if you have time\n\nwe shoudl be abel to downgrade all the way to 1.0 with type\u003dconstants.DEVICE_GPU","commit_id":"99cec111d2b18b74760b208aea63b56e31953104"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"61e864dffb25c1a699019d2777145a1a21012b3c","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                primitive,"},{"line_number":63,"context_line":"                \u0027type\u0027,"},{"line_number":64,"context_line":"                (constants.DEVICE_MDEV, constants.DEVICE_PCI),"},{"line_number":65,"context_line":"            )"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def create(self, context):"},{"line_number":68,"context_line":"        \"\"\"Create a device record in the DB.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3bc4d407_98ee0141","line":65,"in_reply_to":"771b13da_7898cc57","updated":"2026-08-19 19:15:16.000000000","message":"Done","commit_id":"99cec111d2b18b74760b208aea63b56e31953104"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dd7f118853db4a26384351066f1a151dd5079e60","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":29,"context_line":"class Device(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":30,"context_line":"    # Version 1.0: Initial version"},{"line_number":31,"context_line":"    # Version 1.1: Add AICHIP type"},{"line_number":32,"context_line":"    # Version 1.2: Add status field"}],"source_content_type":"text/x-python","patch_set":3,"id":"c9bf2256_bfeaa3bd","line":29,"updated":"2026-08-21 18:00:12.000000000","message":"so i didnt realsie we have both device object and driver device objects\n\nhttps://github.com/openstack/cyborg/blob/master/cyborg/objects/driver_objects/driver_device.py\n\nso we will need to ge both in sync and everually remove the driver version\n\nthe condutor seams to be useing the driver version \n\nhttps://github.com/openstack/cyborg/blob/master/cyborg/conductor/manager.py#L140\nand the non driver version\n\nhttps://github.com/openstack/cyborg/blob/master/cyborg/conductor/manager.py#L218\n\nso this is a bit of a mess because that is stored in the db is the normal device\n\nand the devier version seam ot have xtra inf but only used in memroy\n\nso the driver device list\n\ngithub.com/openstack/cyborg/blob/master/cyborg/objects/driver_objects/driver_device.py#L120-L145\n\nis first using this obejct to load the db version then it is speratlly loading the deployabels na dcontoplath id\n\nwhich is effecitvly doing a join fo several tabel sby hand\n\nthis is nto how this should be done\n\nwe ahve way of lazy loading or reduint the data tha tis pull back natively in ovo\n\nanyway the new type values added in this patch will happen to work in the driver device\n\nbut in the next patch when you add the device state filed\n\nhttps://github.com/openstack/cyborg/blob/master/cyborg/objects/driver_objects/driver_device.py#L35 we will need to update that as well","commit_id":"c5dbb2b9e3916c84c9b326a40a4b192e1a47c1f2"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"aa2b4fcef62ab4c4b15475f4cd583b0da52c6257","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":29,"context_line":"class Device(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":30,"context_line":"    # Version 1.0: Initial version"},{"line_number":31,"context_line":"    # Version 1.1: Add AICHIP type"},{"line_number":32,"context_line":"    # Version 1.2: Add status field"}],"source_content_type":"text/x-python","patch_set":3,"id":"c0215097_b67b8f0d","line":29,"in_reply_to":"6abd7d78_2b714cb3","updated":"2026-08-24 06:07:56.000000000","message":"Yes correct!\n\nDriverDevice.list() manually reconstructs relationships by querying multiple tables (device → controlpath → deployables) instead of lazy loading.\n\nI will propose a seperate patch to address that.\n\nFor now, I am bumping the version in https://review.opendev.org/c/openstack/cyborg/+/1001474/4/cyborg/objects/driver_objects/driver_device.py for MDEV, NVMe and device_state in further patches.","commit_id":"c5dbb2b9e3916c84c9b326a40a4b192e1a47c1f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"445ec22a0095f6cb866ea2bb382cd152e228c821","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":29,"context_line":"class Device(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":30,"context_line":"    # Version 1.0: Initial version"},{"line_number":31,"context_line":"    # Version 1.1: Add AICHIP type"},{"line_number":32,"context_line":"    # Version 1.2: Add status field"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f4953df_41346dd8","line":29,"in_reply_to":"c0215097_b67b8f0d","updated":"2026-08-24 12:06:39.000000000","message":"Acknowledged","commit_id":"c5dbb2b9e3916c84c9b326a40a4b192e1a47c1f2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"9ff075a4c51a3c3654e7e5be4938cec7cfd31ece","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"@base.CyborgObjectRegistry.register"},{"line_number":29,"context_line":"class Device(base.CyborgObject, object_base.VersionedObjectDictCompat):"},{"line_number":30,"context_line":"    # Version 1.0: Initial version"},{"line_number":31,"context_line":"    # Version 1.1: Add AICHIP type"},{"line_number":32,"context_line":"    # Version 1.2: Add status field"}],"source_content_type":"text/x-python","patch_set":3,"id":"6abd7d78_2b714cb3","line":29,"in_reply_to":"c9bf2256_bfeaa3bd","updated":"2026-08-21 18:01:32.000000000","message":"however when the values were added to this it wshould have cause teh version of the DriverDeivce to be updated as well","commit_id":"c5dbb2b9e3916c84c9b326a40a4b192e1a47c1f2"},{"author":{"_account_id":28006,"name":"teim-ci","display_name":"teim-ci","email":"ci@seanmooney.info","username":"ci-sean-mooney","status":"this is a third-party ci account run by sean-k-mooney on irc\nhosted at zuul.teim.app"},"tag":"autogenerated:zuul:automatic-ci","change_message_id":"a0948cf3b492a150964d02fcb8a84b920fb54383","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        if target_version \u003c (1, 2):"},{"line_number":67,"context_line":"            primitive.pop(\u0027status\u0027, None)"},{"line_number":68,"context_line":"        if target_version \u003c (1, 1):"},{"line_number":69,"context_line":"            base.raise_on_too_new_values("},{"line_number":70,"context_line":"                target_version,"},{"line_number":71,"context_line":"                primitive,"},{"line_number":72,"context_line":"                \u0027type\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"cbadef37_20cd4f60","line":69,"updated":"2026-08-24 04:33:54.000000000","message":"The new Device.obj_make_compatible() rejects AICHIP below 1.1 but not GENERIC, and the version-history comment was rewritten from \u0027Version 1.1: Add AICHIP, GENERIC type\u0027 to \u0027Version 1.1: Add AICHIP type\u0027. Project history (commit e8574bb, 2019) shows AICHIP and GENERIC were introduced together at Device v1.1; at v1.0 DEVICE_TYPE was only [GPU, FPGA]. Backporting a Device with type\u003dGENERIC to 1.0 therefore silently emits a value that did not exist at 1.0, contradicting the commit message\u0027s claim that downgrade behavior follows the recorded history.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: A consumer pinned to Device 1.0 can receive type\u003d\u0027GENERIC\u0027 without any error and process an enum value unknown at that version, and the permanent version history no longer documents when GENERIC became valid, misleading future backport work.\n\n**Suggestion**:\nRestore \u0027GENERIC\u0027 to the v1.1 history comment and add constants.DEVICE_GENERIC to the below-(1,1) new_values tuple (or, if GENERIC is intentionally treated as 1.0-valid, say so explicitly in the comment). Add a test asserting obj_to_primitive(target_version\u003d\u00271.0\u0027) raises ObjectActionError for type\u003dGENERIC, mirroring test_obj_make_compatible_raises_for_aichip_on_v1_0.","commit_id":"5d22ab38ee709c95df8de92bc451be3bc8aec70b"}],"cyborg/tests/unit/objects/test_device.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1a2ada1de6d317c2b4468f5d3e0bb640b817a5e0","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"56dfde27_cceb80cb","line":179,"updated":"2026-08-19 11:12:31.000000000","message":"teim suggested we could add a non raising vaile to test the succcess case\n\nhttps://minio-api.teim.app/zuul-logs/1d1/main/1d18eb2882a5431787af528787d8c328/code-review/review-report.html\n\nwhich i think woudl be good","commit_id":"99cec111d2b18b74760b208aea63b56e31953104"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"61e864dffb25c1a699019d2777145a1a21012b3c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d6507857_40dafc21","line":179,"in_reply_to":"56dfde27_cceb80cb","updated":"2026-08-19 19:15:16.000000000","message":"Done","commit_id":"99cec111d2b18b74760b208aea63b56e31953104"}]}
