>From 1d56c9f2918734bc5e812e69eadb0d756037f642 Mon Sep 17 00:00:00 2001
From: Abhishek Koneru <akoneru@redhat.com>
Date: Thu, 20 Mar 2014 11:33:13 -0400
Subject: [PATCH] New CLI commands for Key and KeyRequest resources.

This patch adds three new CLI commands -
KeyShowCLI, KeyRequestShowCLI, KeyModifyCLI
---
 .../src/com/netscape/certsrv/key/KeyClient.java    |  2 +-
 .../src/com/netscape/cmstools/key/KeyCLI.java      |  3 +
 .../com/netscape/cmstools/key/KeyModifyCLI.java    | 82 ++++++++++++++++++++++
 .../netscape/cmstools/key/KeyRequestShowCLI.java   | 51 ++++++++++++++
 .../src/com/netscape/cmstools/key/KeyShowCLI.java  | 52 ++++++++++++++
 5 files changed, 189 insertions(+), 1 deletion(-)
 create mode 100644 base/java-tools/src/com/netscape/cmstools/key/KeyModifyCLI.java
 create mode 100644 base/java-tools/src/com/netscape/cmstools/key/KeyRequestShowCLI.java
 create mode 100644 base/java-tools/src/com/netscape/cmstools/key/KeyShowCLI.java

