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 ;
-               
-       }
-
-  
 }

Reply via email to