Cisco ACI discovery failure with Error : "Exception during discovery : Controller Failed to create block for cisco-aci"
Smarts 10.1.X, 24.3.X
Basically, as a first step of discovery, Cisco ACI Controller (APIC) is discovered through the ICMP discovery. On the discovery of APIC as a Host in Smart Assurance IP Domain Manager, it communicates with the DCF controller, which provisions a discovery collector. The discovery collector runs REST APIs, which are required to create a topology representation in the Smart Assurance IP domain manager.
If there are no collectors provisioned to discover the hosts, one would expect the reported error message.
Smarts IP Manager Debug Logs, may record the following messages during discovery
[<DATE & TIME>] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG DEBUG : [Thread-40 ACIControllerUtil]:Creating Collector instance for ACI
[<DATE & TIME>] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG DEBUG : [Thread-40 RestQueryDispatcher ]:HttpURLConnection reqUrl HTTPS://<DCC API>:<PORT>/dcc/v1/catalog/blocks/cisco-aci/provision method POST body **
[<DATE & TIME>] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG DEBUG : [Thread-40 RestQueryDispatcher ]: headerKey Authorization value Basic <ENCRYPTED AUTH VALUE>
[<DATE & TIME>] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG DEBUG : [Thread-40 RestQueryDispatcher ]: headerKey Content-Type value application/json
[<DATE & TIME>] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG DEBUG : [Thread-40 RestQueryDispatcher ]: HttpURLConnection sun.net.www.protocol.https.DelegateHttpsURLConnection:https://<DCC API>:<PORT>/dcc/v1/catalog/blocks/cisco-aci/provision
[<DATE & TIME>] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG DEBUG : [Thread-40 RestQueryDispatcher ]:SendRequest sun.net.www.protocol.https.DelegateHttpsURLConnection:https://<DCC API>:<PORT>/dcc/v1/catalog/blocks/cisco-aci/provision
[<DATE & TIME>]] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG ERR : [Thread-40 RestQueryDispatcher ]: SendRequest code 0 responseHeader null errorString null body null
[<DATE & TIME>] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG ERR : [Thread-40 RestQueryDispatcher ]:Exception Type:java.net.ConnectException Connection refused (Connection refused)
java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
java.base/java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
java.base/java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source)
java.base/java.net.SocksSocketImpl.connect(Unknown Source)
java.base/java.net.Socket.connect(Unknown Source)
java.base/sun.security.ssl.SSLSocketImpl.connect(Unknown Source)
java.base/sun.net.NetworkClient.doConnect(Unknown Source)
java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)
java.base/sun.net.www.http.HttpClient.openServer(Unknown Source)
java.base/sun.net.www.protocol.https.HttpsClient.<init>(Unknown Source)
java.base/sun.net.www.protocol.https.HttpsClient.New(Unknown Source)
java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(Unknown Source)
java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(Unknown Source)
java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
java.base/java.net.HttpURLConnection.getResponseCode(Unknown Source)
java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
com.emc.octo.sas.common.RestQueryDispatcher.getResponse(RestQueryDispatcher.java:75)
com.emc.octo.sas.common.collection.controller.DCCRestClient.createBlock(DCCRestClient.java:84)
com.emc.octo.sas.stream.discovery.cisco.aci.ACIControllerUtil.createAndStart(ACIControllerUtil.java:93)
com.emc.octo.sas.stream.discovery.cisco.aci.DiscoverCiscoACI.discoverACI(DiscoverCiscoACI.java:113)
[<DATE & TIME>] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG ERR : [Thread-40 DCCRestClient]:Error occurred while sending request [dcc/v1/catalog/blocks/%s/provision] to the DCC API : [Connection refused (Connection refused)]
[<DATE & TIME>] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG ERR : [Thread-40 DiscoverCiscoACI]:Exception occured while discovering the ACI instance : <ACI Device>
[<DATE & TIME>] t@<EPOCH> Discovery #6
DSCV_MSG-*-DSCV_GENERIC-MSG ERR : [Thread-40 DiscoverCiscoACI]:Exception Type:java.lang.Exception Controller Failed to create block for cisco-aci
com.emc.octo.sas.stream.discovery.cisco.aci.ACIControllerUtil.createAndStart(ACIControllerUtil.java:105)
com.emc.octo.sas.stream.discovery.cisco.aci.DiscoverCiscoACI.discoverACI(DiscoverCiscoACI.java:113)
dmctl -s <AMPM Domain> invoke ICF_PersistentDataSet::ACICollectorIDs get >> CollectorIDs.log
curl -u admin:changeme --request GET --url https://<DCC API>:<PORT>/dcc/v1/catalog/blocks/instances
Note: Update the credentials and add --cacert if configured
If there are failures in the above, please review the following
Please engage with Broadcom Support quoting this KB article if the connectivity is fine and yet the errors persist.