summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xapplication/controllers/EventController.php2
-rwxr-xr-xapplication/forms/EventEdit.php6
-rwxr-xr-xgearman/controllerWorker.jarbin938257 -> 939167 bytes
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/BootWorker.java125
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/ControllerWorkerMain.java14
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/PoolctrlRequest.java5
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/ShutdownWorker.java117
7 files changed, 148 insertions, 121 deletions
diff --git a/application/controllers/EventController.php b/application/controllers/EventController.php
index bdd1ec1..4055e93 100755
--- a/application/controllers/EventController.php
+++ b/application/controllers/EventController.php
@@ -481,7 +481,7 @@ class EventController extends Zend_Controller_Action
}
$result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
$shutdownCategory = $result[0];
- if($newEvent->getCategory() != $shutdownCategory->getID()) {
+ if($event->getCategory() != $shutdownCategory->getID()) {
$diff = $this->eventMapper->compare($oldEvent, $event);
if(isset($diff['pbs_bootosID']) || isset($diff['title']) || isset($diff['pbs_configID'])) {
$bootmenuApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['deletebootmenu'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', "bootmenuid=" . $oldEvent->getPbs_bootmenuID());
diff --git a/application/forms/EventEdit.php b/application/forms/EventEdit.php
index 6866dd2..00c3f9a 100755
--- a/application/forms/EventEdit.php
+++ b/application/forms/EventEdit.php
@@ -112,7 +112,9 @@ class Application_Form_EventEdit extends Zend_Form
}
$eventcategoryfield->setRegisterInArrayValidator(false);
- $eventcategoryfield->setValue($this->params['category']);
+ if(isset($this->params['category'])) {
+ $eventcategoryfield->setValue($this->params['category']);
+ }
$eventcategoryfield->setAttrib("disabled", true);
$eventcategoryfield->setAttrib('onchange', "editeventcategoryfieldChanged('category');");
$this->addElement($eventcategoryfield);
@@ -153,7 +155,7 @@ class Application_Form_EventEdit extends Zend_Form
'value' => date ('m/d/Y h:i a', strtotime( $this->params['end'])),
));
$this->getElement('end')->addPrefixPath('Poolctrl_Validate', 'Poolctrl/Validator/', 'validate');
- } else if($this->params['categoryLabel'] != "Boot" && $this->params['categoryLabel'] != "Shutdown") {
+ } else if(isset($this->params['categoryLabel']) && $this->params['categoryLabel'] != "Boot" && $this->params['categoryLabel'] != "Shutdown") {
$this->addElement('text', 'end', array(
'filters' => array('StringTrim'),
'validators' => array(
diff --git a/gearman/controllerWorker.jar b/gearman/controllerWorker.jar
index c25c95a..8b4a3bd 100755
--- a/gearman/controllerWorker.jar
+++ b/gearman/controllerWorker.jar
Binary files differ
diff --git a/gearman/controllerWorker/ControllerWorker/BootWorker.java b/gearman/controllerWorker/ControllerWorker/BootWorker.java
index a9c538b..afcf9d6 100755
--- a/gearman/controllerWorker/ControllerWorker/BootWorker.java
+++ b/gearman/controllerWorker/ControllerWorker/BootWorker.java
@@ -34,69 +34,86 @@ public class BootWorker extends AbstractGearmanFunction {
String data = ByteUtils.fromUTF8Bytes((byte[]) this.data);
Vector<Client> clients = new Vector<Client>();
JSONObject jsonObject = (JSONObject) JSONValue.parse(data);
- String event = jsonObject.get("eventName").toString();
- String eventOS = jsonObject.get("eventOS").toString();
- JSONArray jsonClients = (JSONArray) jsonObject.get("clients");
-
- for (Object clientObj : jsonClients) {
- JSONObject clientJsonObj = (JSONObject) clientObj;
- Client client = new Client(clientJsonObj, "boot", event);
- clients.add(client);
+ String event = "";
+ if (jsonObject.get("eventName") != null) {
+ event = jsonObject.get("eventName").toString();
}
-
- String gearmanServerHost = ControllerWorkerMain.getApplication_ini()
- .getString("gearman.server.host");
- int gearmanServerPort = Integer.parseInt(ControllerWorkerMain
- .getApplication_ini().getString("gearman.server.port"));
- long waitTime = Long.parseLong(ControllerWorkerMain.getApplication_ini()
- .getString("gearman.worker.waitTime"));
- long scsavTime = Integer.parseInt(ControllerWorkerMain.getApplication_ini()
- .getString("gearman.worker.scsavTime"));
- int updateRate = Integer.parseInt(ControllerWorkerMain.getApplication_ini()
- .getString("gearman.worker.updateRate"));
- String blacklist = ControllerWorkerMain.getApplication_ini().getString(
- "gearman.worker.ps.blacklist");
- StringTokenizer blacklistTokenizer = new StringTokenizer(blacklist, ", ");
- String whitelist = ControllerWorkerMain.getApplication_ini().getString(
- "gearman.worker.ps.whitelist");
- StringTokenizer whitelistTokenizer = new StringTokenizer(whitelist, ", ");
- Vector<String> psWhitelist = new Vector<String>();
- Vector<String> psBlacklist = new Vector<String>();
- while (whitelistTokenizer.hasMoreTokens()) {
- String whiteEntry = whitelistTokenizer.nextToken();
- psWhitelist.add(whiteEntry);
+ String eventOS = "";
+ if (jsonObject.get("eventOS") != null) {
+ eventOS = jsonObject.get("eventOS").toString();
}
- while (blacklistTokenizer.hasMoreTokens()) {
- String blackEntry = blacklistTokenizer.nextToken();
- psBlacklist.add(blackEntry);
+ JSONArray jsonClients = new JSONArray();
+ if (jsonObject.get("clients") != null) {
+ jsonClients = (JSONArray) jsonObject.get("clients");
}
+ String res;
+ if (!event.isEmpty() && !eventOS.isEmpty() && !jsonClients.isEmpty()) {
+ for (Object clientObj : jsonClients) {
+ JSONObject clientJsonObj = (JSONObject) clientObj;
+ Client client = new Client(clientJsonObj, "boot", event);
+ clients.add(client);
+ }
- Boot boot = new Boot(event, clients, eventOS, updateRate, waitTime,
- scsavTime, psWhitelist, psBlacklist, gearmanServerHost,
- gearmanServerPort);
- GearmanJobServerConnection gearmanConnection = new GearmanNIOJobServerConnection(
- gearmanServerHost, gearmanServerPort);
- GearmanClient gearmanClient = new GearmanClientImpl();
- gearmanClient.addJobServer(gearmanConnection);
- LinkedHashMap<String, Object> jsonData = new LinkedHashMap<String, Object>();
- jsonData.put("eventName", event);
- jsonData.put("type", "createBootState");
- jsonData.put("eventOS", eventOS);
- jsonData.put("clients", jsonClients);
- String dataString = JSONValue.toJSONString(jsonData);
- GearmanJob job = GearmanJobImpl.createJob("status", dataString.getBytes(),
- "status" + event);
- gearmanClient.submit(job);
- boot.start();
- logger.info("Booting of " + event + " started");
- String res = "Booting started";
+ String gearmanServerHost = ControllerWorkerMain
+ .getApplication_ini().getString("gearman.server.host");
+ int gearmanServerPort = Integer.parseInt(ControllerWorkerMain
+ .getApplication_ini().getString("gearman.server.port"));
+ long waitTime = Long.parseLong(ControllerWorkerMain
+ .getApplication_ini().getString("gearman.worker.waitTime"));
+ long scsavTime = Integer
+ .parseInt(ControllerWorkerMain.getApplication_ini()
+ .getString("gearman.worker.scsavTime"));
+ int updateRate = Integer.parseInt(ControllerWorkerMain
+ .getApplication_ini()
+ .getString("gearman.worker.updateRate"));
+ String blacklist = ControllerWorkerMain.getApplication_ini()
+ .getString("gearman.worker.ps.blacklist");
+ StringTokenizer blacklistTokenizer = new StringTokenizer(blacklist,
+ ", ");
+ String whitelist = ControllerWorkerMain.getApplication_ini()
+ .getString("gearman.worker.ps.whitelist");
+ StringTokenizer whitelistTokenizer = new StringTokenizer(whitelist,
+ ", ");
+ Vector<String> psWhitelist = new Vector<String>();
+ Vector<String> psBlacklist = new Vector<String>();
+ while (whitelistTokenizer.hasMoreTokens()) {
+ String whiteEntry = whitelistTokenizer.nextToken();
+ psWhitelist.add(whiteEntry);
+ }
+ while (blacklistTokenizer.hasMoreTokens()) {
+ String blackEntry = blacklistTokenizer.nextToken();
+ psBlacklist.add(blackEntry);
+ }
+
+ Boot boot = new Boot(event, clients, eventOS, updateRate, waitTime,
+ scsavTime, psWhitelist, psBlacklist, gearmanServerHost,
+ gearmanServerPort);
+ GearmanJobServerConnection gearmanConnection = new GearmanNIOJobServerConnection(
+ gearmanServerHost, gearmanServerPort);
+ GearmanClient gearmanClient = new GearmanClientImpl();
+ gearmanClient.addJobServer(gearmanConnection);
+ LinkedHashMap<String, Object> jsonData = new LinkedHashMap<String, Object>();
+ jsonData.put("eventName", event);
+ jsonData.put("type", "createBootState");
+ jsonData.put("eventOS", eventOS);
+ jsonData.put("clients", jsonClients);
+ String dataString = JSONValue.toJSONString(jsonData);
+ GearmanJob job = GearmanJobImpl.createJob("status", dataString
+ .getBytes(), "status" + event);
+ gearmanClient.submit(job);
+ boot.start();
+ logger.info("Booting of " + event + " started");
+ res = "Booting started";
+ } else {
+ res = "Parameters incomplete";
+ }
byte[] warnings = new byte[0];
byte[] exceptions = new byte[0];
int numerator = 0;
int denominator = 0;
- GearmanJobResult gjr = new GearmanJobResultImpl(this.jobHandle, true, res
- .getBytes(), warnings, exceptions, numerator, denominator);
+ GearmanJobResult gjr = new GearmanJobResultImpl(this.jobHandle, true,
+ res.getBytes(), warnings, exceptions, numerator, denominator);
return gjr;
}
} \ No newline at end of file
diff --git a/gearman/controllerWorker/ControllerWorker/ControllerWorkerMain.java b/gearman/controllerWorker/ControllerWorker/ControllerWorkerMain.java
index 83a4068..44fe78e 100755
--- a/gearman/controllerWorker/ControllerWorker/ControllerWorkerMain.java
+++ b/gearman/controllerWorker/ControllerWorker/ControllerWorkerMain.java
@@ -4,11 +4,6 @@ import java.io.FileInputStream;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
-import org.gearman.common.GearmanJobServerConnection;
-import org.gearman.common.GearmanNIOJobServerConnection;
-import org.gearman.worker.GearmanWorker;
-import org.gearman.worker.GearmanWorkerImpl;
-
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
@@ -49,17 +44,8 @@ public class ControllerWorkerMain {
} catch (Exception e) {
logger.error(e.toString());
}
- final GearmanJobServerConnection connection = new GearmanNIOJobServerConnection(
- "127.0.0.1", 4730);
- GearmanWorker worker = new GearmanWorkerImpl();
- worker.registerFunction(SomePingWorker.class);
- worker.registerFunction(BootWorker.class);
- worker.registerFunction(ShutdownWorker.class);
- worker.registerFunction(StatusWorker.class);
- worker.addServer(connection);
PoolctrlRequest poolctrlRequest = new PoolctrlRequest();
poolctrlRequest.start();
- worker.work();
} else {
/**
* keine Übergabeparameter vorhanden
diff --git a/gearman/controllerWorker/ControllerWorker/PoolctrlRequest.java b/gearman/controllerWorker/ControllerWorker/PoolctrlRequest.java
index 0aa003c..a29884b 100755
--- a/gearman/controllerWorker/ControllerWorker/PoolctrlRequest.java
+++ b/gearman/controllerWorker/ControllerWorker/PoolctrlRequest.java
@@ -12,8 +12,10 @@ public class PoolctrlRequest extends Thread {
private URL runURL;
private URL reportURL;
private final long updatePeriod;
+ private Worker worker;
public PoolctrlRequest() {
+ worker = new Worker();
logger = ControllerWorkerMain.getLogger();
updatePeriod = Long.parseLong(ControllerWorkerMain.getApplication_ini()
.getString("event.updatePeriod")) * 60L * 1000000000L; // nanoseconds
@@ -38,6 +40,9 @@ public class PoolctrlRequest extends Thread {
}
public void workerLoop() {
+ if (!worker.isRunning()) {
+ worker.start();
+ }
long beginTime;
long timeTaken;
long timeLeft;
diff --git a/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java b/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java
index d4b50fe..b027ce2 100755
--- a/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java
+++ b/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java
@@ -34,59 +34,76 @@ public class ShutdownWorker extends AbstractGearmanFunction {
String data = ByteUtils.fromUTF8Bytes((byte[]) this.data);
Vector<Client> clients = new Vector<Client>();
JSONObject jsonObject = (JSONObject) JSONValue.parse(data);
- String event = jsonObject.get("eventName").toString();
- JSONArray jsonClients = (JSONArray) jsonObject.get("clients");
-
- for (Object clientObj : jsonClients) {
- JSONObject clientJsonObj = (JSONObject) clientObj;
- Client client = new Client(clientJsonObj, "shutdown", event);
- clients.add(client);
- }
-
- String gearmanServerHost = ControllerWorkerMain.getApplication_ini()
- .getString("gearman.server.host");
- int gearmanServerPort = Integer.parseInt(ControllerWorkerMain
- .getApplication_ini().getString("gearman.server.port"));
- long waitTime = Long.parseLong(ControllerWorkerMain
- .getApplication_ini().getString("gearman.worker.waitTime"));
- long scsavTime = Integer.parseInt(ControllerWorkerMain
- .getApplication_ini().getString("gearman.worker.scsavTime"));
- int updateRate = Integer.parseInt(ControllerWorkerMain
- .getApplication_ini().getString("gearman.worker.updateRate"));
- String blacklist = ControllerWorkerMain.getApplication_ini().getString(
- "gearman.worker.ps.blacklist");
- StringTokenizer blacklistTokenizer = new StringTokenizer(blacklist, ", ");
- String whitelist = ControllerWorkerMain.getApplication_ini().getString(
- "gearman.worker.ps.whitelist");
- StringTokenizer whitelistTokenizer = new StringTokenizer(whitelist, ", ");
- Vector<String> psWhitelist = new Vector<String>();
- Vector<String> psBlacklist = new Vector<String>();
- while (whitelistTokenizer.hasMoreTokens()) {
- String whiteEntry = whitelistTokenizer.nextToken();
- psWhitelist.add(whiteEntry);
+ String event = "";
+ if (jsonObject.get("eventName") != null) {
+ event = jsonObject.get("eventName").toString();
}
- while (blacklistTokenizer.hasMoreTokens()) {
- String blackEntry = blacklistTokenizer.nextToken();
- psBlacklist.add(blackEntry);
+ JSONArray jsonClients = new JSONArray();
+ if (jsonObject.get("clients") != null) {
+ jsonClients = (JSONArray) jsonObject.get("clients");
}
- Shutdown shutdown = new Shutdown(event, clients, updateRate, waitTime, scsavTime,
- psWhitelist, psBlacklist, gearmanServerHost, gearmanServerPort);
- GearmanJobServerConnection gearmanConnection = new GearmanNIOJobServerConnection(
- gearmanServerHost, gearmanServerPort);
- GearmanClient gearmanClient = new GearmanClientImpl();
- gearmanClient.addJobServer(gearmanConnection);
- LinkedHashMap<String, Object> jsonData = new LinkedHashMap<String, Object>();
- jsonData.put("eventName", event);
- jsonData.put("type", "createShutdownState");
- jsonData.put("clients", jsonClients);
- String dataString = JSONValue.toJSONString(jsonData);
- GearmanJob job = GearmanJobImpl.createJob("status", dataString
- .getBytes(), "status" + event);
- gearmanClient.submit(job);
- shutdown.start();
- logger.info("Shutdown of " + event + " started");
- String res = "Shutdown started";
+ String res;
+ if (!event.isEmpty() && !jsonClients.isEmpty()) {
+ for (Object clientObj : jsonClients) {
+ JSONObject clientJsonObj = (JSONObject) clientObj;
+ Client client = new Client(clientJsonObj, "shutdown", event);
+ clients.add(client);
+ }
+
+ String gearmanServerHost = ControllerWorkerMain
+ .getApplication_ini().getString("gearman.server.host");
+ int gearmanServerPort = Integer.parseInt(ControllerWorkerMain
+ .getApplication_ini().getString("gearman.server.port"));
+ long waitTime = Long.parseLong(ControllerWorkerMain
+ .getApplication_ini().getString("gearman.worker.waitTime"));
+ long scsavTime = Integer
+ .parseInt(ControllerWorkerMain.getApplication_ini()
+ .getString("gearman.worker.scsavTime"));
+ int updateRate = Integer.parseInt(ControllerWorkerMain
+ .getApplication_ini()
+ .getString("gearman.worker.updateRate"));
+ String blacklist = ControllerWorkerMain.getApplication_ini()
+ .getString("gearman.worker.ps.blacklist");
+ StringTokenizer blacklistTokenizer = new StringTokenizer(blacklist,
+ ", ");
+ String whitelist = ControllerWorkerMain.getApplication_ini()
+ .getString("gearman.worker.ps.whitelist");
+ StringTokenizer whitelistTokenizer = new StringTokenizer(whitelist,
+ ", ");
+ Vector<String> psWhitelist = new Vector<String>();
+ Vector<String> psBlacklist = new Vector<String>();
+ while (whitelistTokenizer.hasMoreTokens()) {
+ String whiteEntry = whitelistTokenizer.nextToken();
+ psWhitelist.add(whiteEntry);
+ }
+ while (blacklistTokenizer.hasMoreTokens()) {
+ String blackEntry = blacklistTokenizer.nextToken();
+ psBlacklist.add(blackEntry);
+ }
+
+ Shutdown shutdown = new Shutdown(event, clients, updateRate,
+ waitTime, scsavTime, psWhitelist, psBlacklist,
+ gearmanServerHost, gearmanServerPort);
+ GearmanJobServerConnection gearmanConnection = new GearmanNIOJobServerConnection(
+ gearmanServerHost, gearmanServerPort);
+ GearmanClient gearmanClient = new GearmanClientImpl();
+ gearmanClient.addJobServer(gearmanConnection);
+ LinkedHashMap<String, Object> jsonData = new LinkedHashMap<String, Object>();
+ jsonData.put("eventName", event);
+ jsonData.put("type", "createShutdownState");
+ jsonData.put("clients", jsonClients);
+ logger.info(clients);
+ String dataString = JSONValue.toJSONString(jsonData);
+ GearmanJob job = GearmanJobImpl.createJob("status", dataString
+ .getBytes(), "status" + event);
+ gearmanClient.submit(job);
+ shutdown.start();
+ logger.info("Shutdown of " + event + " started");
+ res = "Shutdown started";
+ } else {
+ res = "Parameters incomplete";
+ }
byte[] warnings = new byte[0];
byte[] exceptions = new byte[0];