Add set unset directive 95/10295/2
authorKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Tue, 5 Sep 2017 06:40:41 +0000 (12:10 +0530)
committerKanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
Tue, 5 Sep 2017 06:44:18 +0000 (12:14 +0530)
CLI-2
Change-Id: I70ca564cc2c41508bb209b5fae54104aba13a8be
Signed-off-by: Kanagaraj Manickam k00365106 <kanagaraj.manickam@huawei.com>
README.md
deployment/http/web/occ.html
framework/src/main/java/org/onap/cli/fw/OnapCommandRegistrar.java
main/src/main/java/org/onap/cli/main/OnapCli.java
main/src/main/java/org/onap/cli/main/conf/OnapCliConstants.java
main/src/main/resources/onap-readme.txt
main/src/test/java/org/onap/cli/main/OnapCliMainTest.java

index 29f78d7..07cae08 100644 (file)
--- a/README.md
+++ b/README.md
@@ -16,7 +16,13 @@ Type **onap <command>** from linux console.
 
 To Run in Interactive mode
 --------------------------
-Type **onap** from linux console
+Type **onap** from linux console.
+
+And use the directive set to set the values for following parameters:
+
+1. **onap-host-url** - Onap Micro service bus(MSB) URL or a service URL
+2. **onap-username** - Onap user name
+3. **onap-password** - Onap user password
 
 Set the product version
 ------------------------
@@ -29,6 +35,10 @@ typing **use <product-version>**
 
 Run *onap [-v|--version]* to see the CLI and available product version details
 
+Set the parameter values
+------------------------
+Use the directive 'set' for setting the values for parameters and 'unset' for un-seting the values.
+
 Help
 ----
 *onap [-h|--help]*
index e0a18d9..de2daee 100644 (file)
@@ -1,16 +1,16 @@
-<!doctype html>\r
-<html>\r
-  <head>\r
-    <title>OCC</title>\r
-    <link rel="icon" type="image/png" href="./onap-cli.png">\r
-    <link rel="stylesheet" href="./css/index.css" />\r
-    <link rel="stylesheet" href="./css/xterm.css" />\r
-    <link rel="stylesheet" href="./css/xterm_customize.css" />\r
-  </head>\r
-  <body>\r
-    <div id="terminal"></div>\r
-    <script src="./auth_token.js"></script>\r
-    <script src="./config.js"></script>\r
-    <script src="./js/gotty-bundle.js"></script>\r
-  </body>\r
+<!doctype html>
+<html>
+  <head>
+    <title>OCC</title>
+    <link rel="icon" type="image/png" href="./onap-cli.png">
+    <link rel="stylesheet" href="./css/index.css" />
+    <link rel="stylesheet" href="./css/xterm.css" />
+    <link rel="stylesheet" href="./css/xterm_customize.css" />
+  </head>
+  <body>
+    <div id="terminal"></div>
+    <script src="./auth_token.js"></script>
+    <script src="./config.js"></script>
+    <script src="./js/gotty-bundle.js"></script>
+  </body>
 </html>
\ No newline at end of file
index a58cfd5..424d26c 100644 (file)
@@ -320,7 +320,7 @@ public class OnapCommandRegistrar {
         }
 
         try {
-            return "\n\nOnap sub-commands:\n" + help.print() + (isEnabledProductVersionOnly ? "" : "\n" + this.getVersion());
+            return "\n\nCommands:\n" + help.print() + (isEnabledProductVersionOnly ? "" : "\n" + this.getVersion());
         } catch (OnapCommandException e) {
             throw new OnapCommandHelpFailed(e);
         }
index b52d89d..5292227 100644 (file)
 
 package org.onap.cli.main;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.commons.io.IOUtils;
 import org.onap.cli.fw.OnapCommand;
 import org.onap.cli.fw.OnapCommandRegistrar;
+import org.onap.cli.fw.conf.Constants;
 import org.onap.cli.fw.error.OnapCommandException;
+import org.onap.cli.fw.error.OnapCommandHelpFailed;
 import org.onap.cli.fw.error.OnapCommandWarning;
 import org.onap.cli.fw.input.OnapCommandParameter;
 import org.onap.cli.fw.output.OnapCommandResult;
+import org.onap.cli.fw.output.OnapCommandResultAttribute;
+import org.onap.cli.fw.output.OnapCommandResultAttributeScope;
+import org.onap.cli.fw.output.PrintDirection;
+import org.onap.cli.fw.output.ResultType;
 import org.onap.cli.main.conf.OnapCliConstants;
 import org.onap.cli.main.interactive.StringCompleter;
 import org.onap.cli.main.utils.OnapCliUtils;
