Search in sources :

Example 1 with RegistryAuthV2

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);
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) InputStreamReader(java.io.InputStreamReader) HashMap(java.util.HashMap) JsonNode(com.fasterxml.jackson.databind.JsonNode) RegistryAuthV2(com.spotify.docker.client.messages.RegistryAuthV2) RegistryAuth(com.spotify.docker.client.messages.RegistryAuth) BufferedWriter(java.io.BufferedWriter) BufferedReader(java.io.BufferedReader) OutputStreamWriter(java.io.OutputStreamWriter) OutputStreamWriter(java.io.OutputStreamWriter) BufferedWriter(java.io.BufferedWriter) Writer(java.io.Writer)

Aggregations

JsonNode (com.fasterxml.jackson.databind.JsonNode)1 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)1 RegistryAuth (com.spotify.docker.client.messages.RegistryAuth)1 RegistryAuthV2 (com.spotify.docker.client.messages.RegistryAuthV2)1 BufferedReader (java.io.BufferedReader)1 BufferedWriter (java.io.BufferedWriter)1 InputStreamReader (java.io.InputStreamReader)1 OutputStreamWriter (java.io.OutputStreamWriter)1 Writer (java.io.Writer)1 HashMap (java.util.HashMap)1