Eliminate blueprint for drop-test-karaf commands 29/110729/1
authorRuslan Kashapov <ruslan.kashapov@pantheon.tech>
Thu, 14 Mar 2024 07:42:07 +0000 (09:42 +0200)
committerRuslan Kashapov <ruslan.kashapov@pantheon.tech>
Thu, 14 Mar 2024 07:42:32 +0000 (09:42 +0200)
Command implementations updated, this resolves issue with
referenced declarative services being null on command
execution at CSIT

JIRA: OPNFLWPLUG-1127
Signed-off-by: Ruslan Kashapov <ruslan.kashapov@pantheon.tech>
Change-Id: I820bb43927bcfd8530b6d38712f27d64c6f25fda

drop-test-karaf/pom.xml
drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/ClearDropStatsCommandProvider.java
drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsCommandProvider.java
drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsCompleter.java
drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/DropAllPacketsRpcCommandProvider.java
drop-test-karaf/src/main/java/org/opendaylight/openflowplugin/droptestkaraf/ShowDropStatsCommandProvider.java
drop-test-karaf/src/main/resources/OSGI-INF/blueprint/commands.xml [deleted file]

index b85c450abc202eb5bd2f26eaa213766f8aa8b08c..51a0fa8885a42f422fcb00200d42bc402184abff 100644 (file)
         <connection>scm:git:ssh://git.opendaylight.org:29418/openflowplugin.git</connection>
         <developerConnection>scm:git:ssh://git.opendaylight.org:29418/openflowplugin.git</developerConnection>
     </scm>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.karaf.tooling</groupId>
+                <artifactId>karaf-services-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>
index 6c785ba1e3001ecd9573ec5498b3078ffda3f975..91b68d2b340b2bff302a178448435738255706f0 100644 (file)
@@ -7,21 +7,26 @@
  */
 package org.opendaylight.openflowplugin.droptestkaraf;
 
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.lifecycle.Reference;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.console.Session;
 import org.opendaylight.openflowplugin.testcommon.DropTestCommiter;
 import org.opendaylight.openflowplugin.testcommon.DropTestRpcSender;
 
 @Command(scope = "drop-test", name = "clearDropStats", description = "Clear drop statistics.")
