)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":12393,"name":"chandan kumar","display_name":"Chandan Kumar","email":"chkumar@redhat.com","username":"chkumar246"},"change_message_id":"717705bfa99b23d7733faad29c5e63dea3e2e100","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"4c479e75_1cca46d0","updated":"2026-08-06 10:57:10.000000000","message":"Need some more work here.","commit_id":"0c8fbd2ef4f644726b451048fef749a694366222"}],"devstack/lib/pci_sim":[{"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":"df6c95977f4b75aa582421115b7034f59c76aa0e","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    vid\u003d$(cat \"/sys/bus/pci/devices/${nvme_vfs[0]}/vendor\" | sed \u0027s/^0x//\u0027)"},{"line_number":555,"context_line":"    pid\u003d$(cat \"/sys/bus/pci/devices/${nvme_vfs[0]}/device\" | sed \u0027s/^0x//\u0027)"},{"line_number":556,"context_line":"    dp_name\u003d\"$CYBORG_NVME_DEVICE_PROFILE_NAME\""},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    groups\u003d\"[{\\\"resources:CUSTOM_NVME_${vid^^}_${pid^^}\\\":\\\"1\\\",\\\"trait:CUSTOM_NVME_PRODUCT_ID_${pid^^}\\\":\\\"required\\\"}]\""},{"line_number":559,"context_line":"    if ! openstack accelerator device profile list -f value -c name | \\"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"2917ae22_40edcd0b","line":556,"updated":"2026-08-06 09:55:32.000000000","message":"The new function create_pci_sim_cyborg_nvme_device_profile references $CYBORG_NVME_DEVICE_PROFILE_NAME to set the device profile name, but this variable is never defined in devstack/settings or anywhere else in the codebase. The analogous PCI_SIM_CYBORG_DEVICE_PROFILE_NAME is defined in devstack/...\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: When PCI_SIM_DEVICES includes \u0027cyborg:nvme\u0027 and PCI_SIM_CREATE_TEST_FLAVORS is True, the test-resource creation phase will attempt to create a Cyborg NVMe device profile with an empty name. This will either fail with an OpenStack CLI error or silently create an incorrectly named resource, breakin...\n\n**Priority**: Before merge\n**Why This Matters**: When PCI_SIM_DEVICES includes \u0027cyborg:nvme\u0027 and PCI_SIM_CREATE_TEST_FLAVORS is True, the test-resource creation phase will attempt to create a Cyborg NVMe device profile with an empty name. This will either fail with an OpenStack CLI error or silently create an incorrectly named resource, breakin...\n\n**Recommendation**:\nAdd a default for CYBORG_NVME_DEVICE_PROFILE_NAME in devstack/settings, e.g.: PCI_SIM_NVME_DEVICE_PROFILE_NAME\u003d${PCI_SIM_NVME_DEVICE_PROFILE_NAME:-pci-sim-cyborg-nvme-dp}. Then reference $PCI_SIM_NVME_DEVICE_PROFILE_NAME in create_pci_sim_cyborg_nvme_device_profile to match the PCI_SIM_ naming convention used by all other settings.","commit_id":"0c8fbd2ef4f644726b451048fef749a694366222"},{"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":"a12f055eb71cac008d47523b51e5f8542496f4b0","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    for vf in \"$@\"; do"},{"line_number":326,"context_line":"        pid\u003d$(cat \"/sys/bus/pci/devices/$vf/device\" | sed \u0027s/^0x//\u0027)"},{"line_number":327,"context_line":"        specs+\u003d(\"{\\\"address\\\":\\\"$vf\\\",\\\"vendor_id\\\":\\\"1d55\\\",\\\"product_id\\\":\\\"$pid\\\",\\\"device_type\\\":\\\"type-VF\\\",\\\"managed\\\":\\\"no\\\"}\")"},{"line_number":328,"context_line":"        if ! printf \u0027%s\\n\u0027 \"${seen_pids[@]}\" 2\u003e/dev/null | grep -qx \"$pid\"; then"},{"line_number":329,"context_line":"            seen_pids+\u003d(\"$pid\")"},{"line_number":330,"context_line":"            aliases+\u003d(\"{\\\"vendor_id\\\":\\\"1d55\\\",\\\"product_id\\\":\\\"$pid\\\",\\\"device_type\\\":\\\"type-VF\\\",\\\"name\\\":\\\"$PCI_SIM_NOVA_ALIAS_NAME\\\"}\")"},{"line_number":331,"context_line":"        fi"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"df40dbb4_0e021e29","line":328,"updated":"2026-08-06 13:59:51.000000000","message":"In configure_pci_sim_nova_conf_file, when VFs with different product IDs are passed, the code generates multiple alias entries sharing the same alias name but with different product_id values. Nova requires PCI alias names to be unique; duplicates with conflicting product IDs cause Nova configura...\n\n**Severity**: WARNING | **Confidence**: 0.8\n\n**Impact**: If PCI_SIM_DEVICES\u003d\"nova:uart,nova:nvme\" is configured, Nova will see two [pci] alias entries with the same name but different product IDs, causing a nova.conf parse error or ambiguous alias resolution. Current CI config does not trigger this; it is a latent issue.\n\n**Suggestion**:\nWhen multiple product IDs are present, generate unique alias names per product ID (e.g., pci_sim_vf_1001, pci_sim_vf_1002) or validate and warn when distinct product IDs would produce a name collision.","commit_id":"016d2825ae2b68bc78ab1c562646f5c1c902a422"},{"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":"a12f055eb71cac008d47523b51e5f8542496f4b0","unresolved":false,"context_lines":[{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    [[ \"$PCI_SIM_CONFIGURE_CYBORG_PCI\" \u003d\u003d True ]] || return 0"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    mapfile -t cyborg_vfs \u003c \u003c(pci_sim_collect_target_vfs cyborg)"},{"line_number":490,"context_line":"    if (( ${#cyborg_vfs[@]} \u003d\u003d 0 )); then"},{"line_number":491,"context_line":"        return 0"},{"line_number":492,"context_line":"    fi"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"cde2b516_8f313dc1","line":489,"updated":"2026-08-06 13:59:51.000000000","message":"The create_pci_sim_cyborg_device_profile function collects all Cyborg-targeted VFs and uses the first VF\u0027s product ID for a PCI device profile. Unlike configure_pci_sim_cyborg_service_config which correctly separates NVMe VFs from PCI VFs, this function does not filter NVMe VFs. When all Cyborg V...\n\n**Severity**: HIGH | **Confidence**: 0.9\n\n**Risk**: With CI config PCI_SIM_DEVICES\u003d\"nova:uart,cyborg:nvme\", create_pci_sim_cyborg_device_profile creates a PCI device profile with product_id 1002 (NVMe) and CUSTOM_PCI resource class. The pci-sim-cyborg flavor references this profile, so NVMe test flows would try to allocate a CUSTOM_PCI resource fo...\n\n**Priority**: Before merge\n**Why This Matters**: With CI config PCI_SIM_DEVICES\u003d\"nova:uart,cyborg:nvme\", create_pci_sim_cyborg_device_profile creates a PCI device profile with product_id 1002 (NVMe) and CUSTOM_PCI resource class. The pci-sim-cyborg flavor references this profile, so NVMe test flows would try to allocate a CUSTOM_PCI resource fo...\n\n**Recommendation**:\nFilter NVMe VFs out before selecting the product ID, mirroring configure_pci_sim_cyborg_service_config\u0027s approach. Iterate cyborg_vfs, skip those whose device ID matches PCI_SIM_NVME_VF_DEVICE_ID, and return early if no PCI VFs remain.","commit_id":"016d2825ae2b68bc78ab1c562646f5c1c902a422"},{"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":"a12f055eb71cac008d47523b51e5f8542496f4b0","unresolved":false,"context_lines":[{"line_number":521,"context_line":""},{"line_number":522,"context_line":"    vid\u003d$(cat \"/sys/bus/pci/devices/${nvme_vfs[0]}/vendor\" | sed \u0027s/^0x//\u0027)"},{"line_number":523,"context_line":"    pid\u003d$(cat \"/sys/bus/pci/devices/${nvme_vfs[0]}/device\" | sed \u0027s/^0x//\u0027)"},{"line_number":524,"context_line":"    dp_name\u003d\"$CYBORG_NVME_DEVICE_PROFILE_NAME\""},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    groups\u003d\"[{\\\"resources:CUSTOM_NVME_${vid^^}_${pid^^}\\\":\\\"1\\\",\\\"trait:CUSTOM_NVME_PRODUCT_ID_${pid^^}\\\":\\\"required\\\"}]\""},{"line_number":527,"context_line":"    if ! openstack accelerator device profile list -f value -c name | \\"}],"source_content_type":"application/octet-stream","patch_set":3,"id":"84db9ece_890eb255","line":524,"updated":"2026-08-06 13:59:51.000000000","message":"The function create_pci_sim_cyborg_nvme_device_profile assigns $CYBORG_NVME_DEVICE_PROFILE_NAME to dp_name at line 524, but this variable is never defined anywhere in the codebase. The analogous PCI profile variable PCI_SIM_CYBORG_DEVICE_PROFILE_NAME is defined in devstack/settings with a default...\n\n**Severity**: CRITICAL | **Confidence**: 1.0\n\n**Risk**: When create_pci_sim_cyborg_nvme_device_profile runs in CI with cyborg:nvme, it will attempt to create an accelerator device profile with an empty name. The openstack CLI call will fail with a validation error or create a broken resource. The grep -qx check may match empty lines, masking the failure.\n\n**Priority**: Immediate\n**Why This Matters**: When create_pci_sim_cyborg_nvme_device_profile runs in CI with cyborg:nvme, it will attempt to create an accelerator device profile with an empty name. The openstack CLI call will fail with a validation error or create a broken resource. The grep -qx check may match empty lines, masking the failure.\n\n**Recommendation**:\nAdd a default in devstack/settings following the existing pattern, e.g.: PCI_SIM_CYBORG_NVME_DEVICE_PROFILE_NAME\u003d${PCI_SIM_CYBORG_NVME_DEVICE_PROFILE_NAME:-pci-sim-cyborg-nvme-dp}. Then update line 524 to use $PCI_SIM_CYBORG_NVME_DEVICE_PROFILE_NAME. Also consider whether create_pci_sim_cyborg_flavor should reference this NVMe profile for NVMe test flows.","commit_id":"016d2825ae2b68bc78ab1c562646f5c1c902a422"}]}
