use of org.opendaylight.netconf.topology.singleton.messages.netconf.LockRequest in project netconf by opendaylight.
the class NetconfDataTreeServiceActor method onReceive.
@Override
public void onReceive(final Object message) {
if (message instanceof GetWithFieldsRequest) {
final GetWithFieldsRequest getRequest = (GetWithFieldsRequest) message;
final YangInstanceIdentifier path = getRequest.getPath();
final ListenableFuture<Optional<NormalizedNode>> future = netconfService.get(getRequest.getPath(), getRequest.getFields());
context().stop(self());
sendResult(future, path, sender(), self());
} else if (message instanceof GetRequest) {
final GetRequest getRequest = (GetRequest) message;
final YangInstanceIdentifier path = getRequest.getPath();
final ListenableFuture<Optional<NormalizedNode>> future = netconfService.get(path);
context().stop(self());
sendResult(future, path, sender(), self());
} else if (message instanceof GetConfigWithFieldsRequest) {
final GetConfigWithFieldsRequest getConfigRequest = (GetConfigWithFieldsRequest) message;
final YangInstanceIdentifier path = getConfigRequest.getPath();
final ListenableFuture<Optional<NormalizedNode>> future = netconfService.getConfig(path, getConfigRequest.getFields());
context().stop(self());
sendResult(future, path, sender(), self());
} else if (message instanceof GetConfigRequest) {
final GetConfigRequest getConfigRequest = (GetConfigRequest) message;
final YangInstanceIdentifier path = getConfigRequest.getPath();
final ListenableFuture<Optional<NormalizedNode>> future = netconfService.getConfig(path);
context().stop(self());
sendResult(future, path, sender(), self());
} else if (message instanceof LockRequest) {
invokeRpcCall(netconfService::lock, sender(), self());
} else if (message instanceof MergeEditConfigRequest) {
final MergeEditConfigRequest request = (MergeEditConfigRequest) message;
netconfService.merge(request.getStore(), request.getNormalizedNodeMessage().getIdentifier(), request.getNormalizedNodeMessage().getNode(), Optional.ofNullable(request.getDefaultOperation()));
} else if (message instanceof ReplaceEditConfigRequest) {
final ReplaceEditConfigRequest request = (ReplaceEditConfigRequest) message;
netconfService.replace(request.getStore(), request.getNormalizedNodeMessage().getIdentifier(), request.getNormalizedNodeMessage().getNode(), Optional.ofNullable(request.getDefaultOperation()));
} else if (message instanceof CreateEditConfigRequest) {
final CreateEditConfigRequest request = (CreateEditConfigRequest) message;
netconfService.create(request.getStore(), request.getNormalizedNodeMessage().getIdentifier(), request.getNormalizedNodeMessage().getNode(), Optional.ofNullable(request.getDefaultOperation()));
} else if (message instanceof DeleteEditConfigRequest) {
final DeleteEditConfigRequest request = (DeleteEditConfigRequest) message;
netconfService.delete(request.getStore(), request.getPath());
} else if (message instanceof RemoveEditConfigRequest) {
final RemoveEditConfigRequest request = (RemoveEditConfigRequest) message;
netconfService.remove(request.getStore(), request.getPath());
} else if (message instanceof CommitRequest) {
submit(sender(), self());
} else if (message instanceof DiscardChangesRequest) {
invokeRpcCall(netconfService::discardChanges, sender(), self());
} else if (message instanceof UnlockRequest) {
context().stop(self());
invokeRpcCall(netconfService::unlock, sender(), self());
} else if (message instanceof ReceiveTimeout) {
LOG.warn("Haven't received any message for {} seconds, cancelling transaction and stopping actor", idleTimeout);
invokeRpcCall(netconfService::discardChanges, sender(), self());
invokeRpcCall(netconfService::unlock, sender(), self());
context().stop(self());
} else {
unhandled(message);
}
}
use of org.opendaylight.netconf.topology.singleton.messages.netconf.LockRequest in project netconf by opendaylight.
the class NetconfDataTreeServiceActorTest method testLock.
@Test
public void testLock() {
final ListenableFuture<? extends DOMRpcResult> future = Futures.immediateFuture(new DefaultDOMRpcResult());
doReturn(future).when(netconfService).lock();
actorRef.tell(new LockRequest(), probe.ref());
verify(netconfService).lock();
}
use of org.opendaylight.netconf.topology.singleton.messages.netconf.LockRequest in project netconf by opendaylight.
the class ActorProxyNetconfServiceFacade method lock.
@Override
public ListenableFuture<DOMRpcResult> lock() {
LOG.debug("{}: Lock via actor {}", id, masterActor);
final SettableFuture<DOMRpcResult> lockResult = SettableFuture.create();
final Future<Object> future = Patterns.ask(masterActor, new LockRequest(), askTimeout);
future.onComplete(new OnComplete<>() {
@Override
public void onComplete(final Throwable failure, final Object response) {
if (failure != null) {
lockResult.setException(failure);
} else if (response instanceof InvokeRpcMessageReply) {
lockResult.set(mapInvokeRpcMessageReplyToDOMRpcResult((InvokeRpcMessageReply) response));
} else {
lockResult.setException(new ClusteringRpcException("Lock operation returned unexpected type"));
LOG.error("{}: Lock via actor {} returned unexpected type", id, masterActor);
}
}
}, executionContext);
return lockResult;
}
Aggregations