Skip to content

Commit

Permalink
YARN-8329. Docker client configuration can still be set incorrectly. …
Browse files Browse the repository at this point in the history
…Contributed by Shane Kumpf
  • Loading branch information
jlowe committed May 29, 2018
1 parent e3236a9 commit 4827e9a
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 15 deletions.
Expand Up @@ -154,14 +154,15 @@ public static Credentials getCredentialsFromTokensByteBuffer(
* @param outConfigFile the File to write the Docker client configuration to.
* @param credentials the populated Credentials object.
* @throws IOException if the write fails.
* @return true if a Docker credential is found in the supplied credentials.
*/
public static void writeDockerCredentialsToPath(File outConfigFile,
public static boolean writeDockerCredentialsToPath(File outConfigFile,
Credentials credentials) throws IOException {
ObjectMapper mapper = new ObjectMapper();
ObjectNode rootNode = mapper.createObjectNode();
ObjectNode registryUrlNode = mapper.createObjectNode();
boolean foundDockerCred = false;
if (credentials.numberOfTokens() > 0) {
ObjectMapper mapper = new ObjectMapper();
ObjectNode rootNode = mapper.createObjectNode();
ObjectNode registryUrlNode = mapper.createObjectNode();
for (Token<? extends TokenIdentifier> tk : credentials.getAllTokens()) {
if (tk.getKind().equals(DockerCredentialTokenIdentifier.KIND)) {
foundDockerCred = true;
Expand All @@ -176,12 +177,14 @@ public static void writeDockerCredentialsToPath(File outConfigFile,
}
}
}
if (foundDockerCred) {
rootNode.put(CONFIG_AUTHS_KEY, registryUrlNode);
String json = mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(rootNode);
FileUtils.writeStringToFile(
outConfigFile, json, StandardCharsets.UTF_8);
}
}
if (foundDockerCred) {
rootNode.put(CONFIG_AUTHS_KEY, registryUrlNode);
String json =
mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);
FileUtils.writeStringToFile(outConfigFile, json, StandardCharsets.UTF_8);
}
return foundDockerCred;
}
}
Expand Up @@ -116,8 +116,8 @@ public void testWriteDockerCredentialsToPath() throws Exception {
Credentials credentials =
DockerClientConfigHandler.readCredentialsFromConfigFile(
new Path(file.toURI()), conf, APPLICATION_ID);
DockerClientConfigHandler.writeDockerCredentialsToPath(outFile,
credentials);
assertTrue(DockerClientConfigHandler.writeDockerCredentialsToPath(outFile,
credentials));
assertTrue(outFile.exists());
String fileContents = FileUtils.readFileToString(outFile);
assertTrue(fileContents.contains("auths"));
Expand Down
Expand Up @@ -1299,14 +1299,15 @@ private void addDockerClientConfigToRunCommand(ContainerRuntimeContext ctx,
.getParent();
File dockerConfigPath = new File(nmPrivateDir + "/config.json");
try {
DockerClientConfigHandler
.writeDockerCredentialsToPath(dockerConfigPath, credentials);
if (DockerClientConfigHandler
.writeDockerCredentialsToPath(dockerConfigPath, credentials)) {
dockerRunCommand.setClientConfigDir(dockerConfigPath.getParent());
}
} catch (IOException e) {
throw new ContainerExecutionException(
"Unable to write Docker client credentials to "
+ dockerConfigPath);
}
dockerRunCommand.setClientConfigDir(dockerConfigPath.getParent());
}
}
}
Expand Down

0 comments on commit 4827e9a

Please sign in to comment.