Repository: incubator-ranger Updated Branches: refs/heads/master 895ac2b19 -> 3aba25302
RANGER-294: Update CredentialShell usage to support non-interactive mode Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/3aba2530 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/3aba2530 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/3aba2530 Branch: refs/heads/master Commit: 3aba2530211bfce6a5cd4bd373b8f7e50abe7fe5 Parents: 895ac2b Author: Madhan Neethiraj <[email protected]> Authored: Sat Mar 7 10:47:23 2015 -0800 Committer: Madhan Neethiraj <[email protected]> Committed: Sat Mar 7 10:47:23 2015 -0800 ---------------------------------------------------------------------- .../apache/ranger/credentialapi/buildks.java | 43 +++++++++++++++++++- .../credentialapi/TestCredentialReader.java | 39 +----------------- .../ranger/credentialapi/Testbuildks.java | 43 ++------------------ 3 files changed, 47 insertions(+), 78 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3aba2530/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/buildks.java ---------------------------------------------------------------------- diff --git a/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/buildks.java b/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/buildks.java index 25be1d6..b4c856b 100644 --- a/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/buildks.java +++ b/credentialbuilder/src/main/java/org/apache/ranger/credentialapi/buildks.java @@ -21,6 +21,7 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; +import java.lang.reflect.Field; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.security.alias.CredentialShell; @@ -92,12 +93,13 @@ public class buildks { }else{ try{ System.out.println("Alias already exist!! will try to delete first."); + boolean isSilentMode = true; String argsDelete[]=new String[4]; argsDelete[0]="delete"; argsDelete[1]=alias; argsDelete[2]=providerOption; argsDelete[3]=providerPath; - returnCode=deleteCredential(argsDelete); + returnCode=deleteCredential(argsDelete, isSilentMode); if(returnCode==0){ returnCode=createKeyStore(args); } @@ -249,11 +251,23 @@ public class buildks { return returnCode; } - public int deleteCredential(String args[]){ + public int deleteCredential(String args[], boolean isSilentMode){ int returnCode=-1; try{ if(args!=null && args.length==4) { + // for non-interactive, insert argument "-f" if needed + if(isSilentMode && isCredentialShellInteractiveEnabled()) { + String[] updatedArgs = new String[5]; + updatedArgs[0] = args[0]; + updatedArgs[1] = args[1]; + updatedArgs[2] = "-f"; + updatedArgs[3] = args[2]; + updatedArgs[4] = args[3]; + + args = updatedArgs; + } + //display command which need to be executed or entered displayCommand(args); }else{ @@ -430,4 +444,29 @@ public class buildks { } return isValid; } + + private static boolean isCredentialShellInteractiveEnabled() { + boolean ret = false ; + + String fieldName = "interactive" ; + + CredentialShell cs = new CredentialShell() ; + + try { + Field interactiveField = cs.getClass().getDeclaredField(fieldName) ; + + if (interactiveField != null) { + interactiveField.setAccessible(true); + ret = interactiveField.getBoolean(cs) ; + System.out.println("FOUND value of [" + fieldName + "] field in the Class [" + cs.getClass().getName() + "] = [" + ret + "]") ; + } + } catch (Throwable e) { + System.out.println("Unable to find the value of [" + fieldName + "] field in the Class [" + cs.getClass().getName() + "]. Skiping -f option") ; + e.printStackTrace(); + ret = false; + } + + return ret ; + + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3aba2530/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/TestCredentialReader.java ---------------------------------------------------------------------- diff --git a/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/TestCredentialReader.java b/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/TestCredentialReader.java index 8dc64a7..5a8857c 100644 --- a/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/TestCredentialReader.java +++ b/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/TestCredentialReader.java @@ -45,46 +45,11 @@ public class TestCredentialReader { assertTrue(password,"PassworD123".equals(password)); //delete after use - String[] argsdeleteCommand = null ; - - if (isCredentialShellInteractiveEnabled()) { - argsdeleteCommand = new String[] {"delete", "TestCredential2", "-f", "-provider", "jceks://file@/" + keystoreFile}; - } - else { - argsdeleteCommand = new String[] {"delete", "TestCredential2", "-provider", "jceks://file@/" + keystoreFile}; - } + String[] argsdeleteCommand = new String[] {"delete", "TestCredential2", "-provider", "jceks://file@/" + keystoreFile}; buildks buildksOBJ=new buildks(); - buildksOBJ.deleteCredential(argsdeleteCommand); + buildksOBJ.deleteCredential(argsdeleteCommand, true); } - private static boolean isCredentialShellInteractiveEnabled() { - boolean ret = false ; - - String fieldName = "interactive" ; - - CredentialShell cs = new CredentialShell() ; - - try { - Field interactiveField = cs.getClass().getDeclaredField(fieldName) ; - - if (interactiveField != null) { - interactiveField.setAccessible(true); - ret = interactiveField.getBoolean(cs) ; - System.out.println("FOUND value of [" + fieldName + "] field in the Class [" + cs.getClass().getName() + "] = [" + ret + "]") ; - } - } catch (Throwable e) { - System.out.println("Unable to find the value of [" + fieldName + "] field in the Class [" + cs.getClass().getName() + "]. Skiping -f option") ; - e.printStackTrace(); - ret = false; - } - - return ret ; - - } - - - - } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3aba2530/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/Testbuildks.java ---------------------------------------------------------------------- diff --git a/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/Testbuildks.java b/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/Testbuildks.java index f336186..a2ff824 100644 --- a/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/Testbuildks.java +++ b/credentialbuilder/src/test/java/org/apache/ranger/credentialapi/Testbuildks.java @@ -48,18 +48,10 @@ public class Testbuildks { assertTrue(pw.equals("PassworD123")); boolean getCredentialPassed = pw.equals("PassworD123"); - String[] argsDeleteCommand = null ; - - if (isCredentialShellInteractiveEnabled()) { - argsDeleteCommand = new String[] {"delete", "TestCredential1", "-f", "-provider", "jceks://file@/" +keystoreFile }; - - } - else { - argsDeleteCommand = new String[] {"delete", "TestCredential1", "-provider", "jceks://file@/" +keystoreFile }; - - } - - int rc3=buildksOBJ.deleteCredential(argsDeleteCommand); + String[] argsDeleteCommand = new String[] {"delete", "TestCredential1", "-provider", "jceks://file@/" +keystoreFile }; + boolean isSilentMode = true; + + int rc3=buildksOBJ.deleteCredential(argsDeleteCommand, isSilentMode); assertEquals(0, rc3); assertTrue(rc3==0); @@ -90,31 +82,4 @@ public class Testbuildks { tTestbuildks.testBuildKSsuccess(); }*/ - - private static boolean isCredentialShellInteractiveEnabled() { - boolean ret = false ; - - String fieldName = "interactive" ; - - CredentialShell cs = new CredentialShell() ; - - try { - Field interactiveField = cs.getClass().getDeclaredField(fieldName) ; - - if (interactiveField != null) { - interactiveField.setAccessible(true); - ret = interactiveField.getBoolean(cs) ; - System.out.println("FOUND value of [" + fieldName + "] field in the Class [" + cs.getClass().getName() + "] = [" + ret + "]") ; - } - } catch (Throwable e) { - System.out.println("Unable to find the value of [" + fieldName + "] field in the Class [" + cs.getClass().getName() + "]. Skiping -f option") ; - e.printStackTrace(); - ret = false; - } - - return ret ; - - } - - }
