)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"804c9491e7762b7cefc64c3f35098031d37be2d1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"145af2c9_8f30398a","updated":"2026-08-17 15:50:47.000000000","message":"recheck","commit_id":"e03d7f0113387462812b30201e81172c118dde28"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"dfa7fd9c22b7d6e273f14d41e4f6ebff5aafdfa6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":27,"id":"49b5697b_aae7fb06","updated":"2026-09-02 12:09:11.000000000","message":"Test results of NVME generic driver on baremetal with NVME SSD: https://gist.github.com/raukadah/fdccdecb7c92fc932ac49d2fb7ccad9f","commit_id":"adbd36c7e93fec144ec5af262b3209080a4addb5"},{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"d874bcfddbf70a4165d17e7a68a6b77ee766ad4d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":31,"id":"6c05fb8a_f917a1ae","updated":"2026-09-07 05:35:19.000000000","message":"recheck","commit_id":"93045ae93b904530e7315261b42e8ed336300344"},{"author":{"_account_id":39344,"name":"Gihong Lee","display_name":"gamio","email":"gh9231@gmail.com","username":"gamio"},"change_message_id":"9e712bfdaa71ab8ceef6523a75762afcdbb95ca1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":32,"id":"538db258_15bb434b","updated":"2026-09-15 15:18:08.000000000","message":"Could you add a release note with a deprecations: section for the move to nvme_driver and the 2027.2 removal?","commit_id":"0e52b3d89a86ad21836dcac061dd2e3aa8398057"}],"cyborg/accelerator/drivers/ssd/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":"26c75dbceb891b979799620e553d232792d672ad","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"},{"line_number":50,"context_line":"            DeprecationWarning,"}],"source_content_type":"text/x-python","patch_set":14,"id":"f103c0a4_395ab85b","line":47,"updated":"2026-08-13 15:16:22.000000000","message":"The patch\u0027s stated intent is to direct operators to the NVMe driver, but DeprecationWarning from a non-__main__ module is hidden by Python\u0027s default filters, and the agent loads these drivers via stevedore inside a long-running service.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Operators enabling inspur_nvme_ssd_driver get no deprecation signal before the 2027.2 removal, defeating the purpose of the deprecation cycle and risking surprise breakage on upgrade.\n\n**Suggestion**:\nEmit the deprecation via LOG.warning (or LOG.warning plus DeprecationWarning) so it appears in agent logs, and/or add a reno upgrade note stating the driver must be moved to nvme_driver. Precedent: the microversion service-type deprecation in this repo logs a warning rather than relying on warnings.warn.","commit_id":"c3f6a681e93ad0ae778588a5b8740df2c7a094a8"},{"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":"f44fe2380a8dbf921991095f31343e25e7142be7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"       Use the generic NVMe driver (``nvme_driver``) instead."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"19a4dcab_b8ed9bc8","line":46,"updated":"2026-08-14 16:42:41.000000000","message":"Both new deprecation warnings use warnings.warn(..., DeprecationWarning), which CPython filters out by default outside __main__. No filterwarnings configuration, -W default, or PYTHONWARNINGS guidance exists in the repo or the release note.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Operators enabling inspur_nvme_ssd_driver per the [agent] enabled_drivers help text will never see the deprecation notice in normal agent logs, undermining the commit\u0027s stated goal of directing operators to migrate before the 2027.2 removal.\n\n**Suggestion**:\nSurface the deprecation via the OpenStack-conventional route in addition to warnings.warn: use LOG.warning (oslo_log, already imported in base.py) once at driver instantiation/init_host, or document in the release note that operators must run with -W default::DeprecationWarning / PYTHONWARNINGS\u003ddefault to see the warning.","commit_id":"f140210b74394ed540438d6afa3c77bc3dee1c6d"},{"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":"6958efad494c6ec424e0037d2497f2dda64ec82d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"       Use the generic NVMe driver (``nvme_driver``) instead."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9a12f066_4c24d680","line":46,"updated":"2026-08-17 15:59:38.000000000","message":"SSDDriver is instantiated by stevedore DriverManager inside the cyborg-agent process (cyborg/agent/resource_tracker.py:69-73), where Python\u0027s default warning filters suppress DeprecationWarning except in __main__, so the warning never reaches operators\u0027 logs despite the commit\u0027s stated intent to...\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Operators running the agent with the deprecated driver configured will see no indication of the deprecation or the 2027.2 removal timeline, defeating the purpose of the deprecation notice.\n\n**Suggestion**:\nIn addition to (or instead of) warnings.warn, log the deprecation with LOG.warning in __init__ so it appears once in the cyborg-agent log at driver load time; the unit test can then assert the warning is raised as well.","commit_id":"e03d7f0113387462812b30201e81172c118dde28"},{"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":"0530e062635f20c4822e8987e81d51d165e0357d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"       Use the generic NVMe driver (``nvme_driver``) instead."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"2284659c_e4c8cf09","line":46,"updated":"2026-08-17 08:55:37.000000000","message":"The warning uses the DeprecationWarning category, which Python filters out by default outside __main__. In the long-running cyborg-agent process the driver is instantiated via stevedore, so the warning is silently dropped unless PYTHONWARNINGS or a warnings-to-logging bridge is configured.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: Operators running cyborg-agent with the deprecated inspur_nvme_ssd_driver enabled will see no log output about the deprecation or the 2027.2 removal target until the driver is actually deleted, leaving no migration window in practice.\n\n**Suggestion**:\nEmit the deprecation through LOG.warning (once, e.g. guarded by a class-level flag) in addition to or instead of warnings.warn, or document/enforce warnings capture so DeprecationWarning from drivers reaches the cyborg-agent log.","commit_id":"e03d7f0113387462812b30201e81172c118dde28"},{"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":"0a9dc0b94cea10beb8b2c72b5428d20ba23d4ad1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"},{"line_number":50,"context_line":"            DeprecationWarning,"}],"source_content_type":"text/x-python","patch_set":18,"id":"c3eb294b_e75334a7","line":47,"updated":"2026-08-18 07:17:04.000000000","message":"The commit states the warning directs operators to configure the generic NVMe driver, but DeprecationWarning is ignored by Python\u0027s default warning filters outside __main__. The only registered consumption path for the SSD family is the cyborg-agent loading inspur_nvme_ssd_driver via stevedore DriverManager(invoke_on_load\u003dTrue), which instantiates the driver in the agent service process where the warning is silently discarded.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: Operators running the Inspur NVMe SSD driver get no deprecation signal in cyborg-agent logs and can be surprised when the driver is removed in 2027.2, defeating the stated purpose of the change.\n\n**Suggestion**:\nIn addition to (or instead of) warnings.warn, log the deprecation via LOG.warning in the driver __init__ so it appears in the agent\u0027s log output on first load, e.g. LOG.warning(\u0027inspur_nvme_ssd_driver is deprecated; configure nvme_driver instead. Removal target: 2027.2.\u0027)","commit_id":"5fcb29807280d5707135b90b1009e23520b549f6"},{"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":"6be99a4e7b3f03a2a996e3716710e04d0122ee87","unresolved":false,"context_lines":[{"line_number":43,"context_line":"       Use the generic NVMe driver (``nvme_driver``) instead."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"e7126187_9f9eda86","line":46,"updated":"2026-08-21 12:41:27.000000000","message":"The commit message claims deprecation warnings are emitted at startup directing operators to switch to nvme_driver, but the change uses warnings.warn(..., DeprecationWarning). CPython\u0027s default warning filter ignores DeprecationWarning unless triggered from __main__ (PEP 565). Drivers are instantiated during cyborg-agent startup via stevedore DriverManager(namespace\u003d\u0027cyborg.accelerator.driver\u0027, invoke_on_load\u003dTrue) in cyborg/agent/resource_tracker.py:_initialize_drivers, so the trigger location is never __main__ and the warning is silently swallowed in a default deployment.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: Operators running cyborg-agent with an SSD driver enabled get no signal that it is slated for removal in 2027.2, defeating the deprecation\u0027s purpose and setting up surprise breakage at removal time.\n\n**Suggestion**:\nEmit the notice through an operator-visible channel: LOG.warning via oslo_log at driver instantiation, or debtcollector.deprecate()/a UserWarning-derived category. Keep the unit test asserting whichever visible channel is chosen.","commit_id":"9b49ad680b8a179a91d13cd07f45a3bbba2507f1"},{"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":"004b7dc78c2b9a2a36f126b62eaf894a06b73506","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"},{"line_number":50,"context_line":"            DeprecationWarning,"}],"source_content_type":"text/x-python","patch_set":27,"id":"f757ec91_f61d6fdb","line":47,"updated":"2026-08-31 11:47:53.000000000","message":"The change emits DeprecationWarning from SSDDriver.__init__ and InspurNVMeSSDDriver.__init__, and the commit message states the warnings are \u0027emitted at startup ... directing operators to switch to nvme_driver\u0027. In a real deployment, drivers are instantiated by the agent via stevedore DriverManager(invoke_on_load\u003dTrue) in cyborg/agent/resource_tracker.py:_initialize_drivers, not from __main__. CPython\u0027s default warning filters are \u0027default::DeprecationWarning:__main__\u0027 followed by \u0027ignore::DeprecationWarning\u0027, so these warnings are silently discarded in a normal cyborg-agent process unless PYTHONWARNINGS/-W is set. No startup code in cyborg/cmd or cyborg/common adjusts warning filters, so the stated operator notification path is inert in practice.\n\n**Severity**: WARNING | **Confidence**: 0.82\n\n**Impact**: Operators running inspur_nvme_ssd_driver get no visible signal at startup; the deprecation is discoverable only from source or git history, and the 2027.2 removal will arrive unannounced for exactly the audience the commit says it is addressing.\n\n**Suggestion**:\nLog the deprecation with LOG.warning (oslo_log is already imported in base.py) in __init__ or init_host(), or use debtcollector.deprecate(), the established OpenStack pattern that routes to both warnings and logs, while keeping the DeprecationWarning for library consumers. Pair with the release note from CF-002.","commit_id":"adbd36c7e93fec144ec5af262b3209080a4addb5"},{"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":"f167140247a1c33a507d3d7a3da45835dd1eb09e","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    .. deprecated::"},{"line_number":43,"context_line":"       Use the generic NVMe driver (``nvme_driver``) instead."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("}],"source_content_type":"text/x-python","patch_set":28,"id":"be19e932_58c644e2","line":44,"updated":"2026-09-03 18:08:38.000000000","message":"Both deprecation notices are emitted with warnings.warn(..., DeprecationWarning). CPython\u0027s default warning filter ignores DeprecationWarning unless it is triggered in __main__. The cyborg-agent entry point (cyborg/cmd/agent.py) installs no warning filters and does not run with -W default, and the drivers are instantiated from cyborg.agent.resource_tracker (not __main__), so the warning is never displayed in operator logs. The commit message states the warnings are emitted at startup \u0027directing operators to switch to nvme_driver in cyborg.conf\u0027, but operators will not see them.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Deployers using inspur_nvme_ssd_driver receive no visible signal before the drivers are removed in 2027.2, defeating the stated purpose of the deprecation and risking surprise breakage on upgrade.\n\n**Suggestion**:\nEmit the deprecation through LOG.warning (oslo_log) so it appears in service logs, either instead of or in addition to warnings.warn(DeprecationWarning) (the latter remains useful for programmatic consumers). Update the unit test to assert on the logged message.","commit_id":"5fc136152bab36a6a69fec59d992367d9fde8a86"},{"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":"b23f4e49755e5e2c0ec95f9105cf15aad1e97581","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"},{"line_number":50,"context_line":"            DeprecationWarning,"}],"source_content_type":"text/x-python","patch_set":30,"id":"1b4029a8_e9a6a4ab","line":47,"updated":"2026-09-04 07:46:02.000000000","message":"The commit states the warnings are \u0027emitted at startup ... directing operators to switch to nvme_driver\u0027, but CPython\u0027s default filters ignore DeprecationWarning unless it originates in __main__. At runtime the drivers are instantiated by stevedore\u0027s DriverManager in cyborg/agent/resource_tracker.py:_initialize_drivers(), so the warning origin is not __main__ and the warning is silently dropped in every production agent process. It is only visible in unit tests that force simplefilter(\u0027always\u0027).\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: Operators running the agent with inspur_nvme_ssd_driver enabled receive no deprecation notice before the 2027.2 removal, defeating the change\u0027s stated purpose and risking a surprise breakage on upgrade.\n\n**Suggestion**:\nAlso emit the deprecation through oslo_log LOG.warning at driver load time (e.g. in __init__: LOG.warning(\u0027SSD driver %s is deprecated; use nvme_driver. Removal target: 2027.2.\u0027, cls.__name__)) so it lands in service logs, or use a warning category that is displayed by default. Pair this with the reno note from CF-002.","commit_id":"ef322839232756519c4ec2b3d1bee6bb0c6b4be1"},{"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":"bd159793cad3bfb4439e7148c63b350d332da75f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"       Use the generic NVMe driver (``nvme_driver``) instead."},{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"}],"source_content_type":"text/x-python","patch_set":31,"id":"8262df81_9dd5f260","line":46,"updated":"2026-09-07 05:50:06.000000000","message":"Both drivers emit the deprecation notice via warnings.warn(..., DeprecationWarning). Python\u0027s default warning filters ignore DeprecationWarning unless it is triggered in __main__, and the SSD drivers are instantiated inside the cyborg-agent process (stevedore DriverManager, invoke_on_load\u003dTrue, in resource_tracker._initialize_drivers), not in __main__. The warning is therefore emitted but never displayed or logged in a default deployment. The unit test masks this by calling warnings.simplefilter(\u0027always\u0027).\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Operators running inspur_nvme_ssd_driver get no notice at any point before the drivers are removed in 2027.2, defeating the stated purpose of the change (a two-cycle deprecation grace period) and turning the planned removal into a surprise breakage on upgrade.\n\n**Suggestion**:\nEmit the notice through a channel operators actually see, e.g. LOG.warning(...) via the already-imported oslo_log logger in init_host() or __init__, or use oslo_log.versionutils/oslo_deprecation patterns used elsewhere in OpenStack. Alternatively keep DeprecationWarning but also log once at startup. Update the unit test to assert the operator-visible channel.","commit_id":"93045ae93b904530e7315261b42e8ed336300344"},{"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":"2d984c497c159cc39273ddccbbf47d8bdc4dd1b4","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"},{"line_number":50,"context_line":"            DeprecationWarning,"}],"source_content_type":"text/x-python","patch_set":31,"id":"0a8a6e3b_fe58e88a","line":47,"updated":"2026-09-05 05:16:22.000000000","message":"Both new warnings use warnings.warn(..., DeprecationWarning, stacklevel\u003d2). CPython\u0027s default filters ignore DeprecationWarning outside __main__, and these drivers are instantiated in library code: cyborg/agent/resource_tracker.py:_initialize_drivers loads entrypoints via stevedore DriverManager(invoke_on_load\u003dTrue). Verified empirically: the same warning issued from a non-__main__ caller prints nothing by default and only appears with python -W. Moreover the generic SSDDriver has no entrypoint in pyproject.toml, so its warning is only reachable in tests/direct library use; the operator-reachable path is inspur_nvme_ssd_driver.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: Operators running inspur_nvme_ssd_driver will never see the deprecation notice in service output, receive no signal to migrate to nvme_driver, and will face an abrupt driver removal in 2027.2. The new test passes only because it forces simplefilter(\u0027always\u0027).\n\n**Suggestion**:\nEmit the message via LOG.warning (oslo_log) in __init__ so it lands in operator-visible cyborg-agent logs (optionally keep the DeprecationWarning for library consumers), or use a category that is not filtered by default such as FutureWarning. Keep the nvme_driver and 2027.2 references in the text.","commit_id":"93045ae93b904530e7315261b42e8ed336300344"},{"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":"525607bc30000b74e3769f8e862ffe870389541f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    \"\"\""},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":47,"context_line":"        warnings.warn("},{"line_number":48,"context_line":"            \u0027SSDDriver is deprecated. Use the generic NVMe driver \u0027"},{"line_number":49,"context_line":"            \u0027(nvme_driver). Removal target: 2027.2.\u0027,"},{"line_number":50,"context_line":"            DeprecationWarning,"}],"source_content_type":"text/x-python","patch_set":32,"id":"c2163fbb_57b90fa1","line":47,"updated":"2026-09-07 16:07:47.000000000","message":"Both drivers emit a Python DeprecationWarning from __init__, but CPython\u0027s default warning filters ignore DeprecationWarning unless it is triggered in __main__ or warnings are explicitly enabled. Cyborg loads drivers via stevedore DriverManager(invoke_on_load\u003dTrue) in cyborg/agent/resource_tracker.py, so the warning fires inside cyborg module code in the cyborg-agent console-script process, where it is silently discarded. Neither cyborg/common/service.py (prepare_service) nor oslo.log (8.3.1 source contains no logging.captureWarnings or simplefilter call) enables warning display or routes warnings to logs.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: Operators running cyborg-agent with inspur_nvme_ssd_driver enabled will never see the deprecation notice in logs or console output, defeating the commit\u0027s purpose of directing them to migrate to nvme_driver before the 2027.2 removal.\n\n**Suggestion**:\nEmit an operator-visible notification instead of, or in addition to, the Python warning: LOG.warning(...) in init_host()/__init__ (oslo.log output goes to the service logs), or use FutureWarning/debtcollector.removed, which are shown by default. Alternatively enable warning capture in service setup, but the LOG.warning route is the established OpenStack pattern.","commit_id":"0e52b3d89a86ad21836dcac061dd2e3aa8398057"}],"cyborg/accelerator/drivers/ssd/inspur/driver.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":"c276aaec268252c3e95c8d70826e95a05b71557e","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"},{"line_number":33,"context_line":"            DeprecationWarning,"},{"line_number":34,"context_line":"            stacklevel\u003d2,"}],"source_content_type":"text/x-python","patch_set":10,"id":"f46689f0_55e681db","line":31,"updated":"2026-08-11 16:46:14.000000000","message":"SSDDriver.__init__ emits a warning with \u0027Removal target: 2027.2\u0027 while InspurNVMeSSDDriver.__init__ only says \u0027will be removed in a future release\u0027 without specifying a timeline. Operators using the Inspur driver receive a less actionable message than those using the base driver.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Operators using the Inspur-specific driver see a vague \u0027future release\u0027 message while the base class gives a concrete removal version. This inconsistency may cause confusion about the actual deprecation timeline and delay migration planning.\n\n**Recommendation**:\nUpdate the InspurNVMeSSDDriver warning message to include \u0027Removal target: 2027.2.\u0027 to match the base SSDDriver message, ensuring all deprecation warnings in the same hierarchy communicate the same timeline.","commit_id":"6b523a61bd010ea1c0316f5f0970873ed7bc24e6"},{"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":"7ce14a46a53332c7f3e489fe2ba45ab7b119a97d","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"},{"line_number":33,"context_line":"            DeprecationWarning,"},{"line_number":34,"context_line":"            stacklevel\u003d2,"}],"source_content_type":"text/x-python","patch_set":11,"id":"0fbd07f2_b205dda9","line":31,"updated":"2026-08-12 10:27:40.000000000","message":"The SSDDriver deprecation warning specifies a concrete removal target (\u0027Removal target: 2027.2\u0027), but the InspurNVMeSSDDriver warning only says \u0027removed in a future release\u0027 without a target version. Since both drivers are deprecated in the same change for the same reason, the inconsistency may c...\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Operators using the Inspur driver will not know the concrete removal target from the warning alone, making migration planning harder. If both are removed together in 2027.2, the Inspur warning should say so.\n\n**Recommendation**:\nUpdate the InspurNVMeSSDDriver warning to include the same \u00272027.2\u0027 removal target as the SSDDriver warning, or document why the timelines differ if they are intentionally separate.","commit_id":"f49c9289939bc3c84a15420e64f33d01167c1f17"},{"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":"4412b8c48666e43d3db4bc93b159467de13a3a9d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    VENDOR \u003d \"inspur\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"},{"line_number":33,"context_line":"            DeprecationWarning,"}],"source_content_type":"text/x-python","patch_set":12,"id":"de119616_0c7607a4","line":30,"updated":"2026-08-12 16:00:11.000000000","message":"SSDDriver\u0027s warning message specifies a concrete removal target (\u0027Removal target: 2027.2\u0027) while InspurNVMeSSDDriver\u0027s message is vague (\u0027will be removed in a future release\u0027). Both classes are deprecated in the same patch and face the same removal timeline.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: Operators using InspurNVMeSSDDriver cannot plan their migration timeline because the warning lacks the concrete 2027.2 removal target that SSDDriver provides. This creates confusion about whether the two drivers have different deprecation schedules.\n\n**Recommendation**:\nUpdate the InspurNVMeSSDDriver warning message to include the same \u0027Removal target: 2027.2\u0027 as SSDDriver, e.g.: \u0027InspurNVMeSSDDriver is deprecated. Use NVMeDriver instead. Removal target: 2027.2.\u0027","commit_id":"01fdf95bcfd9f282cbd463db4bdbd93a1afb2b92"},{"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":"21084b483cd8592fe666fcfdcaafe0564d63f03f","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"},{"line_number":33,"context_line":"            DeprecationWarning,"},{"line_number":34,"context_line":"            stacklevel\u003d2,"}],"source_content_type":"text/x-python","patch_set":13,"id":"699cb645_dc2c2993","line":31,"updated":"2026-08-13 06:37:33.000000000","message":"SSDDriver\u0027s warning specifies \u0027Removal target: 2027.2\u0027 but InspurNVMeSSDDriver\u0027s warning says only \u0027a future release\u0027. The commit message states 2027.2 as the removal target for both, creating an inconsistency between the stated intent and the runtime message.\n\n**Severity**: SUGGESTION | **Confidence**: 0.9\n\n**Benefit**: Operators using InspurNVMeSSDDriver will not know the concrete removal timeline, making migration planning harder than it is for SSDDriver users who see the 2027.2 target.\n\n**Recommendation**:\nUpdate the InspurNVMeSSDDriver warning message to include \u0027Removal target: 2027.2\u0027 to match SSDDriver\u0027s message and the commit\u0027s stated intent.","commit_id":"d07e82ad5edc30a0ad9afa9b50b2717b9874e7aa"},{"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":"f44fe2380a8dbf921991095f31343e25e7142be7","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class InspurNVMeSSDDriver(SSDDriver):"},{"line_number":27,"context_line":"    VENDOR \u003d \"inspur\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"e07add37_84a71748","line":29,"updated":"2026-08-14 16:42:41.000000000","message":"InspurNVMeSSDDriver.__init__() emits its own DeprecationWarning but swallows all positional and keyword arguments instead of forwarding them, so any constructor arguments passed via SSDDriver.create(vendor\u003d\u0027inspur\u0027, ...) or direct instantiation are silently dropped by this subclass.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: If InspurNVMeSSDDriver (or a future subclass) gains constructor parameters, they are accepted syntactically but ignored, producing silently wrong configuration. Today the arguments are unused, but the signature accepts them while the implementation discards them, which is a latent correctness trap.\n\n**Suggestion**:\nForward the arguments while avoiding a duplicate warning, e.g. set an instance/class flag checked in the base __init__ (self-skip) and call super().__init__(*args, **kwargs); or at minimum add a comment documenting that *args/**kwargs are accepted for interface compatibility and intentionally not forwarded, so future maintainers do not \u0027fix\u0027 it into a duplicate-warning path.","commit_id":"f140210b74394ed540438d6afa3c77bc3dee1c6d"},{"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":"b73013e3fd1c30ea889d2b55b695d4d38058c697","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class InspurNVMeSSDDriver(SSDDriver):"},{"line_number":27,"context_line":"    VENDOR \u003d \"inspur\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"19a93ea7_ab8c397d","line":29,"updated":"2026-08-15 17:29:54.000000000","message":"The new InspurNVMeSSDDriver.__init__(self, *args, **kwargs) accepts positional and keyword arguments but discards them and never calls super().__init__(). Any caller-supplied args are silently ignored, unlike SSDDriver which forwards them.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: If any current or future caller (stevedore invoke_on_load, SSDDriver.create(), out-of-tree tooling) passes constructor arguments they are silently dropped with no error, producing drivers configured differently than requested. It also breaks the Liskov pattern the base class just established one...\n\n**Suggestion**:\nMatch the base-class pattern: accept no extra arguments (def __init__(self):) or, if args must be tolerated, forward them via super().__init__(*args, **kwargs) while suppressing the duplicate base warning (e.g. filter the base message, or factor the warning into a helper both classes call).","commit_id":"d6abfc56516a3a4743419854c0b8088591a36556"},{"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":"004b7dc78c2b9a2a36f126b62eaf894a06b73506","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class InspurNVMeSSDDriver(SSDDriver):"},{"line_number":27,"context_line":"    VENDOR \u003d \"inspur\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"c865969f_4eb7c8f1","line":29,"updated":"2026-08-31 11:47:53.000000000","message":"The two warnings added by this patch give operators different guidance. SSDDriver\u0027s message says \u0027Use the generic NVMe driver (nvme_driver). Removal target: 2027.2.\u0027 while InspurNVMeSSDDriver\u0027s says only \u0027will be removed in a future release. Use NVMeDriver instead.\u0027 -- no removal timeline and a Python class name (\u0027NVMeDriver\u0027) instead of the config value operators must set in enabled_drivers (nvme_driver, per cyborg/conf/agent.py:24-30 and the pyproject.toml entry point). Additionally, InspurNVMeSSDDriver.__init__ does not call super().__init__(*args, **kwargs) (the base forwards args), so the base class\u0027s deprecation text is never emitted for the Inspur driver and any future base __init__ work is silently bypassed. The commit message states both drivers direct operators to nvme_driver with a 2027.2 removal target.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: Operators of inspur_nvme_ssd_driver -- the only one of the two drivers actually loadable through enabled_drivers (the generic SSDDriver has no cyborg.accelerator.driver entry point in pyproject.toml) -- get the vaguest message of the two: no timeline and no actionable config value, contradicting the commit\u0027s stated intent.\n\n**Suggestion**:\nIn InspurNVMeSSDDriver.__init__, call super().__init__(*args, **kwargs) and drop the duplicate warn, or keep one Inspur-specific message reusing the same \u0027nvme_driver\u0027 wording and \u0027Removal target: 2027.2\u0027. Extend test_deprecation_warning (or add an InspurNVMeSSDDriver case) to pin the message and warning count.","commit_id":"adbd36c7e93fec144ec5af262b3209080a4addb5"},{"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":"f167140247a1c33a507d3d7a3da45835dd1eb09e","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class InspurNVMeSSDDriver(SSDDriver):"},{"line_number":27,"context_line":"    VENDOR \u003d \"inspur\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"}],"source_content_type":"text/x-python","patch_set":28,"id":"5931833c_41d71344","line":29,"updated":"2026-09-03 18:08:38.000000000","message":"The commit message states that warnings for both the SSD driver and the Inspur NVMe SSD driver direct operators to switch to \u0027nvme_driver\u0027 and that both drivers are targeted for removal in 2027.2. The generic SSDDriver warning matches (\u0027Use the generic NVMe driver (nvme_driver). Removal target: 2027.2.\u0027), but the Inspur warning only says \u0027Use NVMeDriver instead\u0027 and \u0027a future release\u0027. NVMeDriver is a Python class name, not something an operator can set in cyborg.conf\u0027s enabled_drivers; the Inspur driver is the only one of the two reachable through a registered entry point (inspur_nvme_ssd_driver), so the production-visible warning is the one without actionable guidance.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: Operators on inspur_nvme_ssd_driver, the only production-reachable SSD driver, get a notice without the config option to switch to or the removal deadline, making the migration guidance the commit promises effectively unusable for them.\n\n**Suggestion**:\nMirror the base-driver wording: reference the nvme_driver entry point name and the 2027.2 removal target in the Inspur warning (and module docstring). Extend test_deprecation_warning to cover InspurNVMeSSDDriver so the message content is asserted; the added test currently covers only SSDDriver.","commit_id":"5fc136152bab36a6a69fec59d992367d9fde8a86"},{"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":"bd159793cad3bfb4439e7148c63b350d332da75f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    VENDOR \u003d \"inspur\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"},{"line_number":33,"context_line":"            DeprecationWarning,"}],"source_content_type":"text/x-python","patch_set":31,"id":"dbc7d215_d909d19b","line":30,"updated":"2026-09-07 05:50:06.000000000","message":"The InspurNVMeSSDDriver warning says \u0027Use NVMeDriver instead.\u0027 NVMeDriver is a Python class name, not a driver entry point. Operators select drivers via CONF.agent.enabled_drivers using entry-point names (e.g. \u0027nvme_driver\u0027, \u0027inspur_nvme_ssd_driver\u0027), and an unknown name raises exception.InvalidDriver at agent startup. The message also omits the concrete removal target (2027.2) that the base driver message and the commit message state.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: An operator who follows the literal instruction and sets enabled_drivers \u003d NVMeDriver gets InvalidDriver at agent startup and a failing service restart, and they lack the concrete removal deadline to plan migration.\n\n**Suggestion**:\nAlign the message with the base driver: e.g. \u0027InspurNVMeSSDDriver is deprecated. Use the generic NVMe driver (nvme_driver). Removal target: 2027.2.\u0027 Optionally extend the new test to cover the Inspur message as well.","commit_id":"93045ae93b904530e7315261b42e8ed336300344"},{"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":"2d984c497c159cc39273ddccbbf47d8bdc4dd1b4","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    VENDOR \u003d \"inspur\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"},{"line_number":33,"context_line":"            DeprecationWarning,"}],"source_content_type":"text/x-python","patch_set":31,"id":"77bf26ed_c1f92bb6","line":30,"updated":"2026-09-05 05:16:22.000000000","message":"The commit message states the warnings direct operators \u0027to switch to ``nvme_driver`` in cyborg.conf\u0027 and that \u0027Both drivers are targeted for removal in 2027.2\u0027. The base SSDDriver warning matches, but the InspurNVMeSSDDriver warning says only \u0027will be removed in a future release. Use NVMeDriver instead.\u0027, naming the Python class NVMeDriver rather than the entrypoint value nvme_driver that operators must set in enabled_drivers, and dropping the concrete removal target. The two messages are independent implementations of the same deprecation rule and can drift.\n\n**Severity**: WARNING | **Confidence**: 0.85\n\n**Impact**: An operator who does see the Inspur warning is not told the exact configuration value to switch to (nvme_driver) or the migration deadline, weakening the deprecation the change exists to deliver and inviting a second variant of the timeline in a later patch.\n\n**Suggestion**:\nMatch the base message: reference nvme_driver (the entrypoint/config value) and the 2027.2 removal target in the Inspur warning, ideally by sharing the message text as a constant in ssd/base.py so the two cannot diverge.","commit_id":"93045ae93b904530e7315261b42e8ed336300344"},{"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":"525607bc30000b74e3769f8e862ffe870389541f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    VENDOR \u003d \"inspur\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":30,"context_line":"        warnings.warn("},{"line_number":31,"context_line":"            \u0027InspurNVMeSSDDriver is deprecated and will be removed in a \u0027"},{"line_number":32,"context_line":"            \u0027future release. Use NVMeDriver instead.\u0027,"},{"line_number":33,"context_line":"            DeprecationWarning,"}],"source_content_type":"text/x-python","patch_set":32,"id":"1d31deb9_ea56c1fd","line":30,"updated":"2026-09-07 16:07:47.000000000","message":"The InspurNVMeSSDDriver warning says the driver \u0027will be removed in a future release\u0027 and directs users to \u0027NVMeDriver\u0027, while the base SSDDriver warning and the commit message both state the concrete removal target 2027.2 and name the replacement as nvme_driver. The Inspur driver is the only one of the two reachable in production (it is the sole SSD entrypoint, inspur_nvme_ssd_driver, in pyproject.toml), so operators of the actually-deployable driver get the vaguer message.\n\n**Severity**: SUGGESTION | **Confidence**: 0.85\n\n**Impact**: Operators on the Inspur driver are given an undated removal window and a class name instead of the cyborg.conf value, weakening the migration guidance precisely for the driver that can actually be enabled in a deployment.\n\n**Recommendation**:\nAlign the Inspur warning with the base class message, e.g. \u0027InspurNVMeSSDDriver is deprecated. Use the generic NVMe driver (nvme_driver). Removal target: 2027.2.\u0027, and consider a matching unit test asserting the timeline and driver name.","commit_id":"0e52b3d89a86ad21836dcac061dd2e3aa8398057"}],"cyborg/tests/unit/accelerator/drivers/ssd/test_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":"dc2e630a486ca75fe07eb0a1f5338c147338b373","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_ssd_vendor_not_found(self):"},{"line_number":34,"context_line":"        self.assertRaises(LookupError, SSDDriver.create, \u0027_non-exist_vendor\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_deprecation_warning(self):"},{"line_number":37,"context_line":"        with warnings.catch_warnings(record\u003dTrue) as w:"},{"line_number":38,"context_line":"            warnings.simplefilter(\u0027always\u0027)"},{"line_number":39,"context_line":"            SSDDriver()"}],"source_content_type":"text/x-python","patch_set":8,"id":"53a31d7f_faabc94b","line":36,"updated":"2026-08-09 06:04:22.000000000","message":"The commit adds a DeprecationWarning to InspurNVMeSSDDriver.__init__, but the new test_deprecation_warning test only verifies the SSDDriver base-class warning. There is no test asserting that instantiating InspurNVMeSSDDriver emits its own DeprecationWarning with the expected message.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: If someone later removes the DeprecationWarning from InspurNVMeSSDDriver, no test will catch the regression. The test coverage for the deprecation is incomplete for one of the two classes modified.\n\n**Recommendation**:\nAdd a test that instantiates InspurNVMeSSDDriver inside a warnings.catch_warnings(record\u003dTrue) context, asserts exactly one DeprecationWarning is emitted, and checks the message contains \u0027InspurNVMeSSDDriver\u0027 or \u0027NVMeDriver\u0027.","commit_id":"a1d4b329f7075826d3f8305f163d5688fd58d2b8"},{"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":"b17a03ef593d1952860328f8b447f57b8055da0e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_ssd_vendor_not_found(self):"},{"line_number":34,"context_line":"        self.assertRaises(LookupError, SSDDriver.create, \u0027_non-exist_vendor\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_deprecation_warning(self):"},{"line_number":37,"context_line":"        with warnings.catch_warnings(record\u003dTrue) as w:"},{"line_number":38,"context_line":"            warnings.simplefilter(\u0027always\u0027)"},{"line_number":39,"context_line":"            SSDDriver()"}],"source_content_type":"text/x-python","patch_set":9,"id":"354da75c_1eddb907","line":36,"updated":"2026-08-11 10:25:18.000000000","message":"The patch adds a new __init__ with a DeprecationWarning to InspurNVMeSSDDriver, but the test file only covers SSDDriver\u0027s deprecation warning. There is no test verifying that InspurNVMeSSDDriver emits a DeprecationWarning with the expected message.\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: If the InspurNVMeSSDDriver deprecation warning is accidentally removed or altered in future changes, no test will catch the regression. The changed behavior for InspurNVMeSSDDriver is untested.\n\n**Suggestion**:\nAdd a test (e.g., test_inspur_deprecation_warning) that instantiates InspurNVMeSSDDriver() inside warnings.catch_warnings(record\u003dTrue), asserts exactly one DeprecationWarning is emitted, and verifies the message references \u0027NVMeDriver\u0027. This mirrors the existing test_deprecation_warning pattern.","commit_id":"6c7806f6cd116195dc77599b51f7683412c73ceb"},{"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":"c276aaec268252c3e95c8d70826e95a05b71557e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_ssd_vendor_not_found(self):"},{"line_number":34,"context_line":"        self.assertRaises(LookupError, SSDDriver.create, \u0027_non-exist_vendor\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_deprecation_warning(self):"},{"line_number":37,"context_line":"        with warnings.catch_warnings(record\u003dTrue) as w:"},{"line_number":38,"context_line":"            warnings.simplefilter(\u0027always\u0027)"},{"line_number":39,"context_line":"            SSDDriver()"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a96a884_ac91aa99","line":36,"updated":"2026-08-11 16:46:14.000000000","message":"The new test_deprecation_warning only exercises the base SSDDriver warning. There is no test verifying that InspurNVMeSSDDriver emits its own DeprecationWarning, nor that exactly one warning is produced (no duplicate from the base class). The commit message explicitly states the subclass avoids c...\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: The no-duplicate-warning behavior is a stated design goal of this patch. Without a test, a future refactor could reintroduce the duplicate warning undetected, degrading the operator experience.\n\n**Suggestion**:\nAdd a test that instantiates InspurNVMeSSDDriver() within a warnings.catch_warnings(record\u003dTrue) context, asserts exactly one DeprecationWarning is emitted, and verifies the message mentions InspurNVMeSSDDriver. This directly validates the no-duplicate design described in the commit message.","commit_id":"6b523a61bd010ea1c0316f5f0970873ed7bc24e6"},{"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":"7ce14a46a53332c7f3e489fe2ba45ab7b119a97d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_ssd_vendor_not_found(self):"},{"line_number":34,"context_line":"        self.assertRaises(LookupError, SSDDriver.create, \u0027_non-exist_vendor\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_deprecation_warning(self):"},{"line_number":37,"context_line":"        with warnings.catch_warnings(record\u003dTrue) as w:"},{"line_number":38,"context_line":"            warnings.simplefilter(\u0027always\u0027)"},{"line_number":39,"context_line":"            SSDDriver()"}],"source_content_type":"text/x-python","patch_set":11,"id":"21998241_1c279997","line":36,"updated":"2026-08-12 10:27:40.000000000","message":"The change adds a DeprecationWarning to both SSDDriver.__init__ and InspurNVMeSSDDriver.__init__, but the new test_deprecation_warning test only exercises SSDDriver. There is no test verifying that InspurNVMeSSDDriver emits a DeprecationWarning, and no test confirming it emits exactly one warning...\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Without a test, a future refactor could accidentally remove the InspurNVMeSSDDriver deprecation warning or reintroduce a duplicate warning without detection. The non-obvious super().__init__() skip makes regression particularly likely.\n\n**Suggestion**:\nAdd a test similar to test_deprecation_warning that instantiates InspurNVMeSSDDriver within a warnings.catch_warnings context, asserts exactly one DeprecationWarning is emitted, and verifies the message mentions the Inspur driver or NVMeDriver.","commit_id":"f49c9289939bc3c84a15420e64f33d01167c1f17"},{"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":"4412b8c48666e43d3db4bc93b159467de13a3a9d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_ssd_vendor_not_found(self):"},{"line_number":34,"context_line":"        self.assertRaises(LookupError, SSDDriver.create, \u0027_non-exist_vendor\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_deprecation_warning(self):"},{"line_number":37,"context_line":"        with warnings.catch_warnings(record\u003dTrue) as w:"},{"line_number":38,"context_line":"            warnings.simplefilter(\u0027always\u0027)"},{"line_number":39,"context_line":"            SSDDriver()"}],"source_content_type":"text/x-python","patch_set":12,"id":"58248954_b02b0c5b","line":36,"updated":"2026-08-12 16:00:11.000000000","message":"The patch adds DeprecationWarning emission to both SSDDriver.__init__ and InspurNVMeSSDDriver.__init__, but the new test_deprecation_warning test only covers SSDDriver. There is no test asserting that instantiating InspurNVMeSSDDriver produces a DeprecationWarning.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: Without a dedicated test, future refactoring could silently remove or break the InspurNVMeSSDDriver deprecation warning without test failure. The deliberate omission of super().__init__() is also untested — a future change could accidentally reintroduce a duplicate warning from the base class.\n\n**Suggestion**:\nAdd a test similar to test_deprecation_warning that instantiates InspurNVMeSSDDriver(), asserts exactly one DeprecationWarning is emitted, and verifies the warning message contains \u0027NVMeDriver\u0027. This also implicitly verifies that no duplicate warning from SSDDriver leaks through.","commit_id":"01fdf95bcfd9f282cbd463db4bdbd93a1afb2b92"},{"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":"21084b483cd8592fe666fcfdcaafe0564d63f03f","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_ssd_vendor_not_found(self):"},{"line_number":34,"context_line":"        self.assertRaises(LookupError, SSDDriver.create, \u0027_non-exist_vendor\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_deprecation_warning(self):"},{"line_number":37,"context_line":"        with warnings.catch_warnings(record\u003dTrue) as w:"},{"line_number":38,"context_line":"            warnings.simplefilter(\u0027always\u0027)"},{"line_number":39,"context_line":"            SSDDriver()"}],"source_content_type":"text/x-python","patch_set":13,"id":"f9115a09_6146b162","line":36,"updated":"2026-08-13 06:37:33.000000000","message":"The new InspurNVMeSSDDriver.__init__ emits a DeprecationWarning, but the added test only verifies SSDDriver\u0027s warning. There is no test asserting that instantiating InspurNVMeSSDDriver produces a DeprecationWarning.\n\n**Severity**: WARNING | **Confidence**: 0.9\n\n**Impact**: A regression that accidentally removes the InspurNVMeSSDDriver deprecation warning would not be caught by the test suite, leaving operators without the migration signal the patch is meant to provide.\n\n**Suggestion**:\nAdd a test method (e.g., test_inspur_deprecation_warning) that instantiates InspurNVMeSSDDriver() inside warnings.catch_warnings(record\u003dTrue), asserts exactly one DeprecationWarning, and checks that the message mentions \u0027NVMeDriver\u0027.","commit_id":"d07e82ad5edc30a0ad9afa9b50b2717b9874e7aa"},{"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":"f44fe2380a8dbf921991095f31343e25e7142be7","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_ssd_vendor_not_found(self):"},{"line_number":34,"context_line":"        self.assertRaises(LookupError, SSDDriver.create, \u0027_non-exist_vendor\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_deprecation_warning(self):"},{"line_number":37,"context_line":"        with warnings.catch_warnings(record\u003dTrue) as w:"},{"line_number":38,"context_line":"            warnings.simplefilter(\u0027always\u0027)"},{"line_number":39,"context_line":"            SSDDriver()"}],"source_content_type":"text/x-python","patch_set":15,"id":"d2bc77a7_76571edf","line":36,"updated":"2026-08-14 16:42:41.000000000","message":"The new test covers SSDDriver\u0027s warning only. There is no equivalent test for InspurNVMeSSDDriver.__init__, including the non-duplication behavior the commit message explicitly calls out (no duplicate warning because super().__init__() is not called).\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: The intentionally-suppressed duplicate warning is a subtle invariant: a future refactor adding super().__init__() would emit two warnings and no test would catch it. Coverage of the changed Inspur driver\u0027s warning (which names the class and points to NVMeDriver) is also missing.\n\n**Suggestion**:\nAdd a test that instantiates InspurNVMeSSDDriver() under warnings.catch_warnings(record\u003dTrue) with simplefilter(\u0027always\u0027), asserts len(w) \u003d\u003d 1 (locking in the no-duplicate invariant), asserts w[0].category is DeprecationWarning, and asserts \u0027InspurNVMeSSDDriver\u0027 appears in str(w[0].message).","commit_id":"f140210b74394ed540438d6afa3c77bc3dee1c6d"},{"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":"0530e062635f20c4822e8987e81d51d165e0357d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_create_ssd_vendor_not_found(self):"},{"line_number":34,"context_line":"        self.assertRaises(LookupError, SSDDriver.create, \u0027_non-exist_vendor\u0027)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def test_deprecation_warning(self):"},{"line_number":37,"context_line":"        with warnings.catch_warnings(record\u003dTrue) as w:"},{"line_number":38,"context_line":"            warnings.simplefilter(\u0027always\u0027)"},{"line_number":39,"context_line":"            SSDDriver()"}],"source_content_type":"text/x-python","patch_set":17,"id":"f693e565_4f9587b0","line":36,"updated":"2026-08-17 08:55:37.000000000","message":"The new test only asserts the SSDDriver base-class warning. The Inspur-specific warning text (\u0027Use NVMeDriver instead\u0027, no \u0027nvme_driver\u0027 token, no 2027.2 target) and the intended no-duplicate-warning behavior when instantiating InspurNVMeSSDDriver are untested.\n\n**Severity**: SUGGESTION | **Confidence**: 0.8\n\n**Benefit**: The Inspur warning path and the documented no-duplicate-warning contract from the commit message are unguarded; regressions in either would pass the test suite silently.\n\n**Recommendation**:\nAdd a test that instantiates InspurNVMeSSDDriver under catch_warnings and asserts exactly one DeprecationWarning whose message names NVMeDriver, mirroring the base-class test.","commit_id":"e03d7f0113387462812b30201e81172c118dde28"},{"author":{"_account_id":39344,"name":"Gihong Lee","display_name":"gamio","email":"gh9231@gmail.com","username":"gamio"},"change_message_id":"9e712bfdaa71ab8ceef6523a75762afcdbb95ca1","unresolved":true,"context_lines":[{"line_number":43,"context_line":"        drv \u003d SSDDriver()"},{"line_number":44,"context_line":"        drv.cleanup(mock.Mock())"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def test_deprecation_warning(self):"},{"line_number":47,"context_line":"        with warnings.catch_warnings(record\u003dTrue) as w:"},{"line_number":48,"context_line":"            warnings.simplefilter(\u0027always\u0027)"},{"line_number":49,"context_line":"            SSDDriver()"}],"source_content_type":"text/x-python","patch_set":32,"id":"b237cb9e_e0f20055","line":46,"range":{"start_line":46,"start_character":8,"end_line":46,"end_character":32},"updated":"2026-09-15 15:18:08.000000000","message":"The test covers `SSDDriver` only, but `InspurNVMeSSDDriver` emits its own warning.\nCould you add a case instantiating it and asserting the same?","commit_id":"0e52b3d89a86ad21836dcac061dd2e3aa8398057"}]}
