diff options
author | axtloss <axtlos@getcryst.al> | 2023-05-15 22:36:20 +0200 |
---|---|---|
committer | axtloss <axtlos@getcryst.al> | 2023-05-15 22:36:20 +0200 |
commit | 9736e92073502adcfd466a629f10464f518e2c15 (patch) | |
tree | 8d9b0d2b935fe95f5edbcd635b1dbd29313bbee1 /src/main/java/io/github/jshipit/JshipIT.java | |
parent | 01c8a59f8aa41296b791c8a64aa3b42da8e7458e (diff) | |
download | jshipit-9736e92073502adcfd466a629f10464f518e2c15.tar.gz jshipit-9736e92073502adcfd466a629f10464f518e2c15.tar.bz2 |
multithreaded downloads and non docker registries
Runs each layer download on a different thread.
Allows using registries other than registry.docker.io
Diffstat (limited to 'src/main/java/io/github/jshipit/JshipIT.java')
-rwxr-xr-x | src/main/java/io/github/jshipit/JshipIT.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/io/github/jshipit/JshipIT.java b/src/main/java/io/github/jshipit/JshipIT.java new file mode 100755 index 0000000..30065a0 --- /dev/null +++ b/src/main/java/io/github/jshipit/JshipIT.java @@ -0,0 +1,50 @@ +package io.github.jshipit; + +import com.fasterxml.jackson.databind.JsonNode; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +public class JshipIT { + + public int finishedCount; + public int downloadThreads; + + public JshipIT(String[] args) { + DockerAPIHelper api = new DockerAPIHelper("registry.getcryst.al","crystal/misc", "docker", "latest"); + JsonNode manifest = null; + + System.out.println("API Token: " + api.getApiToken()); + try { + manifest = api.fetchManifestJson(); + } catch (IOException e) { + + } + + System.out.println("Manifest: " + manifest); + + Path path = Path.of("./tmp_"+api.getImage()+"_"+api.getTag()); + try { + Files.createDirectory(path); + } catch (IOException e) { + System.out.println("Failed to create directory: " + path); + e.printStackTrace(); + return; + } + + finishedCount = 0; + downloadThreads = 0; + + JsonNode layers = manifest.get("layers"); + for (JsonNode layer : layers) { + System.out.println("Layer: " + layer); + try { + api.fetchBlob(layer.get("digest").asText(), path.toString()); + downloadThreads = downloadThreads+1; + } catch (IOException e) { + e.printStackTrace(); + } + } + } +}
\ No newline at end of file |