Hi @All,
Catalyst Center version: 3.1.6
I am working on a NetBox-based Zero-Touch Provisioning solution for Cisco Catalyst switches using Catalyst Center PnP.
The PnP workflow and CLI template deployment work correctly. However, I cannot define the required stack member numbering based on switch serial numbers.
I am using the Import Devices in Bulk API: POST /dna/intent/api/v1/onboarding/pnp-device/import
According to the API documentation, the request supports the stackInfo object, including stackMemberList.
My request payload looks similar to this:
[
{
"deviceInfo": {
"serialNumber": "SERIAL_NUMBER_1",
"stack": true,
"description": "Access switch stack",
"pid": "C9200L-24P-4G",
"siteId": "SITE_ID",
"sudiRequired": false,
"deviceSudiSerialNos": [
"SERIAL_NUMBER_1",
"SERIAL_NUMBER_2"
],
"userMicNumbers": [],
"userSudiSerialNos": [],
"hostname": "SWITCH-STACK-01",
"stackInfo": {
"supportsStackWorkflows": true,
"isFullRing": true,
"stackRingProtocol": "StackWise",
"totalMemberCount": 2,
"validLicenseLevels": [],
"stackMemberList": [
{
"serialNumber": "SERIAL_NUMBER_1",
"role": "Active",
"pid": "C9200L-24P-4G",
"sudiSerialNumber": "SERIAL_NUMBER_1",
"stackNumber": 1,
"priority": 15
},
{
"serialNumber": "SERIAL_NUMBER_2",
"role": "Standby",
"pid": "C9200L-24P-4G",
"sudiSerialNumber": "SERIAL_NUMBER_2",
"stackNumber": 2,
"priority": 14
}
]
}
}
}
]The API returns a successful response, but the imported device contains an empty member list: "stackMemberList": []
I see the same result when checking the device using: GET /dna/intent/api/v1/onboarding/pnp-device
I have tested several payload variations, but the result is always the same.
When the physical stack connects to Catalyst Center PnP, the API correctly detects both stack members and populates stackMemberList. However, the members may be detected in a different order than required.
For example, I need:
SERIAL_NUMBER_1 -> switch 1
SERIAL_NUMBER_2 -> switch 2
However, Catalyst Center may detect and assign them in the opposite order.
I have already tried:
- Erasing the switch configuration multiple times
- Removing the switches from PnP
- Clearing the existing stack member numbering
- Renumbering the switches to firest before connecting them to PnP
- Changing the switch startup order
- Setting stack priorities before discovery
- Updating the PnP device after discovery
None of these methods provides a reliable way to assign a specific serial number to a specific stack member number during the PnP workflow.
Is stackMemberList supported as an input parameter for the bulk import API, or is it only a read-only field populated after device discovery?
Is there any supported Catalyst Center API workflow that allows the following mapping to be defined before provisioning?
Serial number A -> stack member 1
Serial number B -> stack member 2
Has anyone encountered this issue or found a reliable way to control Catalyst 9200L stack member numbering during PnP provisioning?
Thank you.
Bleblas