+ return new LibraryModulesSchemas(Collections.emptyMap());
+ }
+ }
+
+
+ public static LibraryModulesSchemas create(final NetconfDeviceRpc deviceRpc, final RemoteDeviceId deviceId) {
+ final DOMRpcResult moduleListNodeResult;
+ try {
+ moduleListNodeResult =
+ deviceRpc.invokeRpc(toPath(NETCONF_GET_QNAME), GET_MODULES_STATE_MODULE_LIST_RPC).get();
+ } catch (final InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new RuntimeException(deviceId + ": Interrupted while waiting for response to "
+ + MODULES_STATE_MODULE_LIST, e);
+ } catch (final ExecutionException e) {
+ LOG.warn("{}: Unable to detect available schemas, get to {} failed", deviceId,
+ MODULES_STATE_MODULE_LIST, e);
+ return new LibraryModulesSchemas(Collections.emptyMap());
+ }
+
+ if (moduleListNodeResult.getErrors().isEmpty() == false) {
+ LOG.warn("{}: Unable to detect available schemas, get to {} failed, {}",
+ deviceId, MODULES_STATE_MODULE_LIST, moduleListNodeResult.getErrors());
+ return new LibraryModulesSchemas(Collections.emptyMap());
+ }
+
+
+ final Optional<? extends NormalizedNode<?, ?>> modulesStateNode =
+ findModulesStateNode(moduleListNodeResult.getResult());
+ if (modulesStateNode.isPresent()) {
+ Preconditions.checkState(modulesStateNode.get() instanceof ContainerNode,
+ "Expecting container containing schemas, but was %s", modulesStateNode.get());
+ return create((ContainerNode) modulesStateNode.get());