@@ -30,11 +43,6 @@ import org.onap.cli.main.utils.OnapCliUtils;
 import jline.TerminalFactory;
 import jline.console.ConsoleReader;
 
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
 /**
  * Onap Command Line Interface (CLI).
  *
@@ -42,6 +50,7 @@ import java.util.List;
 public class OnapCli {
 
     private List<String> args = new ArrayList<>();
+    Map<String, String> paramCache = new HashMap<>();
 
     private int exitCode = -1;
 
@@ -112,6 +121,50 @@ public class OnapCli {
         }
     }
 
+    private String getDirectiveHelp() throws OnapCommandHelpFailed {
+        OnapCommandResult help = new OnapCommandResult();
+        help.setType(ResultType.TABLE);
+        help.setPrintDirection(PrintDirection.LANDSCAPE);
+
+        OnapCommandResultAttribute attr = new OnapCommandResultAttribute();
+        attr.setName(Constants.NAME.toUpperCase());
+        attr.setDescription(Constants.DESCRIPTION);
+        attr.setScope(OnapCommandResultAttributeScope.SHORT);
+        help.getRecords().add(attr);
+
+        OnapCommandResultAttribute attrDesc = new OnapCommandResultAttribute();
+        attrDesc.setName(Constants.DESCRIPTION.toUpperCase());
+        attrDesc.setDescription(Constants.DESCRIPTION);
+        attrDesc.setScope(OnapCommandResultAttributeScope.SHORT);
+        help.getRecords().add(attrDesc);
+
+        attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_CLEAR);
+        attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_CLEAR_MSG);
+
+        attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_EXIT);
+        attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_EXIT_MSG);
+
+        attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_VERSION);
+        attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_VERSION_MSG);
+
+        attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_USE);
+        attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_USE_MSG);
+
+        attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_SET);
+        attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_SET_MSG);
+
+        attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_UNSET);
+        attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_UNSET_MSG);
+
+        attr.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_HELP);
+        attrDesc.getValues().add(OnapCliConstants.PARAM_INTERACTIVE_HELP_MSG);
+
+        try {
+            return "\n\nDirectives:\n" + help.print();
+        } catch (OnapCommandException e) {
+            throw new OnapCommandHelpFailed(e);
+        }
+    }
     /**
      * Handles Interactive Mode.
      */
