Search in sources :

Example 1 with LockRequest

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);
    }
}
Also used : GetWithFieldsRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.GetWithFieldsRequest) MergeEditConfigRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.MergeEditConfigRequest) CommitRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.CommitRequest) Optional(java.util.Optional) ReplaceEditConfigRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.ReplaceEditConfigRequest) CreateEditConfigRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.CreateEditConfigRequest) GetConfigRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.GetConfigRequest) DeleteEditConfigRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.DeleteEditConfigRequest) RemoveEditConfigRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.RemoveEditConfigRequest) ReceiveTimeout(akka.actor.ReceiveTimeout) YangInstanceIdentifier(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier) UnlockRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.UnlockRequest) GetConfigWithFieldsRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.GetConfigWithFieldsRequest) GetRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.GetRequest) ListenableFuture(com.google.common.util.concurrent.ListenableFuture) DiscardChangesRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.DiscardChangesRequest) NormalizedNode(org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode) LockRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.LockRequest)

Example 2 with LockRequest

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();
}
Also used : DefaultDOMRpcResult(org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult) LockRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.LockRequest) Test(org.junit.Test)

Example 3 with LockRequest

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;
}
Also used : DefaultDOMRpcResult(org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult) DOMRpcResult(org.opendaylight.mdsal.dom.api.DOMRpcResult) LockRequest(org.opendaylight.netconf.topology.singleton.messages.netconf.LockRequest) ClusteringRpcException(org.opendaylight.netconf.topology.singleton.impl.utils.ClusteringRpcException) InvokeRpcMessageReply(org.opendaylight.netconf.topology.singleton.messages.rpc.InvokeRpcMessageReply)

Aggregations

LockRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.LockRequest)3 DefaultDOMRpcResult (org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult)2 ReceiveTimeout (akka.actor.ReceiveTimeout)1 ListenableFuture (com.google.common.util.concurrent.ListenableFuture)1 Optional (java.util.Optional)1 Test (org.junit.Test)1 DOMRpcResult (org.opendaylight.mdsal.dom.api.DOMRpcResult)1 ClusteringRpcException (org.opendaylight.netconf.topology.singleton.impl.utils.ClusteringRpcException)1 CommitRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.CommitRequest)1 CreateEditConfigRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.CreateEditConfigRequest)1 DeleteEditConfigRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.DeleteEditConfigRequest)1 DiscardChangesRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.DiscardChangesRequest)1 GetConfigRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.GetConfigRequest)1 GetConfigWithFieldsRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.GetConfigWithFieldsRequest)1 GetRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.GetRequest)1 GetWithFieldsRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.GetWithFieldsRequest)1 MergeEditConfigRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.MergeEditConfigRequest)1 RemoveEditConfigRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.RemoveEditConfigRequest)1 ReplaceEditConfigRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.ReplaceEditConfigRequest)1 UnlockRequest (org.opendaylight.netconf.topology.singleton.messages.netconf.UnlockRequest)1