GPU Host Convergence Failure Due to Invalid mdev_config Format
Problem
GPU-enabled compute hosts fail during convergence or upgrade while applying the pf9-ostackhost configuration.
The failure is observed during the set_config stage with errors similar to:
pf9_app.py INFO - Setting config for pf9-ostackhost.2026.1.2-76682026-04-23 22:08:11,217 - pf9_app.py ERROR - pf9-ostackhost:set_config failed:err: Expecting value: line 1 column 1 (char 0)command:/opt/pf9/hostagent/bin/python /opt/pf9/pf9-ostackhost/config --set-config '{...}'Additional convergence failures may follow:
session.py ERROR - Exception during apps processing: <class 'pf9app.exceptions.ConfigOperationError'>session.py INFO - Converge failedEnvironment
Private Cloud Director Virtualization - v2025.4 and Higher
Self-Hosted Private Cloud Director Virtualization - v2025.4 and Higher
GPU hosts
Cause
The issue occurs because the persisted role configuration for GPU hosts contains an invalid value for mdev_config.
The newer pf9-ostackhost configuration parser expects mdev_config to be a valid JSON array. However, some existing GPU hosts contain the value as an empty string:
"mdev_config": ""During the converge or upgrade process, the parser attempts to decode this value as JSON and fails, resulting in:
This causes the pf9-ostackhost:set_config step to fail and prevents successful converge completion.
Diagnostics
Check hostagent logs for the configuration parsing error:
Example output:
Verify converge failure messages:
Source credentials before generating the API token.
Generate the Keystone token required for the API calls:
Verify the token was generated successfully:
Fetch the current role configuration from Resmgr:
Inspect the returned payload for the following invalid field:
Confirm that the host is GPU-enabled and contains mdev/vGPU configuration such as:
Resolution
Option 1 — Update using Resmgr API
Source the admin OpenStack credentials:
Generate the Keystone token:
Fetch the existing role configuration:
Locate the following invalid entry in the payload:
Replace it with a valid empty JSON array:
Push the corrected configuration back to Resmgr using the PUT API.
Example:
Retry the host converge or upgrade operation.
Option 2 — Update directly in the database
Take a backup of the Resmgr database before making any modifications.
Connect to the Resmgr database.
Verify the current host role settings:
Locate the invalid entry:
Update the value to an empty JSON list:
Update the host role settings in the database with the corrected JSON payload.
Example:
Retry the host converge or upgrade operation.
Validation
Verify that the converge operation completes successfully.
Confirm that the following error is no longer present:
Confirm successful configuration application in the logs:
Verify the host returns to Healthy/Ready state in the PCD UI.
Additional Information
This issue only affects GPU-enabled hosts using mediated device (mdev) configuration.
Non-GPU compute hosts are not impacted.
The issue originates from an invalid pre-existing persisted configuration and is not caused by the upgrade framework itself.
Setting
mdev_configto a valid JSON list ([]) safely resolves the parsing issue while preserving normal GPU/vGPU functionality.
Last updated