-public class ClearDropStatsCommandProvider extends OsgiCommandSupport {
+@Service
+public class ClearDropStatsCommandProvider implements Action {
     @Reference
     DropTestRpcSender rpcProvider;
     @Reference
     DropTestCommiter dsProvider;
+    @Reference
+    Session session;
 
     @Override
-    protected Object doExecute() {
+    public Object execute() {
         final var out = session.getConsole();
         out.println("Clearing drop statistics... ");
         rpcProvider.clearStats();
index fd9d1e31dae2e7007d4b41445da31e5380a9af1f..ad0bc044aaa0e7acb1e5cc5a2b85f7b346a9fb85 100644 (file)
@@ -7,25 +7,32 @@
  */
 package org.opendaylight.openflowplugin.droptestkaraf;
 
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
 import org.apache.karaf.shell.api.action.lifecycle.Reference;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.console.Session;
 import org.opendaylight.openflowplugin.testcommon.DropTestCommiter;
 
 @Command(scope = "drop-test", name = "dropAllPackets",
          description = "drop packet responder involving dataStore and FRM")
-public class DropAllPacketsCommandProvider extends OsgiCommandSupport {
+@Service
+public class DropAllPacketsCommandProvider implements Action {
     @Reference
     DropTestCommiter provider;
+    @Reference
+    Session session;
 
     @Argument(index = 0, name = "on-off",
             description = "target state of drop responder",
             required = true, multiValued = false)
+    @Completion(DropAllPacketsCompleter.class)
     String targetStateArg;
 
     @Override
-    protected Object doExecute() {
+    public Object execute() {
         final var out = session.getConsole();
 
         if ("on".equalsIgnoreCase(targetStateArg)) {
index c3a026c12778766ba265d3b579a1a3343698e839..d11d84c09d98d022ae63723a3470adc7402ab98d 100644 (file)
@@ -8,19 +8,23 @@
 package org.opendaylight.openflowplugin.droptestkaraf;
 
 import java.util.List;
-import org.apache.karaf.shell.console.Completer;
-import org.apache.karaf.shell.console.completer.StringsCompleter;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.console.CommandLine;
+import org.apache.karaf.shell.api.console.Completer;
+import org.apache.karaf.shell.api.console.Session;
+import org.apache.karaf.shell.support.completers.StringsCompleter;
 
 /**
  * General dropAllPackets on/off argument completer.
  */
+@Service
 public class DropAllPacketsCompleter implements Completer {
 
     @Override
-    public int complete(String buffer, int cursor, List<String> candidates) {
-        StringsCompleter delegate = new StringsCompleter();
+    public int complete(final Session session, final CommandLine commandLine, final List<String> candidates) {
+        final var delegate = new StringsCompleter();
         delegate.getStrings().add("on");
         delegate.getStrings().add("off");
-        return delegate.complete(buffer, cursor, candidates);
+        return delegate.complete(session, commandLine, candidates);
     }
 }
index 997878fb69db7d50be4b7363853443d6c21a4292..bc9b9e32fb26f8ba152d84e5ece7c5d5d3bbffcc 100644 (file)
@@ -7,27 +7,33 @@
  */
 package org.opendaylight.openflowplugin.droptestkaraf;
 
-import java.io.PrintStream;
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.Argument;
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Completion;
 import org.apache.karaf.shell.api.action.lifecycle.Reference;
-import org.apache.karaf.shell.commands.Argument;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.console.Session;
 import org.opendaylight.openflowplugin.testcommon.DropTestRpcSender;
 
 @Command(scope = "drop-test", name = "dropAllPacketsRpc",
          description = "drop packet responder involving SalFlowService")
-public class DropAllPacketsRpcCommandProvider extends OsgiCommandSupport {
+@Service
+public class DropAllPacketsRpcCommandProvider implements Action {
     @Reference
     DropTestRpcSender provider;
+    @Reference
+    Session session;
 
     @Argument(index = 0, name = "on-off",
             description = "target state of drop responder",
             required = true, multiValued = false)
+    @Completion(DropAllPacketsCompleter.class)
     String targetStateArg;
 
     @Override
-    protected Object doExecute() {
-        PrintStream out = session.getConsole();
+    public Object execute() {
+        final var out = session.getConsole();
         if ("on".equalsIgnoreCase(targetStateArg)) {
             if (provider.start()) {
                 out.println("DropAllFlows transitions to on");
index 54abddfb5d42785f7aa19ce34f14aea07f1eaf01..95b5b9af9f715d7129f930a33151f43fc93d2325 100644 (file)
@@ -7,22 +7,27 @@
  */
 package org.opendaylight.openflowplugin.droptestkaraf;
 
+import org.apache.karaf.shell.api.action.Action;
+import org.apache.karaf.shell.api.action.Command;
 import org.apache.karaf.shell.api.action.lifecycle.Reference;
-import org.apache.karaf.shell.commands.Command;
-import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.apache.karaf.shell.api.console.Session;
 import org.opendaylight.openflowplugin.testcommon.DropTestCommiter;
 import org.opendaylight.openflowplugin.testcommon.DropTestRpcSender;
 
 @Command(scope = "drop-test", name = "showDropStats", description = "Show drop statistics.")
-public class ShowDropStatsCommandProvider extends OsgiCommandSupport {
+@Service
+public class ShowDropStatsCommandProvider implements Action {
     @Reference
     DropTestRpcSender rpcProvider;
     @Reference
     DropTestCommiter dsProvider;
+    @Reference
+    Session session;
 
     @Override
-    protected Object doExecute() {
-        var out = session.getConsole();
+    public Object execute() {
+        final var out = session.getConsole();
         out.format("RPC Test Statistics: %s%n", rpcProvider.getStats().toString());
         out.format("FRM Test Statistics: %s%n", dsProvider.getStats().toString());
         return null;
diff --git a/drop-test-karaf/src/main/resources/OSGI-INF/blueprint/commands.xml b/drop-test-karaf/src/main/resources/OSGI-INF/blueprint/commands.xml
deleted file mode 100644 (file)
index 4bb0285..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-
-    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.0.0">
-        <command name="drop-test/dropAllPackets">
-            <action class="org.opendaylight.openflowplugin.droptestkaraf.DropAllPacketsCommandProvider"/>
-             <completers>
-                <ref component-id="onOffCompleter"/>
-                <null/>
-            </completers>
-        </command>
-        <command name="drop-test/dropAllPacketsRpc">
-            <action class="org.opendaylight.openflowplugin.droptestkaraf.DropAllPacketsRpcCommandProvider"/>
-             <completers>
-                <ref component-id="onOffCompleter"/>
-                <null/>
-            </completers>
-        </command>
-        <command name="drop-test/showDropStats">
-            <action class="org.opendaylight.openflowplugin.droptestkaraf.ShowDropStatsCommandProvider"/>
-        </command>
-        <command name="drop-test/clearDropStats">
-            <action class="org.opendaylight.openflowplugin.droptestkaraf.ClearDropStatsCommandProvider"/>
-        </command>
-    </command-bundle>
-
-    <bean id="onOffCompleter" class="org.opendaylight.openflowplugin.droptestkaraf.DropAllPacketsCompleter"/>
-
-</blueprint>
\ No newline at end of file