aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/jshipit/Mount.java
diff options
context:
space:
mode:
authoraxtloss <axtlos@getcryst.al>2023-05-24 22:48:05 +0200
committeraxtloss <axtlos@getcryst.al>2023-05-24 22:48:05 +0200
commit8ce1ed49dd5a8a13feb3eca8f36ca3ac0cc80a12 (patch)
tree5af31f2a04cba28bda6a6b018944da4d10934973 /src/main/java/io/github/jshipit/Mount.java
parent63146274f8cbe759742aa18413054515c0f81583 (diff)
downloadjshipit-8ce1ed49dd5a8a13feb3eca8f36ca3ac0cc80a12.tar.gz
jshipit-8ce1ed49dd5a8a13feb3eca8f36ca3ac0cc80a12.tar.bz2
Allow creating containers
Diffstat (limited to 'src/main/java/io/github/jshipit/Mount.java')
-rw-r--r--src/main/java/io/github/jshipit/Mount.java48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/main/java/io/github/jshipit/Mount.java b/src/main/java/io/github/jshipit/Mount.java
new file mode 100644
index 0000000..63b60dd
--- /dev/null
+++ b/src/main/java/io/github/jshipit/Mount.java
@@ -0,0 +1,48 @@
+package io.github.jshipit;
+
+import com.sun.jna.Library;
+import com.sun.jna.Native;
+import com.sun.jna.Platform;
+
+public class Mount {
+ public interface CLibrary extends Library {
+ int mount(String source, String target,
+ String filesystemtype, int mountflags,
+ String data);
+
+ int umount(String target);
+ }
+
+ public void mount(String source, String target,
+ String filesystemtype, int mountflags,
+ String data) {
+ CLibrary libc;
+
+ if (Platform.isLinux()) {
+ libc = Native.load("c", CLibrary.class);
+ int result = libc.mount(source, target, filesystemtype, mountflags, data);
+ if (result == 0) {
+ System.out.println("Device mounted successfully.");
+ } else {
+ System.out.println("Device mount failed.");
+ }
+ }
+ }
+
+ public void overlayMount(String[] lower, String upper, String target) {
+ CLibrary libc;
+
+ if (Platform.isLinux()) {
+ libc = Native.load("c", CLibrary.class);
+ int result = libc.mount("overlay", target, "overlay", 0, "lowerdir="+String.join(":", lower)+",upperdir="+upper+",workdir="+target+"/work");
+ if (result == 0) {
+ System.out.println("Device mounted successfully.");
+ } else {
+ System.out.println("Device mount failed.");
+ }
+ } else {
+ System.out.println("Platform not supported.");
+ System.out.println("mount -t overlay overlay -o lowerdir="+String.join(":", lower)+",upperdir="+upper+",workdir="+target+"/work "+target);
+ }
+ }
+}