io.bdeploy.jersey.fs.FileSystemSpaceService Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of api Show documentation
Show all versions of api Show documentation
Public API including dependencies, ready to be used for integrations and plugins.
package io.bdeploy.jersey.fs;
import java.nio.file.FileStore;
import java.nio.file.Files;
import java.nio.file.Path;
import org.jvnet.hk2.annotations.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.bdeploy.jersey.JerseyServer;
import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.inject.Provider;
@Service
public class FileSystemSpaceService {
private static final Logger log = LoggerFactory.getLogger(FileSystemSpaceService.class);
@Inject
@Named(JerseyServer.FILE_SYSTEM_MIN_SPACE)
private Provider minFreeBytes;
public long getFreeSpace(Path path) {
try {
FileStore store = Files.getFileStore(path);
if (store == null) {
return -1; // cannot check
}
return store.getUsableSpace();
} catch (Exception e) {
log.error("Cannot check remaining free disc space for {}", path, e);
return -1;
}
}
/**
* @param path the path to check
* @return whether this path (or it's parent directory) has enough free space as configured in the MinionState's
* storageMinFree property.
*/
public boolean hasFreeSpace(Path path) {
// minFreeBytes is not bound in case of tests, etc.
if (minFreeBytes.get() == null) {
return true; // cannot check.
}
long freeSpace = getFreeSpace(path);
if (freeSpace < 0) {
return true; // safety fallback - we continue even though dangerous..
}
return freeSpace > minFreeBytes.get();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy