...
Customers would likely first notice that most RESTCONF calls to the device fail. Some calls may continue to work. The calls that fail will fail consistently. Below is an example of a 404 "Not Found" response when making a RESTCONF call: > curl -k -v --location --request GET 'HTTPS://XX.XX.XX.XX/RESTCONF/DATA/CISCO-IOS-XE-NATIVE:NATIVE/HOSTNAME' --header 'Authorization: Basic ' Note: Unnecessary use of -X or --request, GET is already inferred. * Trying xx.xx.xx.xx:443... * Connected to xx.xx.xx.xx (xx.xx.xx.xx) port 443 (#0) * Mark bundle as not supporting multiuse < HTTP/1.1 404 Not Found <<<------------------------------------------- < Server: openresty < Date: Wed, 18 Jan 2023 21:31:42 GMT < Content-Type: text/html Users may see the following syslogs explicitly calling out the degraded state of Data Model Interface (DMI) authd: %DMI-3-DMI_DEGRADED: R0/0: dmiauthd: The dmi infra is operating in degraded mode. Most synchronizations from IOS to NETCONF datastore will not be performed %DMI-3-SYNC_ERR: R0/0: dmiauthd: An attempt to synchronize the running configuration to the NETCONF running data store has failed: Users can check if the syncfd process is in an "Active (degraded)" using the show platform software yang process state command. Switch# show platform software yang process state Confd Status: Started Process Status State ---------------------------------------------------------- nesd Running Active syncfd Running Active (degraded) <<<---------- ncsshd Not Running Not Applicable dmiauthd Running Active nginx Running Not Applicable ndbmand Running Active pubd Running Active gnmib Not Running Not Applicable
RESTCONF configured along with the presence of a logging discriminator on either console or monitor: restconf logging console discriminator logging monitor discriminator
Remove the discriminator from console and monitor logging: logging console logging monitor
The issue here is with the "logging" yang model’s handling of the "logging discriminator" config rather than an issue with RESTCONF itself. In addition to the DMI syslogs indicating the degraded state, users can check the tracelogs on the device using the following command (or similar for non-switch platforms). The "Failed to apply a transaction" log calls out the failure of a "must" constraint under the logging discriminator. As a result, DMI enters a degraded state, which leads to issues with subsequent RESTCONF calls. Switch# show platform software trace message dmiauthd switch active r0 [errmsg] [19717]: (ERR): %DMI-3-DMI_DEGRADED: R0/0: dmiauthd: The dmi infra is operating in degraded mode. Most synchronizations from IOS to NETCONF datastore will not be performed [dmid] [19717]: (note): [dmid_thread] (dmid-msg): received failed storeconfig response(1) from sync thread [dmid] [19717]: (note): [dmid_thread] (dmid-msg): dmid received storeconfig response from sync thread [dmid] [19717]: (note): [sync_thread] Sending message of type 'Store Configuration Response' to the main thread, status = 1 [errmsg] [19717]: (ERR): %DMI-3-SYNC_ERR: R0/0: dmiauthd: An attempt to synchronize the running configuration to the NETCONF running data store has failed: [dmid] [19717]: (note): [sync_thread] Sync storeconfig: Global lock on datastore released [dmid-perf] [19717]: (note): [sync_thread] [f-sync, thandle(132), end] Unlocking CDB [dmid-perf] [19717]: (note): [sync_thread] [f-sync, thandle(132), start] Unlocking CDB [dmid-perf] [19717]: (note): [sync_thread] [f-sync, thandle(132), end] Sync transaction [dmid-perf] [19717]: (note): [sync_thread] [f-sync, thandle(132), end] Applying sync transaction [dmid] [19717]: (ERR): [sync_thread] [f-sync thandle(132)] Failed to apply a transaction via DMI MAAPI: Unsatisfied must constraint, /ios:native/logging/console-config/common-config/console/discriminator/name (value ""): discriminator must be created at first, deleted last [libconfd] [19717]: (ERR):DEBUG Unsatisfied must constraint - /ios:native/logging/console-config/common-config/console/discriminator/name (value ""): discriminator must be created at first, deleted last [confd-devel] [19717]: (info): confd Getting delta diff, no alt-name: true