From 53460d7e6a49d1d1e37506d0e9133df7852af834 Mon Sep 17 00:00:00 2001 From: Dominik Vrbovsky Date: Wed, 16 Feb 2022 08:32:28 +0100 Subject: [PATCH] Introduce remaining cli commands for clustering-test-app There are some RPCs that were not reworked to Karaf CLI commands during first round of introducing these commands, so we need to introduce them as well and have complete set of commands. JIRA: CONTROLLER-1995 Change-Id: Ifbb67e26fb4ede4a589dd07999b52e3639e5c794 Signed-off-by: Dominik Vrbovsky Signed-off-by: Robert Varga --- .../clustering-test-app/karaf-cli/pom.xml | 4 ++ .../it/karaf/cli/AbstractDOMRpcAction.java | 30 +++++++++++++ .../lowlevel/tgt/GetConstantCommand.java | 36 +++++++++++++++ .../tgt/GetContextedConstantCommand.java | 44 +++++++++++++++++++ .../tgt/GetSingletonConstantCommand.java | 37 ++++++++++++++++ 5 files changed, 151 insertions(+) create mode 100644 opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/AbstractDOMRpcAction.java create mode 100644 opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetConstantCommand.java create mode 100644 opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetContextedConstantCommand.java create mode 100644 opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetSingletonConstantCommand.java diff --git a/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/pom.xml b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/pom.xml index 78df5c088e..9218ecc664 100644 --- a/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/pom.xml +++ b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/pom.xml @@ -35,6 +35,10 @@ org.opendaylight.mdsal mdsal-binding-dom-codec-api + + org.opendaylight.mdsal + mdsal-dom-api + org.opendaylight.controller.samples clustering-it-model diff --git a/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/AbstractDOMRpcAction.java b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/AbstractDOMRpcAction.java new file mode 100644 index 0000000000..ab2269eb5b --- /dev/null +++ b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/AbstractDOMRpcAction.java @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2022 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.clustering.it.karaf.cli; + +import com.google.common.util.concurrent.ListenableFuture; +import java.util.concurrent.ExecutionException; +import org.apache.karaf.shell.api.action.Action; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; + +public abstract class AbstractDOMRpcAction implements Action { + @Override + @SuppressWarnings("checkstyle:RegexpSinglelineJava") + public final Object execute() throws InterruptedException, ExecutionException { + final DOMRpcResult result = invokeRpc().get(); + if (!result.getErrors().isEmpty()) { + // FIXME: is there a better way to report errors? + System.out.println("Invocation failed: " + result.getErrors()); + return null; + } else { + return result.getResult().prettyTree().get(); + } + } + + protected abstract ListenableFuture invokeRpc(); +} diff --git a/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetConstantCommand.java b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetConstantCommand.java new file mode 100644 index 0000000000..86866db9e3 --- /dev/null +++ b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetConstantCommand.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2022 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.clustering.it.karaf.cli.odl.mdsal.lowlevel.tgt; + +import com.google.common.util.concurrent.ListenableFuture; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.lifecycle.Reference; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.opendaylight.clustering.it.karaf.cli.AbstractDOMRpcAction; +import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.target.rev170215.GetConstantInput; +import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.target.rev170215.GetConstantInputBuilder; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; + +@Service +@Command(scope = "test-app", name = "get-constant", description = "Run an get-constant test") +public class GetConstantCommand extends AbstractDOMRpcAction { + @Reference + private DOMRpcService rpcService; + @Reference + private BindingNormalizedNodeSerializer serializer; + + @Override + protected ListenableFuture invokeRpc() { + final NormalizedNode input = serializer.toNormalizedNodeRpcData(new GetConstantInputBuilder().build()); + return rpcService.invokeRpc(QName.create(GetConstantInput.QNAME, "get-constant"), input); + } +} diff --git a/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetContextedConstantCommand.java b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetContextedConstantCommand.java new file mode 100644 index 0000000000..75ebec4f63 --- /dev/null +++ b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetContextedConstantCommand.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2022 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.clustering.it.karaf.cli.odl.mdsal.lowlevel.tgt; + +import com.google.common.util.concurrent.ListenableFuture; +import org.apache.karaf.shell.api.action.Argument; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.lifecycle.Reference; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.opendaylight.clustering.it.karaf.cli.AbstractDOMRpcAction; +import org.opendaylight.clustering.it.karaf.cli.InstanceIdentifierSupport; +import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.target.rev170215.GetContextedConstantInput; +import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.target.rev170215.GetContextedConstantInputBuilder; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; + +@Service +@Command(scope = "test-app", name = "get-contexted-constant", description = "Run an get-contexted-constant test") +public class GetContextedConstantCommand extends AbstractDOMRpcAction { + @Reference + private DOMRpcService rpcService; + @Reference + private BindingNormalizedNodeSerializer serializer; + @Reference + private InstanceIdentifierSupport iidSupport; + @Argument(index = 0, name = "context", required = true) + private String context; + + @Override + protected ListenableFuture invokeRpc() { + final NormalizedNode inputNode = serializer.toNormalizedNodeRpcData(new GetContextedConstantInputBuilder() + .setContext(iidSupport.parseArgument(context)) + .build()); + return rpcService.invokeRpc(QName.create(GetContextedConstantInput.QNAME, "get-contexted-constant"), inputNode); + } +} diff --git a/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetSingletonConstantCommand.java b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetSingletonConstantCommand.java new file mode 100644 index 0000000000..466f2e3795 --- /dev/null +++ b/opendaylight/md-sal/samples/clustering-test-app/karaf-cli/src/main/java/org/opendaylight/clustering/it/karaf/cli/odl/mdsal/lowlevel/tgt/GetSingletonConstantCommand.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2022 PANTHEON.tech, s.r.o. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.clustering.it.karaf.cli.odl.mdsal.lowlevel.tgt; + +import com.google.common.util.concurrent.ListenableFuture; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.lifecycle.Reference; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.opendaylight.clustering.it.karaf.cli.AbstractDOMRpcAction; +import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.target.rev170215.GetSingletonConstantInput; +import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.target.rev170215.GetSingletonConstantInputBuilder; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; + +@Service +@Command(scope = "test-app", name = "get-singleton-constant", description = "Run an get-singleton-constant test") +public class GetSingletonConstantCommand extends AbstractDOMRpcAction { + @Reference + private DOMRpcService rpcService; + @Reference + private BindingNormalizedNodeSerializer serializer; + + @Override + protected ListenableFuture invokeRpc() { + final NormalizedNode inputNode = + serializer.toNormalizedNodeRpcData(new GetSingletonConstantInputBuilder().build()); + return rpcService.invokeRpc(QName.create(GetSingletonConstantInput.QNAME, "get-singleton-constant"), inputNode); + } +} -- 2.36.6