blob: 55ead4ad73702335cd135c8b959b8a1e557ec9de (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.node.admin.maintenance.sync;
import java.net.URI;
import java.nio.file.Path;
import java.util.Optional;
/**
* @author freva
*/
public class SyncFileInfo {
private final Path source;
private final URI destination;
private final Compression uploadCompression;
private SyncFileInfo(Path source, URI destination, Compression uploadCompression) {
this.source = source;
this.destination = destination;
this.uploadCompression = uploadCompression;
}
/** Source path of the file to sync */
public Path source() {
return source;
}
/** Remote URI to store the file at */
public URI destination() {
return destination;
}
/** Compression algorithm to use when uploading the file */
public Compression uploadCompression() {
return uploadCompression;
}
public static Optional<SyncFileInfo> forLogFile(URI uri, Path logFile) {
String filename = logFile.getFileName().toString();
Compression compression = Compression.NONE;
String dir = null;
if (filename.startsWith("vespa.log-")) {
dir = "logs/vespa/";
compression = Compression.ZSTD;
} else if (filename.endsWith(".zst")) {
if (filename.startsWith("JsonAccessLog.") || filename.startsWith("access"))
dir = "logs/access/";
else if (filename.startsWith("ConnectionLog."))
dir = "logs/connection/";
}
if (dir == null) return Optional.empty();
return Optional.of(new SyncFileInfo(
logFile, uri.resolve(dir + logFile.getFileName() + compression.extension), compression));
}
public enum Compression {
NONE(""), ZSTD(".zst");
private final String extension;
Compression(String extension) {
this.extension = extension;
}
}
}
|