import com.google.common.base.Optional;
import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import java.util.concurrent.ExecutionException;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps;
+import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback;
import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
import org.opendaylight.yangtools.util.concurrent.MappingCheckedFuture;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
private final NetconfBaseOps netconfOps;
private final RemoteDeviceId id;
- private final FutureCallback<DOMRpcResult> loggingCallback;
public ReadOnlyTx(final NetconfBaseOps netconfOps, final RemoteDeviceId id) {
this.netconfOps = netconfOps;
this.id = id;
-
- // Simple logging callback to log result of read operation
- loggingCallback = new FutureCallback<DOMRpcResult>() {
- @Override
- public void onSuccess(final DOMRpcResult result) {
- if(AbstractWriteTx.isSuccess(result)) {
- LOG.trace("{}: Reading data successful", id);
- } else {
- LOG.warn("{}: Reading data unsuccessful: {}", id, result.getErrors());
- }
-
- }
-
- @Override
- public void onFailure(final Throwable t) {
- LOG.warn("{}: Reading data failed", id, t);
- }
- };
}
private CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> readConfigurationData(
final YangInstanceIdentifier path) {
- final ListenableFuture<Optional<NormalizedNode<?, ?>>> configRunning = netconfOps.getConfigRunningData(loggingCallback, Optional.fromNullable(path));
+ final ListenableFuture<Optional<NormalizedNode<?, ?>>> configRunning = netconfOps.getConfigRunningData(
+ new NetconfRpcFutureCallback("Data read", id), Optional.fromNullable(path));
return MappingCheckedFuture.create(configRunning, ReadFailedException.MAPPER);
}
private CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> readOperationalData(
final YangInstanceIdentifier path) {
- final ListenableFuture<Optional<NormalizedNode<?, ?>>> configCandidate = netconfOps.getData(loggingCallback, Optional.fromNullable(path));
+ final ListenableFuture<Optional<NormalizedNode<?, ?>>> configCandidate = netconfOps.getData(
+ new NetconfRpcFutureCallback("Data read", id), Optional.fromNullable(path));
return MappingCheckedFuture.create(configCandidate, ReadFailedException.MAPPER);
}
package org.opendaylight.netconf.sal.connect.netconf.sal.tx;
-import com.google.common.util.concurrent.FutureCallback;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps;
import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback;
import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
* <li>Running datastore is locked as the first thing and this lock has to succeed</li>
* </ul>
*/
-//TODO replace custom RPCs future callbacks with NetconfRpcFutureCallback
public class WriteCandidateRunningTx extends WriteCandidateTx {
private static final Logger LOG = LoggerFactory.getLogger(WriteCandidateRunningTx.class);
}
private void lockRunning() {
- final FutureCallback<DOMRpcResult> lockRunningCallback = new FutureCallback<DOMRpcResult>() {
- @Override
- public void onSuccess(DOMRpcResult result) {
- if (isSuccess(result)) {
- if (LOG.isTraceEnabled()) {
- LOG.trace("Lock running succesfull");
- }
- } else {
- LOG.warn("{}: lock running invoked unsuccessfully: {}", id, result.getErrors());
- }
- }
-
- @Override
- public void onFailure(Throwable t) {
- LOG.warn("{}: Failed to lock running. Failed to initialize transaction", id, t);
- }
- };
- resultsFutures.add(netOps.lockRunning(lockRunningCallback));
+ resultsFutures.add(netOps.lockRunning(new NetconfRpcFutureCallback("Lock running", id)));
}
/**
import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
-import org.opendaylight.netconf.api.NetconfDocumentedException;
import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps;
import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback;
import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
* <li>Commit and Unlock candidate datastore async</li>
* </ol>
*/
-//TODO replace custom RPCs future callbacks with NetconfRpcFutureCallback
public class WriteCandidateTx extends AbstractWriteTx {
private static final Logger LOG = LoggerFactory.getLogger(WriteCandidateTx.class);
public void onSuccess(DOMRpcResult result) {
if (isSuccess(result)) {
if (LOG.isTraceEnabled()) {
- LOG.trace("Lock candidate succesfull");
+ LOG.trace("Lock candidate successful");
}
} else {
LOG.warn("{}: lock candidate invoked unsuccessfully: {}", id, result.getErrors());
@Override
public void onFailure(Throwable t) {
LOG.warn("Lock candidate operation failed. {}", t);
- NetconfDocumentedException e = new NetconfDocumentedException(id + ": Lock candidate operation failed.", NetconfDocumentedException.ErrorType.application,
- NetconfDocumentedException.ErrorTag.operation_failed, NetconfDocumentedException.ErrorSeverity.warning);
discardChanges();
- throw new RuntimeException(e);
}
};
resultsFutures.add(netOps.lockCandidate(lockCandidateCallback));
final DataContainerChild<?, ?> editStructure,
final Optional<ModifyAction> defaultOperation,
final String operation) {
- FutureCallback<DOMRpcResult> editConfigCallback = new FutureCallback<DOMRpcResult>() {
- @Override
- public void onSuccess(DOMRpcResult result) {
- if (isSuccess(result)) {
- if (LOG.isTraceEnabled()) {
- LOG.trace("Edit candidate succesfull");
- }
- } else {
- LOG.warn("{}: Edit candidate invoked unsuccessfully: {}", id, result.getErrors());
- }
- }
- @Override
- public void onFailure(Throwable t) {
- LOG.warn("Edit candidate operation failed. {}", t);
- }
- };
+ NetconfRpcFutureCallback editConfigCallback = new NetconfRpcFutureCallback("Edit candidate", id);
+
if (defaultOperation.isPresent()) {
resultsFutures.add(netOps.editConfigCandidate(
editConfigCallback, editStructure, defaultOperation.get(), rollbackSupport));
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import org.opendaylight.controller.md.sal.common.api.TransactionStatus;
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps;
import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback;
import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
* <li>Unlock running datastore on tx commit</li>
* </ol>
*/
-//TODO replace custom RPCs future callbacks with NetconfRpcFutureCallback
public class WriteRunningTx extends AbstractWriteTx {
private static final Logger LOG = LoggerFactory.getLogger(WriteRunningTx.class);
}
private void lock() {
- final FutureCallback<DOMRpcResult> lockCallback = new FutureCallback<DOMRpcResult>() {
- @Override
- public void onSuccess(DOMRpcResult result) {
- if (isSuccess(result)) {
- if (LOG.isTraceEnabled()) {
- LOG.trace("Lock running succesfull");
- }
- } else {
- LOG.warn("{}: lock running invoked unsuccessfully: {}", id, result.getErrors());
- }
- }
-
- @Override
- public void onFailure(Throwable t) {
- LOG.warn("{}: Lock running operation failed. {}", id, t);
- }
- };
- resultsFutures.add(netOps.lockRunning(lockCallback));
+ resultsFutures.add(netOps.lockRunning(new NetconfRpcFutureCallback("Lock running", id)));
}
@Override
final DataContainerChild<?, ?> editStructure,
final Optional<ModifyAction> defaultOperation,
final String operation) {
- FutureCallback<DOMRpcResult> editConfigCallback = new FutureCallback<DOMRpcResult>() {
- @Override
- public void onSuccess(DOMRpcResult result) {
- if (isSuccess(result)) {
- if (LOG.isTraceEnabled()) {
- LOG.trace("Edit running succesfull");
- }
- } else {
- LOG.warn("{}: Edit running invoked unsuccessfully: {}", id, result.getErrors());
- }
- }
- @Override
- public void onFailure(Throwable t) {
- LOG.warn("{}: Error {} data to (running){}, data: {}", id, operation, path, data.orNull(), t);
- }
- };
+ NetconfRpcFutureCallback editConfigCallback = new NetconfRpcFutureCallback("Edit running", id);
+
if (defaultOperation.isPresent()) {
resultsFutures.add(
netOps.editConfigRunning(editConfigCallback, editStructure, defaultOperation.get(), rollbackSupport));