SLIDER-633 add processing for token file for oozie based slider invocations
diff --git a/slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java b/slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java
index 644f627..c72f520 100644
--- a/slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java
+++ b/slider-core/src/main/java/org/apache/slider/core/launch/AbstractLauncher.java
@@ -38,6 +38,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
@@ -171,7 +172,16 @@
DataOutputBuffer dob = new DataOutputBuffer();
- credentials.writeTokenStorageToStream(dob);
+ String tokenFileName = this.getConf().get("mapreduce.job.credentials.binary");
+ if (tokenFileName != null) {
+ // use delegation tokens, i.e. from Oozie
+ Credentials creds = Credentials.readTokenStorageFile(new File(tokenFileName), getConf());
+ creds.writeTokenStorageToStream(dob);
+ } else {
+ // normal auth
+ credentials.writeTokenStorageToStream(dob);
+ }
+
ByteBuffer tokenBuffer = ByteBuffer.wrap(dob.getData(), 0, dob.getLength());
containerLaunchContext.setTokens(tokenBuffer);
diff --git a/slider-core/src/main/java/org/apache/slider/core/launch/AppMasterLauncher.java b/slider-core/src/main/java/org/apache/slider/core/launch/AppMasterLauncher.java
index bd8a0a5..8229c63 100644
--- a/slider-core/src/main/java/org/apache/slider/core/launch/AppMasterLauncher.java
+++ b/slider-core/src/main/java/org/apache/slider/core/launch/AppMasterLauncher.java
@@ -204,9 +204,11 @@
);
}
- // For now, only getting tokens for the default file-system.
- FileSystem fs = coreFileSystem.getFileSystem();
- fs.addDelegationTokens(tokenRenewer, credentials);
+ if (this.getConf().get("mapreduce.job.credentials.binary") == null) {
+ // For now, only getting tokens for the default file-system.
+ FileSystem fs = coreFileSystem.getFileSystem();
+ fs.addDelegationTokens(tokenRenewer, credentials);
+ }
}