diff --git a/base/common/src/com/netscape/certsrv/key/KeyClient.java b/base/common/src/com/netscape/certsrv/key/KeyClient.java
index 68c70fb68e5c58673f4375f513647ad7359cfc84..6f4ba66f907e96779d38d3a1d8a2c9b0f1806582 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyClient.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyClient.java
@@ -194,7 +194,7 @@ public class KeyClient extends Client {
         if (id == null || status == null) {
             throw new IllegalArgumentException("Key Id and status must be specified.");
         }
-        if ((status != KeyResource.KEY_STATUS_ACTIVE) && (status != KeyResource.KEY_STATUS_INACTIVE)) {
+        if ((!status.equalsIgnoreCase(KeyResource.KEY_STATUS_ACTIVE)) && (!status.equalsIgnoreCase(KeyResource.KEY_STATUS_INACTIVE))) {
             throw new IllegalArgumentException("Invalid status value.");
         }
         Response response = keyClient.modifyKeyStatus(id, status);
diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java
index 59624b64fdfe82c7bb4a2489274f6827dc5be2fe..86b6f2407d11c66312c82179ab36c892c3d2e4f4 100644
--- a/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java
@@ -36,6 +36,9 @@ public class KeyCLI extends CLI {
 
         addModule(new KeyFindCLI(this));
         addModule(new KeyRequestFindCLI(this));
+        addModule(new KeyShowCLI(this));
+        addModule(new KeyRequestShowCLI(this));
+        addModule(new KeyModifyCLI(this));
     }
 
     public String getFullName() {
diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyModifyCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyModifyCLI.java
new file mode 100644
index 0000000000000000000000000000000000000000..729649e5ca03758c8797c2f727c6b760e88904ba
--- /dev/null
+++ b/base/java-tools/src/com/netscape/cmstools/key/KeyModifyCLI.java
@@ -0,0 +1,82 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2012 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+
+package com.netscape.cmstools.key;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.ParseException;
+
+import com.netscape.certsrv.dbs.keydb.KeyId;
+import com.netscape.certsrv.key.KeyInfo;
+import com.netscape.cmstools.cli.CLI;
+
+public class KeyModifyCLI extends CLI {
+    public KeyCLI keyCLI;
+
+    public KeyModifyCLI(KeyCLI keyCLI) {
+        super("mod", "Get key request", keyCLI);
+        this.keyCLI = keyCLI;
+    }
+
+    public void printHelp() {
+        formatter.printHelp(getFullName() + " <Key ID> [OPTIONS]", options);
+    }
+
+    public void execute(String[] args) {
+
+        Option option = new Option(null, "status", true, "Status of the key.\n Valid values:[active,inactive]");
+        option.setRequired(true);
+        option.setArgName("status");
+        options.addOption(option);
+
+        CommandLine cmd = null;
+        try {
+            cmd = parser.parse(options, args);
+
+        } catch (ParseException e) {
+            System.err.println("Error: " + e.getMessage());
+            printHelp();
+            System.exit(1);
+        }
+
+        String status = cmd.getOptionValue("status");
+        if (status == null) {
+            System.out.println("No status:: " + status);
+            printHelp();
+            System.exit(-1);
+        }
+
+        String[] cmdArgs = cmd.getArgs();
+        if (cmdArgs.length != 1) {
+            printHelp();
+            System.exit(-1);
+        }
+        KeyId keyId = new KeyId(cmdArgs[0]);
+
+        keyCLI.keyClient.modifyKeyStatus(keyId, status);
+
+        KeyInfo keyInfo = keyCLI.keyClient.getKeyInfo(keyId);
+        if (keyInfo.getStatus().equalsIgnoreCase(status)) {
+            System.out.println("Success!");
+            KeyCLI.printKeyInfo(keyInfo);
+        } else {
+            System.out.println("Failure! Key status not modified.");
+        }
+    }
+}
diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyRequestShowCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyRequestShowCLI.java
new file mode 100644
index 0000000000000000000000000000000000000000..3da5de27923c6202ddedeaf84fd5b162c6fa05cd
--- /dev/null
+++ b/base/java-tools/src/com/netscape/cmstools/key/KeyRequestShowCLI.java
@@ -0,0 +1,51 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2012 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+
+package com.netscape.cmstools.key;
+
+import com.netscape.certsrv.key.KeyRequestInfo;
+import com.netscape.certsrv.request.RequestId;
+import com.netscape.cmstools.cli.CLI;
+
+public class KeyRequestShowCLI extends CLI {
+
+    public KeyCLI keyCLI;
+
+    public KeyRequestShowCLI(KeyCLI keyCLI) {
+        super("request-show", "Get key request", keyCLI);
+        this.keyCLI = keyCLI;
+    }
+
+    public void printHelp() {
+        formatter.printHelp(getFullName() + " <Request Id>", options);
+    }
+
+    public void execute(String[] args) {
+
+        if (args.length != 1) {
+            printHelp();
+            System.exit(-1);
+        }
+
+        RequestId requestId = new RequestId(args[0].trim());
+
+        KeyRequestInfo keyRequestInfo = keyCLI.keyClient.getRequestInfo(requestId);
+
+        KeyCLI.printKeyRequestInfo(keyRequestInfo);
+    }
+}
diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyShowCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyShowCLI.java
new file mode 100644
index 0000000000000000000000000000000000000000..5f9a761874aa1ee91179e264014abc70103c0e54
--- /dev/null
+++ b/base/java-tools/src/com/netscape/cmstools/key/KeyShowCLI.java
@@ -0,0 +1,52 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2012 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+
+package com.netscape.cmstools.key;
+
+import com.netscape.certsrv.dbs.keydb.KeyId;
+import com.netscape.certsrv.key.KeyInfo;
+import com.netscape.cmstools.cli.CLI;
+
+public class KeyShowCLI extends CLI{
+
+    public KeyCLI keyCLI;
+
+    public KeyShowCLI(KeyCLI keyCLI){
+        super("show", "Get key", keyCLI);
+        this.keyCLI = keyCLI;
+    }
+
+    public void printHelp() {
+        formatter.printHelp(getFullName() + " <Key Id>", options);
+    }
+
+    public void execute(String[] args){
+
+        if (args.length != 1){
+            printHelp();
+            System.exit(-1);
+        }
+
+        KeyId keyId = new KeyId(args[0].trim());
+
+        KeyInfo keyInfo = keyCLI.keyClient.getKeyInfo(keyId);
+
+        KeyCLI.printKeyInfo(keyInfo);
+    }
+
+}
-- 
1.8.5.3

