X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2FBrokerFacade.java;h=b8d9561a26069aab4fbfc94bd134f729b4dd4a23;hb=ed6eb82da5d9712d15847e07d2836f449dbece93;hp=6a3adcccd6576b8f7ac766eb521264b05a04f6b8;hpb=a62b23201606691c83c800888bbc36617b604202;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java index 6a3adcccd6..b8d9561a26 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/BrokerFacade.java @@ -9,7 +9,6 @@ package org.opendaylight.controller.sal.restconf.impl; import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION; import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL; - import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.CheckedFuture; @@ -87,7 +86,9 @@ public class BrokerFacade { if (domDataBrokerService.isPresent()) { return readDataViaTransaction(domDataBrokerService.get().newReadOnlyTransaction(), CONFIGURATION, path); } - throw new RestconfDocumentedException("DOM data broker service isn't available for mount point."); + final String errMsg = "DOM data broker service isn't available for mount point " + path; + LOG.warn(errMsg); + throw new RestconfDocumentedException(errMsg); } // READ operational @@ -101,7 +102,9 @@ public class BrokerFacade { if (domDataBrokerService.isPresent()) { return readDataViaTransaction(domDataBrokerService.get().newReadOnlyTransaction(), OPERATIONAL, path); } - throw new RestconfDocumentedException("DOM data broker service isn't available for mount point."); + final String errMsg = "DOM data broker service isn't available for mount point " + path; + LOG.warn(errMsg); + throw new RestconfDocumentedException(errMsg); } // PUT configuration @@ -118,7 +121,9 @@ public class BrokerFacade { return putDataViaTransaction(domDataBrokerService.get().newReadWriteTransaction(), CONFIGURATION, path, payload, mountPoint.getSchemaContext()); } - throw new RestconfDocumentedException("DOM data broker service isn't available for mount point."); + final String errMsg = "DOM data broker service isn't available for mount point " + path; + LOG.warn(errMsg); + throw new RestconfDocumentedException(errMsg); } // POST configuration @@ -135,7 +140,9 @@ public class BrokerFacade { return postDataViaTransaction(domDataBrokerService.get().newReadWriteTransaction(), CONFIGURATION, path, payload, mountPoint.getSchemaContext()); } - throw new RestconfDocumentedException("DOM data broker service isn't available for mount point."); + final String errMsg = "DOM data broker service isn't available for mount point " + path; + LOG.warn(errMsg); + throw new RestconfDocumentedException(errMsg); } // DELETE configuration @@ -151,7 +158,9 @@ public class BrokerFacade { if (domDataBrokerService.isPresent()) { return deleteDataViaTransaction(domDataBrokerService.get().newWriteOnlyTransaction(), CONFIGURATION, path); } - throw new RestconfDocumentedException("DOM data broker service isn't available for mount point."); + final String errMsg = "DOM data broker service isn't available for mount point " + path; + LOG.warn(errMsg); + throw new RestconfDocumentedException(errMsg); } // RPC @@ -188,6 +197,7 @@ public class BrokerFacade { LOG.debug("Reading result data from transaction."); optional = listenableFuture.get(); } catch (InterruptedException | ExecutionException e) { + LOG.warn("Exception by reading " + datastore.name() + " via Restconf: {}", path, e); throw new RestconfDocumentedException("Problem to get data from transaction.", e.getCause()); } @@ -202,26 +212,19 @@ public class BrokerFacade { private CheckedFuture postDataViaTransaction( final DOMDataReadWriteTransaction rWTransaction, final LogicalDatastoreType datastore, - final YangInstanceIdentifier parentPath, final NormalizedNode payload, final SchemaContext schemaContext) { + final YangInstanceIdentifier path, final NormalizedNode payload, final SchemaContext schemaContext) { // FIXME: This is doing correct post for container and list children // not sure if this will work for choice case if(payload instanceof MapNode) { - final YangInstanceIdentifier mapPath = parentPath.node(payload.getIdentifier()); - final NormalizedNode emptySubtree = ImmutableNodes.fromInstanceId(schemaContext, mapPath); + final NormalizedNode emptySubtree = ImmutableNodes.fromInstanceId(schemaContext, path); rWTransaction.merge(datastore, YangInstanceIdentifier.create(emptySubtree.getIdentifier()), emptySubtree); - ensureParentsByMerge(datastore, mapPath, rWTransaction, schemaContext); + ensureParentsByMerge(datastore, path, rWTransaction, schemaContext); for(final MapEntryNode child : ((MapNode) payload).getValue()) { - final YangInstanceIdentifier childPath = mapPath.node(child.getIdentifier()); + final YangInstanceIdentifier childPath = path.node(child.getIdentifier()); checkItemDoesNotExists(rWTransaction, datastore, childPath); rWTransaction.put(datastore, childPath, child); } } else { - final YangInstanceIdentifier path; - if(payload instanceof MapEntryNode) { - path = parentPath.node(payload.getNodeType()).node(payload.getIdentifier()); - } else { - path = parentPath.node(payload.getIdentifier()); - } checkItemDoesNotExists(rWTransaction,datastore, path); ensureParentsByMerge(datastore, path, rWTransaction, schemaContext); rWTransaction.put(datastore, path, payload); @@ -234,13 +237,13 @@ public class BrokerFacade { try { if (futureDatastoreData.get()) { final String errMsg = "Post Configuration via Restconf was not executed because data already exists"; - LOG.debug(errMsg + ":{}", path); + LOG.trace(errMsg + ":{}", path); rWTransaction.cancel(); throw new RestconfDocumentedException("Data already exists for path: " + path, ErrorType.PROTOCOL, ErrorTag.DATA_EXISTS); } } catch (InterruptedException | ExecutionException e) { - LOG.trace("It wasn't possible to get data loaded from datastore at path " + path); + LOG.warn("It wasn't possible to get data loaded from datastore at path " + path, e); } }