summaryrefslogtreecommitdiffstats
path: root/config-proxy
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-09-18 14:34:14 +0200
committerHarald Musum <musum@yahooinc.com>2023-09-18 14:34:14 +0200
commitdb99754f95ae0b5d400a04d84c2eb16152e80e71 (patch)
tree0df270bab78792985b1ad3e9126b575356fe9486 /config-proxy
parent8702c3f4047002fa0356521daf8415785e1dcb18 (diff)
Switch on uri scheme and create download dir higher up
Diffstat (limited to 'config-proxy')
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/S3Downloader.java1
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloadRpcServer.java10
-rw-r--r--config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloader.java1
3 files changed, 9 insertions, 3 deletions
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/S3Downloader.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/S3Downloader.java
index 9a244838aa9..ce79cfd5b7e 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/S3Downloader.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/S3Downloader.java
@@ -19,7 +19,6 @@ import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Optional;
-import java.util.concurrent.atomic.AtomicReference;
public class S3Downloader implements Downloader {
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloadRpcServer.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloadRpcServer.java
index 59481df1aa8..d6bc506e51c 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloadRpcServer.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloadRpcServer.java
@@ -6,6 +6,7 @@ import com.yahoo.jrt.Method;
import com.yahoo.jrt.Request;
import com.yahoo.jrt.StringValue;
import com.yahoo.jrt.Supervisor;
+import com.yahoo.net.URI;
import com.yahoo.security.tls.Capability;
import com.yahoo.text.Utf8;
import com.yahoo.vespa.defaults.Defaults;
@@ -14,6 +15,7 @@ import net.jpountz.xxhash.XXHashFactory;
import java.io.File;
import java.nio.ByteBuffer;
+import java.nio.file.Files;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
@@ -77,6 +79,7 @@ class UrlDownloadRpcServer {
}
try {
+ Files.createDirectories(downloadDir.toPath());
Optional<File> file = downloader.downloadFile(url, downloadDir);
if (file.isPresent())
req.returnValues().add(new StringValue(file.get().getAbsolutePath()));
@@ -91,7 +94,12 @@ class UrlDownloadRpcServer {
}
private static Downloader downloader(String url) {
- return url.startsWith("s3://") ? new S3Downloader() : new UrlDownloader();
+ URI uri = new URI(url);
+ return switch (uri.getScheme()) {
+ case "http", "https" -> new UrlDownloader();
+ case "s3" -> new S3Downloader();
+ default -> throw new IllegalArgumentException("Unsupported scheme '" + uri.getScheme() + "'");
+ };
}
private static void logAndSetRpcError(Request req, String url, Throwable e, int rpcErrorCode) {
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloader.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloader.java
index 3a50545f0ae..2f52222a337 100644
--- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloader.java
+++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/UrlDownloader.java
@@ -31,7 +31,6 @@ class UrlDownloader implements Downloader {
throw new RuntimeException("Download of URL '" + url + "' failed, got response code " + connection.getResponseCode());
log.log(Level.INFO, "Downloading URL '" + url + "'");
- Files.createDirectories(downloadDir.toPath());
File contentsPath = new File(downloadDir, CONTENTS_FILE_NAME);
try (ReadableByteChannel rbc = Channels.newChannel(connection.getInputStream())) {
try (FileOutputStream fos = new FileOutputStream((contentsPath.getAbsolutePath()))) {