@@ -122,9 +175,9 @@ public class OnapCli {
                 OnapCommandRegistrar.getRegistrar().setInteractiveMode(true);
                 console = createConsoleReader();
                 String line = null;
+
                 while ((line = console.readLine()) != null) {
-                    if (OnapCliConstants.PARAM_INTERACTIVE_EXIT.equalsIgnoreCase(line)
-                            || OnapCliConstants.PARAM_INTERACTIVE_BYE.equalsIgnoreCase(line)) {
+                    if (OnapCliConstants.PARAM_INTERACTIVE_EXIT.equalsIgnoreCase(line)) {
                         break;
                     } else if (OnapCliConstants.PARAM_INTERACTIVE_CLEAR.equalsIgnoreCase(line)) {
                         console.clearScreen();
@@ -148,17 +201,38 @@ public class OnapCli {
                     } else if (!args.isEmpty() && this.args.get(0).equals(OnapCliConstants.PARAM_INTERACTIVE_HELP)) {
                         try {
                             this.print(OnapCommandRegistrar.getRegistrar().getHelpForEnabledProductVersion());
+                            this.print(this.getDirectiveHelp());
                         } catch (OnapCommandException e) {
                             this.print(e);
                         }
                     } else if (!args.isEmpty() && this.args.get(0).equals(OnapCliConstants.PARAM_INTERACTIVE_VERSION)) {
                         this.args = Arrays.asList(new String [] {this.getLongOption(OnapCliConstants.PARAM_VERSION_LONG)});
                         handleVersion();
+                    } else if (!args.isEmpty() && this.args.get(0).equals(OnapCliConstants.PARAM_INTERACTIVE_SET)) {
+                        if (args.size() > 1) {
+                            String [] paramEntry = args.get(1).trim().split("=");
+                            if (paramEntry.length >= 2) {
+                                this.paramCache.put(paramEntry[0].trim(), paramEntry[1].trim());
+                            } else {
+                                this.print("Please use it in the form of 'set param-name=param-value'");
+                            }
+                        } else {
+                            this.print(this.paramCache.toString());
+                        }
+                    } else if (!args.isEmpty() && this.args.get(0).equals(OnapCliConstants.PARAM_INTERACTIVE_UNSET)) {
+                        if (args.size() > 1) {
+                            for (int i = 1; i <args.size(); i++) {
+                                if (this.paramCache.containsKey(args.get(i))) {
+                                    this.paramCache.remove(args.get(i));
+                                }
+                            }
+                        }
                     } else {
                         if (args.size() == 1 && args.get(0).trim().isEmpty()) {
                             //Ignore blanks // NOSONAR
                             continue;
                         }
+
                         handleCommand();
                     }
                 }
@@ -195,7 +269,9 @@ public class OnapCli {
                     OnapCliConstants.PARAM_INTERACTIVE_CLEAR,
                     OnapCliConstants.PARAM_INTERACTIVE_USE,
                     OnapCliConstants.PARAM_INTERACTIVE_HELP,
-                    OnapCliConstants.PARAM_INTERACTIVE_VERSION);
+                    OnapCliConstants.PARAM_INTERACTIVE_VERSION,
+                    OnapCliConstants.PARAM_INTERACTIVE_SET,
+                    OnapCliConstants.PARAM_INTERACTIVE_UNSET);
             console.addCompleter(strCompleter);
             console.setPrompt(OnapCliConstants.PARAM_INTERACTIVE_PROMPT);
         } catch (OnapCommandException e) { // NOSONAR
@@ -236,6 +312,12 @@ public class OnapCli {
                     }
                 }
 
+                for (OnapCommandParameter param: cmd.getParameters()) {
+                    if (this.paramCache.containsKey(param.getLongOption())) {
+                        param.setValue(this.paramCache.get(param.getLongOption()));
+                    }
+                }
+
                 OnapCliUtils.populateParams(cmd.getParameters(), args);
                 OnapCommandResult result = cmd.execute();
                 this.print(result.getDebugInfo());
index dfb20c9..2ce12f3 100644 (file)
@@ -29,11 +29,19 @@ public final class OnapCliConstants {
 
     public static final String PARAM_INTERACTIVE_PROMPT = "onap>";
     public static final String PARAM_INTERACTIVE_EXIT = "exit";
-    public static final String PARAM_INTERACTIVE_BYE = "bye";
+    public static final String PARAM_INTERACTIVE_EXIT_MSG = "To exit from the session.";
     public static final String PARAM_INTERACTIVE_CLEAR = "clear";
+    public static final String PARAM_INTERACTIVE_CLEAR_MSG = "To clear the screen";
     public static final String PARAM_INTERACTIVE_USE = "use";
+    public static final String PARAM_INTERACTIVE_USE_MSG = "To set the current product version, more details please check version";
     public static final String PARAM_INTERACTIVE_HELP = "help";
+    public static final String PARAM_INTERACTIVE_HELP_MSG = "To get the help details of supported commands";
     public static final String PARAM_INTERACTIVE_VERSION = "version";
+    public static final String PARAM_INTERACTIVE_VERSION_MSG = "To see the version details";
+    public static final String PARAM_INTERACTIVE_SET = "set";
+    public static final String PARAM_INTERACTIVE_SET_MSG = "To set the parameter values. Once its set, will be available for all commands in current session.";
+    public static final String PARAM_INTERACTIVE_UNSET = "unset";
+    public static final String PARAM_INTERACTIVE_UNSET_MSG = "To unset the parameter value in current session.";
     public static final String PARAM_INTERACTIVE_ARG_SPLIT_PATTERN = "\\s+";
 
     private OnapCliConstants(){}
index 1784a34..668d758 100644 (file)
@@ -1,5 +1,13 @@
 Onap Command-line interface (CLI).
 
+                            ____ __    ___
+  ___  _ __   __ _ _ __    / ___| |   |_ _|
+ / _ \| '_ \ / _` | '_ \  | |   | |    | |
+| (_) | | | | (_| | |_) | | |___| |___ | |
+ \___/|_| |_|\__,_| .__/   \____|_____|___|
+                  |_|
+
+
 One Command to command whole Onap !! It provides the unified commands
 to access and operate Onap functionalities. To use this CLI, please
 configure the following environment variables:
index a94252e..05dd7d4 100644 (file)
@@ -131,9 +131,6 @@ public class OnapCliMainTest {
         mockConsole("exit");
         cli.handleInteractive();
 
-        mockConsole("bye");
-        cli.handleInteractive();
-
         mockConsole("clear");
         try {
             cli.handleInteractive();