summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/taskmanager/tasks/Systemctl.java')
-rw-r--r--src/main/java/org/openslx/taskmanager/tasks/Systemctl.java97
1 files changed, 97 insertions, 0 deletions
diff --git a/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java b/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java
new file mode 100644
index 0000000..43df01b
--- /dev/null
+++ b/src/main/java/org/openslx/taskmanager/tasks/Systemctl.java
@@ -0,0 +1,97 @@
+package org.openslx.taskmanager.tasks;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.openslx.taskmanager.api.SystemCommandTask;
+
+import com.google.gson.annotations.Expose;
+
+public class Systemctl extends SystemCommandTask
+{
+ /**
+ * What to do: start, stop...
+ */
+ @Expose
+ private String operation;
+
+ @Expose
+ String service;
+
+ private StatusObject status = new StatusObject();
+
+ @Override
+ protected String[] initCommandLine()
+ {
+ switch ( operation ) {
+ case "start":
+ case "stop":
+ case "enable":
+ case "disable":
+ break;
+ default:
+ status.addMsg( "Unknown operation: " + operation );
+ return null;
+ }
+ switch ( service ) {
+ case "dmsd":
+ break;
+ default:
+ status.addMsg( "Unknown service: " + operation );
+ return null;
+ }
+ List<String> params = new ArrayList<>();
+ params.add( "/usr/bin/sudo" );
+ params.add( "-n" );
+ params.add( "-u" );
+ params.add( "root" );
+ params.add( "/bin/systemctl" );
+ params.add( operation );
+ params.add( service );
+ this.timeoutSeconds = 10;
+ return params.toArray( new String[ params.size() ] );
+ }
+
+ private boolean errorIfNull( String check, String message )
+ {
+ if ( check == null )
+ status.addMsg( message );
+ return check == null;
+ }
+
+ @Override
+ protected boolean processEnded( int exitCode )
+ {
+ return exitCode == 0;
+ }
+
+ @Override
+ protected void processStdOut( String line )
+ {
+ status.addMsg( line );
+ }
+
+ @Override
+ protected void processStdErr( String line )
+ {
+ status.addMsg( line );
+ }
+
+ @Override
+ protected boolean initTask()
+ {
+ this.setStatusObject( this.status );
+ return !errorIfNull( operation, "No operation given" );
+ }
+
+ class StatusObject
+ {
+ private String messages = "";
+
+ public void addMsg( String str )
+ {
+ messages = messages + "\n" + str;
+ }
+ }
+
+}