You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/03/08 11:00:22 UTC

incubator-ranger git commit: RANGER-294: Update CredentialShell usage to support non-interactive mode

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 <ma...@apache.org>
Authored: Sat Mar 7 10:47:23 2015 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
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 ;
-		
-	}
-
-  
 }