use of com.spotify.docker.client.messages.RegistryAuthV2 in project docker-client by spotify.
the class DockerConfigReader method parseDockerConfig.
private RegistryConfigs parseDockerConfig(final Path configPath) throws IOException {
checkNotNull(configPath);
ObjectNode authJson = extractAuthJson(configPath);
if (authJson.has(CREDS_STORE) && authJson.has(AUTHS_ENTRY)) {
String credsStore = authJson.get(CREDS_STORE).textValue();
Map<String, RegistryAuth> registryAuthMap = new HashMap<>();
ObjectNode auths = (ObjectNode) authJson.get(AUTHS_ENTRY);
Iterator<String> serverIterator = auths.fieldNames();
while (serverIterator.hasNext()) {
String serverAddress = serverIterator.next();
Process process = Runtime.getRuntime().exec("docker-credential-" + credsStore + " get");
try (Writer outStreamWriter = new OutputStreamWriter(process.getOutputStream(), StandardCharsets.UTF_8)) {
try (BufferedWriter writer = new BufferedWriter(outStreamWriter)) {
writer.write(serverAddress + "\n");
writer.flush();
}
}
try (InputStreamReader reader = new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8)) {
try (BufferedReader input = new BufferedReader(reader)) {
String serverAuthDetails = input.readLine();
JsonNode serverAuthNode = MAPPER.readTree(serverAuthDetails);
RegistryAuthV2 serverAuth = new RegistryAuthV2(serverAuthNode.get("Username").textValue(), serverAuthNode.get("Secret").textValue(), serverAuthNode.get("ServerURL").textValue());
registryAuthMap.put(serverAddress, serverAuth);
}
}
}
return RegistryConfigs.create(registryAuthMap);
} else if (authJson.has(AUTHS_ENTRY)) {
authJson = (ObjectNode) authJson.get(AUTHS_ENTRY);
}
return MAPPER.treeToValue(authJson, RegistryConfigs.class);
}
Aggregations