summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xapplication/controllers/EventController.php585
-rwxr-xr-xapplication/forms/EventAdd.php6
-rwxr-xr-xapplication/forms/EventEdit.php17
-rwxr-xr-xapplication/models/Event.php13
-rwxr-xr-xapplication/models/EventMapper.php40
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/Boot.java14
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/BootState.java13
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/BootWorker.java11
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/Shutdown.java18
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/ShutdownState.java12
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/ShutdownWorker.java8
-rwxr-xr-xgearman/controllerWorker/ControllerWorker/StatusWorker.java6
-rwxr-xr-xsetup/poolctrl.sql1
13 files changed, 416 insertions, 328 deletions
diff --git a/application/controllers/EventController.php b/application/controllers/EventController.php
index 2a280b3..1951fa3 100755
--- a/application/controllers/EventController.php
+++ b/application/controllers/EventController.php
@@ -278,10 +278,10 @@ class EventController extends Zend_Controller_Action
$eventCategory = $eventcategories[$event->getCategory()];
$runningtypeMapper = new Application_Model_RunningtypeMapper();
$runningtype = $runningtypeMapper->findBy(array("title" => $eventCategory));
- $event->setRunning(true);
+ $event->setRunning(1);
$event->setRunningtype($runningtype[0]->getID());
} else {
- $event->setRunning(false);
+ $event->setRunning(0);
}
$event->setCreated(time());
if($event->repeat) {
@@ -584,6 +584,7 @@ class EventController extends Zend_Controller_Action
$this->getRequest()->setParam('pbs_bootosID', $event->getPbs_bootosID());
$this->getRequest()->setParam('pbs_configID_' . $event->getPbs_bootosID(), $event->getPbs_configID());
$this->getRequest()->setParam('pbs_membershipID', $event->getPbs_membershipID());
+ $this->getRequest()->setParam('force', $event->getForce());
$params = $this->getRequest()->getParams();
$editForm = new Application_Form_EventEdit(array('eventcategorylist' => $eventcategorylist, 'bootoslist' => $bootoslist, 'configlist' => $configlist, 'poollist' => $poollist, 'repeattypelist' => $repeattypelist, 'repeatendlist' => $repeatendlist, 'oldtitle' => $event->getTitle(), 'params' => $params));
}
@@ -668,7 +669,7 @@ class EventController extends Zend_Controller_Action
$eventID = $this->getRequest()->getParam('eventID');
$date = intval(strtotime(substr($this->getRequest()->getParam('date'), 0, 24)));
$poolID = $this->getRequest()->getParam('poolID');
-
+
$events['withrepeat'] = $this->eventMapper->getDraggingEvents($eventID);
$events['withoutrepeat'] = $this->eventMapper->getDraggingEvent($eventID);
@@ -685,27 +686,19 @@ class EventController extends Zend_Controller_Action
// Check for overlap with repeat
$overlapswithrepeat = array();
$cfeventswithrepeat = array();
-
+
foreach($events['withrepeat'] as $e) {
$enewstart = strtotime($e['start']) + $diff;
$enewend = strtotime($e['end']) + $diff;
$cfv = true;
-
+
// overlap events
- foreach($allEvents as $o) {
- if($e['running'] == 0) {
- if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $e['eventID']
- || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $e['eventID']) {
- $overlapswithrepeat[] = $o;
- $cfv = false;
- }
- } else {
- if($e['start'] <= strtotime($o['start']) && $e['end'] >= strtotime($o['start']) && $o['eventID'] != $e['eventID']
- || $e['start'] >= strtotime($o['start']) && $e['start'] <= strtotime($o['end']) && $o['eventID'] != $e['eventID']) {
+ foreach($others as $o) {
+ if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start'])
+ || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end'])) {
$overlapswithrepeat[] = $o;
$cfv = false;
- }
}
}
// conflict free events with repeat
@@ -713,30 +706,30 @@ class EventController extends Zend_Controller_Action
$cfeventswithrepeat[] = $e;
}
}
-
+
// Check for overlap without repeat
- $overlapswithoutrepeat = array();
- $cfeventswithoutrepeat = array();
- $cfv = true;
-
- foreach($events['withoutrepeat'] as $e) {
-
- $enewstart = strtotime($e['start']) + $diff;
- $enewend = strtotime($e['end']) + $diff;
-
- // overlap events
- foreach($allEvents as $o) {
- if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $eventID
- || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $eventID) {
- $overlapswithoutrepeat[] = $o;
- $cfv = false;
- }
- }
- // conflict free events without repeat
- if($cfv) {
- $cfeventswithoutrepeat[] = $e;
- }
- }
+ $overlapswithoutrepeat = array();
+ $cfeventswithoutrepeat = array();
+ $cfv = true;
+
+ foreach($events['withoutrepeat'] as $e) {
+
+ $enewstart = strtotime($e['start']) + $diff;
+ $enewend = strtotime($e['end']) + $diff;
+
+ // overlap events
+ foreach($allEvents as $o) {
+ if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $eventID
+ || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $eventID) {
+ $overlapswithoutrepeat[] = $o;
+ $cfv = false;
+ }
+ }
+ // conflict free events without repeat
+ if($cfv) {
+ $cfeventswithoutrepeat[] = $e;
+ }
+ }
$this->view->events = $events;
$this->view->others = $others;
@@ -744,113 +737,106 @@ class EventController extends Zend_Controller_Action
$this->view->cfeventswithrepeat = $cfeventswithrepeat;
$this->view->overlapswithoutrepeat = $overlapswithoutrepeat;
$this->view->cfeventswithoutrepeat = $cfeventswithoutrepeat;
-
+
}
-
+
public function checkoverlapselectAction() {
- if(!$this->acl->checkRight('eo')) {
- $this->_redirect('/');
- }
- $this->_helper->layout->disableLayout();
-
- $poolID = $this->getRequest()->getParam('poolID');
- $startDate = intval(strtotime(substr($this->getRequest()->getParam('startDate'), 0, 24)));
- $endDate = intval(strtotime(substr($this->getRequest()->getParam('endDate'), 0, 24)));
-
- $allEvents = $this->eventMapper->fetchAllasArray($poolID);
-
- $overlaps = array();
- foreach($allEvents as $e) {
- if($startDate <= strtotime($e['start']) && $endDate >= strtotime($e['start'])
- || $startDate >= strtotime($e['start']) && $startDate <= strtotime($e['end']))
- $overlaps[] = $e;
- }
-
- $this->view->overlaps = $overlaps;
- }
-
- public function checkoverlapresizeAction() {
- if(!$this->acl->checkRight('eo')) {
- $this->_redirect('/');
- }
- $this->_helper->layout->disableLayout();
-
- $poolID = $this->getRequest()->getParam('poolID');
-
- $eventID = $this->getRequest()->getParam('eventID');
- $minuteDelta = intval($this->getRequest()->getParam('minuteDelta')*60);
- $dayDelta = intval($this->getRequest()->getParam('dayDelta')*24*60*60);
- $diffDelta = intval($minuteDelta + $dayDelta);
-
- $events['withrepeat'] = $this->eventMapper->getDraggingEvents($eventID);
- $events['withoutrepeat'] = $this->eventMapper->getDraggingEvent($eventID);
-
- $others = $this->eventMapper->getNotDraggingEvents($eventID);
- $allEvents = $this->eventMapper->fetchAllasArray($poolID);
-
- // Check for overlap with repeat
- $overlapswithrepeat = array();
- $cfeventswithrepeat = array();
-
- foreach($events['withrepeat'] as $e) {
-
- $enewstart = strtotime($e['start']);
- $enewend = strtotime($e['end']) + $diffDelta;
- $cfv = true;
- // overlap events
- foreach($allEvents as $o) {
- if($e['running'] == 0) {
- if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $e['eventID']
- || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $e['eventID']) {
- $overlapswithrepeat[] = $o;
- $cfv = false;
- }
- } else {
- if($e['start'] <= strtotime($o['start']) && $e['end'] >= strtotime($o['start']) && $o['eventID'] != $e['eventID']
- || $e['start'] >= strtotime($o['start']) && $e['start'] <= strtotime($o['end']) && $o['eventID'] != $e['eventID']) {
- $overlapswithrepeat[] = $o;
- $cfv = false;
- }
- }
+ if(!$this->acl->checkRight('eo')) {
+ $this->_redirect('/');
+ }
+ $this->_helper->layout->disableLayout();
+
+ $poolID = $this->getRequest()->getParam('poolID');
+ $startDate = intval(strtotime(substr($this->getRequest()->getParam('startDate'), 0, 24)));
+ $endDate = intval(strtotime(substr($this->getRequest()->getParam('endDate'), 0, 24)));
+
+ $allEvents = $this->eventMapper->fetchAllasArray($poolID);
+
+ $overlaps = array();
+ foreach($allEvents as $e) {
+ if($startDate <= strtotime($e['start']) && $endDate >= strtotime($e['start'])
+ || $startDate >= strtotime($e['start']) && $startDate <= strtotime($e['end']))
+ $overlaps[] = $e;
+ }
+
+ $this->view->overlaps = $overlaps;
+ }
+
+ public function checkoverlapresizeAction() {
+ if(!$this->acl->checkRight('eo')) {
+ $this->_redirect('/');
+ }
+ $this->_helper->layout->disableLayout();
+
+ $poolID = $this->getRequest()->getParam('poolID');
+
+ $eventID = $this->getRequest()->getParam('eventID');
+ $minuteDelta = intval($this->getRequest()->getParam('minuteDelta')*60);
+ $dayDelta = intval($this->getRequest()->getParam('dayDelta')*24*60*60);
+ $diffDelta = intval($minuteDelta + $dayDelta);
+
+ $events['withrepeat'] = $this->eventMapper->getDraggingEvents($eventID);
+ $events['withoutrepeat'] = $this->eventMapper->getDraggingEvent($eventID);
+
+ $others = $this->eventMapper->getNotDraggingEvents($eventID);
+ $allEvents = $this->eventMapper->fetchAllasArray($poolID);
+
+ // Check for overlap with repeat
+ $overlapswithrepeat = array();
+ $cfeventswithrepeat = array();
+
+ foreach($events['withrepeat'] as $e) {
+
+ $enewstart = strtotime($e['start']);
+ $enewend = strtotime($e['end']) + $diffDelta;
+ $cfv = true;
+
+ // overlap events
+ foreach($allEvents as $o) {
+ if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $e['eventID'] && $o['eventID'] != $eventID
+ || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $e['eventID'] && $o['eventID'] != $eventID) {
+ $overlapswithrepeat[] = $o;
+ $cfv = false;
+ }
+ }
+ // conflict free events with repeat
+ if($cfv) {
+ $cfeventswithrepeat[] = $e;
+ }
+ }
+
+ // Check for overlap without repeat
+ $overlapswithoutrepeat = array();
+ $cfeventswithoutrepeat = array();
+
+ foreach($events['withoutrepeat'] as $e) {
+
+ $enewstart = strtotime($e['start']);
+ $enewend = strtotime($e['end']) + $diffDelta;
+ $cfv = true;
+
+ // overlap events
+ foreach($allEvents as $o) {
+ if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $eventID
+ || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $eventID) {
+ $overlapswithoutrepeat[] = $o;
+ $cfv = false;
+ }
+ }
+ // conflict free events without repeat
+ if($cfv) {
+ $cfeventswithoutrepeat[] = $e;
+ }
+ }
+
+ $this->view->events = $events;
+ $this->view->others = $others;
+ $this->view->overlapswithrepeat = $overlapswithrepeat;
+ $this->view->cfeventswithrepeat = $cfeventswithrepeat;
+ $this->view->overlapswithoutrepeat = $overlapswithoutrepeat;
+ $this->view->cfeventswithoutrepeat = $cfeventswithoutrepeat;
+
}
- // conflict free events with repeat
- if($cfv) {
- $cfeventswithrepeat[] = $e;
- }
- }
-
- // Check for overlap without repeat
- $overlapswithoutrepeat = array();
- $cfeventswithoutrepeat = array();
-
- foreach($events['withoutrepeat'] as $e) {
-
- $enewstart = strtotime($e['start']);
- $enewend = strtotime($e['end']) + $diffDelta;
- $cfv = true;
-
- // overlap events
- foreach($allEvents as $o) {
- if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $eventID
- || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $eventID) {
- $overlapswithoutrepeat[] = $o;
- $cfv = false;
- }
- }
- // conflict free events without repeat
- if($cfv) {
- $cfeventswithoutrepeat[] = $e;
- }
- }
-
- $this->view->events = $events;
- $this->view->others = $others;
- $this->view->overlapswithrepeat = $overlapswithrepeat;
- $this->view->cfeventswithrepeat = $cfeventswithrepeat;
- $this->view->overlapswithoutrepeat = $overlapswithoutrepeat;
- $this->view->cfeventswithoutrepeat = $cfeventswithoutrepeat;
-
- }
public function eventmoveAction() {
if(!$this->acl->checkRight('eo')) {
@@ -968,49 +954,49 @@ class EventController extends Zend_Controller_Action
try {
foreach($events as $event) {
if($event->getRunning() == 0) {
- //1min = 60sec, 1d = 86400sec
- $oldStartTime = date('H:i', strtotime($event->getStart()));
- $oldStartDate = date('d.m.Y', strtotime($event->getStart()));
- $evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400);
- $newStartTime = date('H:i', $evstartTime);
- $newStartDate = date('d.m.Y', $evstartTime);
- $eventStart = date('Y-m-d H:i:s', $evstartTime);
- $event->setStart($eventStart);
- if($event->getEnd()) {
- $oldEndTime = date('H:i', strtotime($event->getEnd()));
- $oldEndDate = date('d.m.Y', strtotime($event->getEnd()));
- $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60) + intval($evdaydelta*86400);
- $newEndTime = date('H:i', $evendTime);
- $newEndDate = date('d.m.Y', $evendTime);
- $eventEnd = date('Y-m-d H:i:s', $evendTime);
- $event->setEnd($eventEnd);
- }
- $event->setPbs_poolID($poolID);
- $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
- $shutdownCategory = $result[0];
- if($event->getCategory() != $shutdownCategory->getID()) {
- if($event->getPbs_filterID()) {
- if($event->getRepeat()) {
- $repeattypeMapper = new Application_Model_RepeattypeMapper();
- $repeattype = new Application_Model_Repeattype();
- $repeattypeMapper->find($event->getRepeattype(), $repeattype);
- if($repeattype == "Once a week") {
- $oldStartDate = date("N", strototime($oldStartDate));
- $oldEndDate = '';
- $newStartDate = date("N", strototime($newStartDate));
- $newEndDate = '';
+ //1min = 60sec, 1d = 86400sec
+ $oldStartTime = date('H:i', strtotime($event->getStart()));
+ $oldStartDate = date('d.m.Y', strtotime($event->getStart()));
+ $evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400);
+ $newStartTime = date('H:i', $evstartTime);
+ $newStartDate = date('d.m.Y', $evstartTime);
+ $eventStart = date('Y-m-d H:i:s', $evstartTime);
+ $event->setStart($eventStart);
+ if($event->getEnd()) {
+ $oldEndTime = date('H:i', strtotime($event->getEnd()));
+ $oldEndDate = date('d.m.Y', strtotime($event->getEnd()));
+ $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60) + intval($evdaydelta*86400);
+ $newEndTime = date('H:i', $evendTime);
+ $newEndDate = date('d.m.Y', $evendTime);
+ $eventEnd = date('Y-m-d H:i:s', $evendTime);
+ $event->setEnd($eventEnd);
+ }
+ $event->setPbs_poolID($poolID);
+ $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
+ $shutdownCategory = $result[0];
+ if($event->getCategory() != $shutdownCategory->getID()) {
+ if($event->getPbs_filterID()) {
+ if($event->getRepeat()) {
+ $repeattypeMapper = new Application_Model_RepeattypeMapper();
+ $repeattype = new Application_Model_Repeattype();
+ $repeattypeMapper->find($event->getRepeattype(), $repeattype);
+ if($repeattype == "Once a week") {
+ $oldStartDate = date("N", strototime($oldStartDate));
+ $oldEndDate = '';
+ $newStartDate = date("N", strototime($newStartDate));
+ $newEndDate = '';
+ }
}
+ $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . strtotime($oldStartDate) . "&oldvalue2=" . strtotime($oldEndDate) . "&value1=" . strtotime($newStartDate) . "&value2=" . strtotime($newEndDate);
+ $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
+ unset($filterApiResult);
+ $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime;
+ $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
+ unset($filterApiResult);
}
- $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . strtotime($oldStartDate) . "&oldvalue2=" . strtotime($oldEndDate) . "&value1=" . strtotime($newStartDate) . "&value2=" . strtotime($newEndDate);
- $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
- unset($filterApiResult);
- $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime;
- $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
- unset($filterApiResult);
}
+ $this->eventMapper->save($event); //save the event with the new data
}
- $this->eventMapper->save($event); //save the event with the new data
- }
}
} catch (Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "<br/>";
@@ -1023,91 +1009,91 @@ class EventController extends Zend_Controller_Action
return;
}
}
-
+
public function eventmovecfAction() {
- if(!$this->acl->checkRight('eo')) {
- $this->_redirect('/');
- }
- $this->_helper->layout->disableLayout();
- $this->_helper->viewRenderer->setNoRender();
-
- $cfevents = $this->getRequest()->getParam('cfevents');
- $evmindelta = $this->getRequest()->getParam('evmindelta');
- $evdaydelta = $this->getRequest()->getParam('evdaydelta');
- $poolID = $this->getRequest()->getParam('poolID');
-
- $eventsArray = (array) $cfevents;
-
- //$event = new Application_Model_Event($cfevents);
-
- var_dump($eventsArray);
-
- //print_r($cfevents['eventID']);
-
- /*if ($cfevents!=null) {
-
- $events = $this->eventMapper->findBy(array("eventID" => $cfevents['eventID']));
- if ($events[0]->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) {
- if (!$this->acl->checkRight('edo')) {
- $this->_redirect('/');
- }
- }
- try {
- foreach($events as $event) {
- //1min = 60sec, 1d = 86400sec
- $oldStartTime = date('H:i', strtotime($event->getStart()));
- $oldStartDate = date('d.m.Y', strtotime($event->getStart()));
- $evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400);
- $newStartTime = date('H:i', $evstartTime);
- $newStartDate = date('d.m.Y', $evstartTime);
- $eventStart = date('Y-m-d H:i:s', $evstartTime);
- $event->setStart($eventStart);
- if($event->getEnd()) {
- $oldEndTime = date('H:i', strtotime($event->getEnd()));
- $oldEndDate = date('d.m.Y', strtotime($event->getEnd()));
- $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60) + intval($evdaydelta*86400);
- $newEndTime = date('H:i', $evendTime);
- $newEndDate = date('d.m.Y', $evendTime);
- $eventEnd = date('Y-m-d H:i:s', $evendTime);
- $event->setEnd($eventEnd);
- }
- $event->setPbs_poolID($poolID);
- $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
- $shutdownCategory = $result[0];
- if($event->getCategory() != $shutdownCategory->getID()) {
- if($event->getPbs_filterID()) {
- if($event->getRepeat()) {
- $repeattypeMapper = new Application_Model_RepeattypeMapper();
- $repeattype = new Application_Model_Repeattype();
- $repeattypeMapper->find($event->getRepeattype(), $repeattype);
- if($repeattype == "Once a week") {
- $oldStartDate = date("N", strototime($oldStartDate));
- $oldEndDate = '';
- $newStartDate = date("N", strototime($newStartDate));
- $newEndDate = '';
- }
- }
- $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . strtotime($oldStartDate) . "&oldvalue2=" . strtotime($oldEndDate) . "&value1=" . strtotime($newStartDate) . "&value2=" . strtotime($newEndDate);
- $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
- unset($filterApiResult);
- $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime;
- $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
- unset($filterApiResult);
- }
- }
- $this->eventMapper->save($event); //save the event with the new data
- }
- } catch (Zend_Exception $e) {
- echo "Caught exception: " . get_class($e) . "<br/>";
- echo "Message: " . $e->getMessage() . "<br/>";
- return;
- }
- $this->_redirect('/event/');
- } else {
- $this->_redirect('/event/');
- return;
- }*/
- }
+ if(!$this->acl->checkRight('eo')) {
+ $this->_redirect('/');
+ }
+ $this->_helper->layout->disableLayout();
+ $this->_helper->viewRenderer->setNoRender();
+
+ $cfevents = $this->getRequest()->getParam('cfevents');
+ $evmindelta = $this->getRequest()->getParam('evmindelta');
+ $evdaydelta = $this->getRequest()->getParam('evdaydelta');
+ $poolID = $this->getRequest()->getParam('poolID');
+
+ $eventsArray = (array) $cfevents;
+
+ //$event = new Application_Model_Event($cfevents);
+
+ var_dump($eventsArray);
+
+ //print_r($cfevents['eventID']);
+
+ /*if ($cfevents!=null) {
+
+ $events = $this->eventMapper->findBy(array("eventID" => $cfevents['eventID']));
+ if ($events[0]->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) {
+ if (!$this->acl->checkRight('edo')) {
+ $this->_redirect('/');
+ }
+ }
+ try {
+ foreach($events as $event) {
+ //1min = 60sec, 1d = 86400sec
+ $oldStartTime = date('H:i', strtotime($event->getStart()));
+ $oldStartDate = date('d.m.Y', strtotime($event->getStart()));
+ $evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400);
+ $newStartTime = date('H:i', $evstartTime);
+ $newStartDate = date('d.m.Y', $evstartTime);
+ $eventStart = date('Y-m-d H:i:s', $evstartTime);
+ $event->setStart($eventStart);
+ if($event->getEnd()) {
+ $oldEndTime = date('H:i', strtotime($event->getEnd()));
+ $oldEndDate = date('d.m.Y', strtotime($event->getEnd()));
+ $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60) + intval($evdaydelta*86400);
+ $newEndTime = date('H:i', $evendTime);
+ $newEndDate = date('d.m.Y', $evendTime);
+ $eventEnd = date('Y-m-d H:i:s', $evendTime);
+ $event->setEnd($eventEnd);
+ }
+ $event->setPbs_poolID($poolID);
+ $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
+ $shutdownCategory = $result[0];
+ if($event->getCategory() != $shutdownCategory->getID()) {
+ if($event->getPbs_filterID()) {
+ if($event->getRepeat()) {
+ $repeattypeMapper = new Application_Model_RepeattypeMapper();
+ $repeattype = new Application_Model_Repeattype();
+ $repeattypeMapper->find($event->getRepeattype(), $repeattype);
+ if($repeattype == "Once a week") {
+ $oldStartDate = date("N", strototime($oldStartDate));
+ $oldEndDate = '';
+ $newStartDate = date("N", strototime($newStartDate));
+ $newEndDate = '';
+ }
+ }
+ $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . strtotime($oldStartDate) . "&oldvalue2=" . strtotime($oldEndDate) . "&value1=" . strtotime($newStartDate) . "&value2=" . strtotime($newEndDate);
+ $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
+ unset($filterApiResult);
+ $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime;
+ $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
+ unset($filterApiResult);
+ }
+ }
+ $this->eventMapper->save($event); //save the event with the new data
+ }
+ } catch (Zend_Exception $e) {
+ echo "Caught exception: " . get_class($e) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ return;
+ }
+ $this->_redirect('/event/');
+ } else {
+ $this->_redirect('/event/');
+ return;
+ }*/
+ }
public function eventresizeAction() {
if(!$this->acl->checkRight('eo')) {
@@ -1208,20 +1194,20 @@ class EventController extends Zend_Controller_Action
try {
foreach($events as $event) {
if($event->getRunning() == 0) {
- $eventEnd = date('Y-m-d H:i:s', intval(strtotime($event->getEnd())) + intval($evmindelta*60));
- $event->setEnd($eventEnd);
- $event->setPbs_poolID($poolID);
- $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
- $shutdownCategory = $result[0];
- if($event->getCategory() != $shutdownCategory->getID()) {
- if($event->getPbs_filterID()) {
- $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime;
- $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
- unset($filterApiResult);
+ $eventEnd = date('Y-m-d H:i:s', intval(strtotime($event->getEnd())) + intval($evmindelta*60));
+ $event->setEnd($eventEnd);
+ $event->setPbs_poolID($poolID);
+ $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
+ $shutdownCategory = $result[0];
+ if($event->getCategory() != $shutdownCategory->getID()) {
+ if($event->getPbs_filterID()) {
+ $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime;
+ $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
+ unset($filterApiResult);
+ }
}
+ $this->eventMapper->save($event); //save the event with the new data
}
- $this->eventMapper->save($event); //save the event with the new data
- }
}
} catch (Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "<br/>";
@@ -1401,6 +1387,11 @@ class EventController extends Zend_Controller_Action
$data = array(
'eventName' => $event->getTitle(),
);
+ if($event->getForce()) {
+ $data['force'] = true;
+ } else {
+ $data['force'] = false;
+ }
$poolRequest = "poolid=" . $event->getPbs_poolID();
$this->config['pbs2']['getpools'];
$poolApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getpools'] . $apikey, 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $poolRequest);
@@ -1470,7 +1461,7 @@ class EventController extends Zend_Controller_Action
$results[$event->getTitle()] = $result;
$result = $runningtypeMapper->findBy(array("title" => "boot"));
$runningtypeBoot = $result[0];
- $event->setRunning(true);
+ $event->setRunning(1);
$event->setRunningtype($runningtypeBoot->getID());
try {
$this->eventMapper->save($event);
@@ -1491,7 +1482,7 @@ class EventController extends Zend_Controller_Action
$results[$event->getTitle()] = $result;
$result = $runningtypeMapper->findBy(array("title" => "shutdown"));
$runningtypeShutdown = $result[0];
- $event->setRunning(true);
+ $event->setRunning(1);
$event->setRunningtype($runningtypeShutdown->getID());
try {
$this->eventMapper->save($event);
@@ -1566,7 +1557,7 @@ class EventController extends Zend_Controller_Action
if($eventResult->$resultShortcutName == "not finished") {
continue;
} else if($eventResult->$resultShortcutName == 'not founded') {
- $event->setRunning(false);
+ $event->setRunning(0);
$event->setRunningtype(null);
try {
$this->eventMapper->save($event);
@@ -1586,6 +1577,9 @@ class EventController extends Zend_Controller_Action
$eventreport->setCreated(time());
if($eventResult->$resultShortcutName == "failed") {
$eventreport->setErrors(json_encode($eventResult->$errorsName));
+ $event->setRunning(3);
+ } else {
+ $event->setRunning(2);
}
$eventreport->setType($runningtypeBoot->getID());
try {
@@ -1596,7 +1590,6 @@ class EventController extends Zend_Controller_Action
echo "Message: " . $e->getMessage() . "<br/>";
return;
}
- $event->setRunning(false);
$event->setRunningtype(null);
try {
$this->eventMapper->save($event);
@@ -1630,7 +1623,7 @@ class EventController extends Zend_Controller_Action
if($eventResult->$resultShortcutName == "not finished") {
continue;
} else if($eventResult->$resultShortcutName == 'not founded') {
- $event->setRunning(false);
+ $event->setRunning(0);
$event->setRunningtype(null);
try {
$this->eventMapper->save($event);
@@ -1650,6 +1643,9 @@ class EventController extends Zend_Controller_Action
$eventreport->setCreated(time());
if($eventResult->$resultShortcutName == "failed") {
$eventreport->setErrors(json_encode($eventResult->$errorsName));
+ $event->setRunning(3);
+ } else {
+ $event->setRunning(2);
}
$eventreport->setType($runningtypeShutdown->getID());
try {
@@ -1660,7 +1656,7 @@ class EventController extends Zend_Controller_Action
echo "Message: " . $e->getMessage() . "<br/>";
return;
}
- $event->setRunning(false);
+
$event->setRunningtype(null);
try {
$this->eventMapper->save($event);
@@ -1774,6 +1770,11 @@ class EventController extends Zend_Controller_Action
$data = array(
'eventName' => $event->getTitle(),
);
+ if($event->getForce()) {
+ $data['force'] = true;
+ } else {
+ $data['force'] = false;
+ }
$poolRequest = "poolid=" . $event->getPbs_poolID();
$this->config['pbs2']['getpools'];
$poolApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getpools'] . $apikey, 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $poolRequest);
@@ -1880,7 +1881,7 @@ class EventController extends Zend_Controller_Action
$results[$event->getTitle()] = $result;
$result = $runningtypeMapper->findBy(array("title" => "boot"));
$runningtypeBoot = $result[0];
- $event->setRunning(true);
+ $event->setRunning(1);
$event->setRunningtype($runningtypeBoot->getID());
try {
$this->eventMapper->save($event);
@@ -1901,7 +1902,7 @@ class EventController extends Zend_Controller_Action
$results[$event->getTitle()] = $result;
$result = $runningtypeMapper->findBy(array("title" => "shutdown"));
$runningtypeShutdown = $result[0];
- $event->setRunning(true);
+ $event->setRunning(1);
$event->setRunningtype($runningtypeShutdown->getID());
try {
$this->eventMapper->save($event);
@@ -1950,7 +1951,7 @@ class EventController extends Zend_Controller_Action
if($eventResult->$resultShortcutName == "not finished") {
continue;
} else if($eventResult->$resultShortcutName == 'not founded') {
- $event->setRunning(false);
+ $event->setRunning(0);
$event->setRunningtype(null);
try {
$this->eventMapper->save($event);
@@ -1967,6 +1968,9 @@ class EventController extends Zend_Controller_Action
$eventreport->setResult($eventResult->$resultShortcutName);
if($eventResult->$resultShortcutName == "failed") {
$eventreport->setErrors(json_encode($eventResult->$errorsName));
+ $event->setRunning(3);
+ } else {
+ $event->setRunning(2);
}
$eventreport->setType($runningtypeBoot->getID());
try {
@@ -1977,7 +1981,6 @@ class EventController extends Zend_Controller_Action
echo "Message: " . $e->getMessage() . "<br/>";
return;
}
- $event->setRunning(false);
$event->setRunningtype(null);
try {
$this->eventMapper->save($event);
@@ -2007,7 +2010,7 @@ class EventController extends Zend_Controller_Action
if($eventResult->$resultShortcutName == "not finished") {
continue;
} else if($eventResult->$resultShortcutName == 'not founded') {
- $event->setRunning(false);
+ $event->setRunning(0);
$event->setRunningtype(null);
try {
$this->eventMapper->save($event);
@@ -2024,6 +2027,9 @@ class EventController extends Zend_Controller_Action
$eventreport->setResult($eventResult->$resultShortcutName);
if($eventResult->$resultShortcutName == "failed") {
$eventreport->setErrors(json_encode($eventResult->$errorsName));
+ $event->setRunning(3);
+ } else {
+ $event->setRunning(2);
}
$eventreport->setType($runningtypeShutdown->getID());
try {
@@ -2034,7 +2040,6 @@ class EventController extends Zend_Controller_Action
echo "Message: " . $e->getMessage() . "<br/>";
return;
}
- $event->setRunning(false);
$event->setRunningtype(null);
try {
$this->eventMapper->save($event);
diff --git a/application/forms/EventAdd.php b/application/forms/EventAdd.php
index 864f584..0aee9e0 100755
--- a/application/forms/EventAdd.php
+++ b/application/forms/EventAdd.php
@@ -168,6 +168,12 @@ class Application_Form_EventAdd extends Zend_Form
'label' => 'Immediate Event:',
'value' => array(0,1),
));
+
+ $this->addElement('checkbox', 'force', array(
+ 'required' => false,
+ 'label' => 'Force event:',
+ 'value' => array(0,1),
+ ));
$this->addElement('text', 'start', array(
'filters' => array('StringTrim'),
diff --git a/application/forms/EventEdit.php b/application/forms/EventEdit.php
index 00c3f9a..00eb210 100755
--- a/application/forms/EventEdit.php
+++ b/application/forms/EventEdit.php
@@ -130,7 +130,22 @@ class Application_Form_EventEdit extends Zend_Form
'value' => $this->params['title'],
));
$this->getElement('title')->addPrefixPath('Poolctrl_Validate', 'Poolctrl/Validator/', 'validate');
-
+
+ if(isset($this->params['force'])) {
+ $this->addElement('checkbox', 'force', array(
+ 'required' => false,
+ 'label' => 'Force event:',
+ 'value' => array(0,1),
+ 'checked' => 'checked',
+ ));
+ } else {
+ $this->addElement('checkbox', 'force', array(
+ 'required' => false,
+ 'label' => 'Force event:',
+ 'value' => array(0,1),
+ ));
+ }
+
$this->addElement('text', 'start', array(
'filters' => array('StringTrim'),
'validators' => array(
diff --git a/application/models/Event.php b/application/models/Event.php
index d14bbb9..7170fc1 100755
--- a/application/models/Event.php
+++ b/application/models/Event.php
@@ -34,6 +34,7 @@ class Application_Model_Event
protected $_runningtype;
protected $_note;
protected $_created;
+ protected $_force;
public function __construct(array $options = null)
{
@@ -349,5 +350,15 @@ class Application_Model_Event
$this->_created = $_created;
return $this;
}
-}
+ public function getForce()
+ {
+ return $this->_force;
+ }
+
+ public function setForce($_force)
+ {
+ $this->_force = $_force;
+ return $this;
+ }
+} \ No newline at end of file
diff --git a/application/models/EventMapper.php b/application/models/EventMapper.php
index fff14fb..8bad409 100755
--- a/application/models/EventMapper.php
+++ b/application/models/EventMapper.php
@@ -85,7 +85,7 @@ class Application_Model_EventMapper
public function save(Application_Model_Event $event)
{
- $data = array('eventID'=> $event->getID() ,'category'=> $event->getCategory() ,'title'=> $event->getTitle(), 'pbs_membershipID'=> $event->getPbs_membershipID(),'end'=> $event->getEnd() ,'immediate'=> $event->getImmediate() ,'note'=> $event->getNote() ,'participants'=> $event->getParticipants() ,'pbs_bootosID'=> $event->getPbs_bootosID(),'pbs_configID'=> $event->getPbs_configID(),'pbs_poolID'=> $event->getPbs_poolID(),'repeat'=> $event->getRepeat(),'repeattype'=> $event->getRepeattype(),'repeatend'=> $event->getRepeatend(),'repeatdate'=> $event->getRepeatdate(),'repeatings'=> $event->getRepeatings(),'start'=> $event->getStart(), 'pbs_bootmenuID'=> $event->getPbs_bootmenuID(),'pbs_filterID'=> $event->getPbs_filterID(), 'running' => $event->getRunning(), 'runningtype' => $event->getRunningtype(), 'created' => $event->getCreated() );
+ $data = array('eventID'=> $event->getID() ,'category'=> $event->getCategory() ,'title'=> $event->getTitle(), 'pbs_membershipID'=> $event->getPbs_membershipID(),'end'=> $event->getEnd() ,'immediate'=> $event->getImmediate() ,'note'=> $event->getNote() ,'participants'=> $event->getParticipants() ,'pbs_bootosID'=> $event->getPbs_bootosID(),'pbs_configID'=> $event->getPbs_configID(),'pbs_poolID'=> $event->getPbs_poolID(),'repeat'=> $event->getRepeat(),'repeattype'=> $event->getRepeattype(),'repeatend'=> $event->getRepeatend(),'repeatdate'=> $event->getRepeatdate(),'repeatings'=> $event->getRepeatings(),'start'=> $event->getStart(), 'pbs_bootmenuID'=> $event->getPbs_bootmenuID(),'pbs_filterID'=> $event->getPbs_filterID(), 'running' => $event->getRunning(), 'runningtype' => $event->getRunningtype(), 'created' => $event->getCreated(), 'force' => $event->getForce() );
if (null === ($id = $event->getID()) ) {
unset($data['eventID']);
return $this->getDbTable()->insert($data);
@@ -138,7 +138,8 @@ class Application_Model_EventMapper
->setStart($row->start)
->setRunning($row->running)
->setCreated($row->created)
- ->setRunningtype($row->runningtype);
+ ->setRunningtype($row->runningtype)
+ ->setForce($row->force);
}
public function fetchAll()
@@ -171,7 +172,8 @@ class Application_Model_EventMapper
->setStart($row->start)
->setRunning($row->running)
->setCreated($row->created)
- ->setRunningtype($row->runningtype);
+ ->setRunningtype($row->runningtype)
+ ->setForce($row->force);
$entries[$row->eventID] = $entry;
}
@@ -183,19 +185,19 @@ class Application_Model_EventMapper
$vv2 = $v2->toArray();
return array_diff_assoc($vv1,$vv2);
}
-
+
public function fetchAllasArray($poolID) {
-
+
$db = Zend_Db_Table::getDefaultAdapter();
$select = $this->getDbTable()->select()
->setIntegrityCheck(false)
->from(array('pce' => 'poolctrl_event'))
->where('pce.pbs_poolID = ?', $poolID);
-
+
$stmt = $db->query($select);
- $result = $stmt->fetchAll();
-
- return $result;
+ $result = $stmt->fetchAll();
+
+ return $result;
}
public function getCategoryBarCount($poolID) {
@@ -437,19 +439,19 @@ class Application_Model_EventMapper
return $return;
}
-
- public function getDraggingEvent($eventID) {
- $db = Zend_Db_Table::getDefaultAdapter();
- $select = $this->getDbTable()->select()
- ->from(array('pce' => 'poolctrl_event'))
- ->where('pce.eventID = ?', $eventID);
- $stmt = $db->query($select);
- $return = $stmt->fetchAll();
+ public function getDraggingEvent($eventID) {
+
+ $db = Zend_Db_Table::getDefaultAdapter();
+ $select = $this->getDbTable()->select()
+ ->from(array('pce' => 'poolctrl_event'))
+ ->where('pce.eventID = ?', $eventID);
+ $stmt = $db->query($select);
+ $return = $stmt->fetchAll();
- return $return;
+ return $return;
- }
+ }
// Fetch all notDragging events
public function getNotDraggingEvents($eventID) {
diff --git a/gearman/controllerWorker/ControllerWorker/Boot.java b/gearman/controllerWorker/ControllerWorker/Boot.java
index 6731e28..594f5de 100755
--- a/gearman/controllerWorker/ControllerWorker/Boot.java
+++ b/gearman/controllerWorker/ControllerWorker/Boot.java
@@ -29,6 +29,7 @@ public class Boot extends Thread {
private static final Logger logger = ControllerWorkerMain.getLogger();
private String eventName;
+ private Boolean force;
private Vector<Client> clients;
private String bootOS;
private final int updateRate;
@@ -42,11 +43,12 @@ public class Boot extends Thread {
private Boolean finished;
private Boolean error;
- public Boot(String eventName, Vector<Client> clients, String bootOS,
- int updateRate, long waitTime, long scsavTime,
+ public Boot(String eventName, Boolean force, Vector<Client> clients,
+ String bootOS, int updateRate, long waitTime, long scsavTime,
Vector<String> psWhitelist, Vector<String> psBlacklist,
String gearmanServerAddress, int gearmanServerPort) {
this.eventName = eventName;
+ this.force = force;
this.clients = clients;
this.bootOS = bootOS;
this.waitTime = waitTime * 1000;
@@ -172,7 +174,13 @@ public class Boot extends Thread {
break;
case A_USER_IS_LOGGED_IN:
- ps(client);
+ if (force) {
+ logger.info(client.getIp() + " force is enabled");
+ // is not working
+ client.setState(ClientState.RESTART_CLIENT, gearmanClient);
+ } else {
+ ps(client);
+ }
break;
diff --git a/gearman/controllerWorker/ControllerWorker/BootState.java b/gearman/controllerWorker/ControllerWorker/BootState.java
index 91c1f7a..0026b53 100755
--- a/gearman/controllerWorker/ControllerWorker/BootState.java
+++ b/gearman/controllerWorker/ControllerWorker/BootState.java
@@ -4,13 +4,16 @@ import java.util.Vector;
public class BootState {
private String eventName;
+ private Boolean force;
private String bootOS;
private Vector<Client> clients;
private Boolean finished;
private Boolean error;
- public BootState(String eventName, Vector<Client> clients, String bootOS) {
+ public BootState(String eventName, Boolean force, Vector<Client> clients,
+ String bootOS) {
this.eventName = eventName;
+ this.force = force;
this.clients = clients;
this.bootOS = bootOS;
finished = false;
@@ -37,6 +40,14 @@ public class BootState {
return bootOS;
}
+ public Boolean getForce() {
+ return force;
+ }
+
+ public void setForce(Boolean force) {
+ this.force = force;
+ }
+
public void finish() {
this.finished = true;
}
diff --git a/gearman/controllerWorker/ControllerWorker/BootWorker.java b/gearman/controllerWorker/ControllerWorker/BootWorker.java
index afcf9d6..17b2920 100755
--- a/gearman/controllerWorker/ControllerWorker/BootWorker.java
+++ b/gearman/controllerWorker/ControllerWorker/BootWorker.java
@@ -46,6 +46,10 @@ public class BootWorker extends AbstractGearmanFunction {
if (jsonObject.get("clients") != null) {
jsonClients = (JSONArray) jsonObject.get("clients");
}
+ Boolean force = false;
+ if (jsonObject.get("force") != null) {
+ force = Boolean.valueOf(jsonObject.get("force").toString());
+ }
String res;
if (!event.isEmpty() && !eventOS.isEmpty() && !jsonClients.isEmpty()) {
for (Object clientObj : jsonClients) {
@@ -85,15 +89,16 @@ public class BootWorker extends AbstractGearmanFunction {
psBlacklist.add(blackEntry);
}
- Boot boot = new Boot(event, clients, eventOS, updateRate, waitTime,
- scsavTime, psWhitelist, psBlacklist, gearmanServerHost,
- gearmanServerPort);
+ Boot boot = new Boot(event, force, 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("force", force);
jsonData.put("type", "createBootState");
jsonData.put("eventOS", eventOS);
jsonData.put("clients", jsonClients);
diff --git a/gearman/controllerWorker/ControllerWorker/Shutdown.java b/gearman/controllerWorker/ControllerWorker/Shutdown.java
index 32413ca..68deb6c 100755
--- a/gearman/controllerWorker/ControllerWorker/Shutdown.java
+++ b/gearman/controllerWorker/ControllerWorker/Shutdown.java
@@ -29,6 +29,7 @@ public class Shutdown extends Thread {
private static final Logger logger = ControllerWorkerMain.getLogger();
private String eventName;
+ private Boolean force;
private Vector<Client> clients;
private final int updateRate;
private long waitTime;
@@ -41,11 +42,12 @@ public class Shutdown extends Thread {
private Boolean finished;
private Boolean error;
- public Shutdown(String eventName, Vector<Client> clients, int updateRate,
- long waitTime, long scsavTime, Vector<String> psWhitelist,
- Vector<String> psBlacklist, String gearmanServerAddress,
- int gearmanServerPort) {
+ public Shutdown(String eventName, Boolean force, Vector<Client> clients,
+ int updateRate, long waitTime, long scsavTime,
+ Vector<String> psWhitelist, Vector<String> psBlacklist,
+ String gearmanServerAddress, int gearmanServerPort) {
this.eventName = eventName;
+ this.force = force;
this.clients = clients;
this.updateRate = updateRate; // updates per second
this.waitTime = waitTime * 1000;
@@ -157,7 +159,13 @@ public class Shutdown extends Thread {
break;
case USER_IS_LOGGED_IN:
- ps(client);
+ if (force) {
+ logger.info(client.getIp() + " force is enabled");
+ // is not working
+ client.setState(ClientState.SHUTDOWN_CLIENT, gearmanClient);
+ } else {
+ ps(client);
+ }
break;
diff --git a/gearman/controllerWorker/ControllerWorker/ShutdownState.java b/gearman/controllerWorker/ControllerWorker/ShutdownState.java
index cf3aa8e..9accfa1 100755
--- a/gearman/controllerWorker/ControllerWorker/ShutdownState.java
+++ b/gearman/controllerWorker/ControllerWorker/ShutdownState.java
@@ -4,12 +4,14 @@ import java.util.Vector;
public class ShutdownState {
private String eventName;
+ private Boolean force;
private Vector<Client> clients;
private Boolean finished;
private Boolean error;
- public ShutdownState(String eventName, Vector<Client> clients) {
+ public ShutdownState(String eventName, Boolean force, Vector<Client> clients) {
this.eventName = eventName;
+ this.force = force;
this.clients = clients;
finished = false;
error = false;
@@ -31,6 +33,14 @@ public class ShutdownState {
return eventName;
}
+ public Boolean getForce() {
+ return force;
+ }
+
+ public void setForce(Boolean force) {
+ this.force = force;
+ }
+
public void finish() {
this.finished = true;
}
diff --git a/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java b/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java
index 39eefa8..9bea9fc 100755
--- a/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java
+++ b/gearman/controllerWorker/ControllerWorker/ShutdownWorker.java
@@ -42,7 +42,10 @@ public class ShutdownWorker extends AbstractGearmanFunction {
if (jsonObject.get("clients") != null) {
jsonClients = (JSONArray) jsonObject.get("clients");
}
-
+ Boolean force = false;
+ if (jsonObject.get("force") != null) {
+ force = Boolean.valueOf(jsonObject.get("force").toString());
+ }
String res;
if (!event.isEmpty() && !jsonClients.isEmpty()) {
for (Object clientObj : jsonClients) {
@@ -82,7 +85,7 @@ public class ShutdownWorker extends AbstractGearmanFunction {
psBlacklist.add(blackEntry);
}
- Shutdown shutdown = new Shutdown(event, clients, updateRate,
+ Shutdown shutdown = new Shutdown(event, force, clients, updateRate,
waitTime, scsavTime, psWhitelist, psBlacklist,
gearmanServerHost, gearmanServerPort);
GearmanJobServerConnection gearmanConnection = new GearmanNIOJobServerConnection(
@@ -91,6 +94,7 @@ public class ShutdownWorker extends AbstractGearmanFunction {
gearmanClient.addJobServer(gearmanConnection);
LinkedHashMap<String, Object> jsonData = new LinkedHashMap<String, Object>();
jsonData.put("eventName", event);
+ jsonData.put("force", force);
jsonData.put("type", "createShutdownState");
jsonData.put("clients", jsonClients);
String dataString = JSONValue.toJSONString(jsonData);
diff --git a/gearman/controllerWorker/ControllerWorker/StatusWorker.java b/gearman/controllerWorker/ControllerWorker/StatusWorker.java
index 4700dbe..47a4b5c 100755
--- a/gearman/controllerWorker/ControllerWorker/StatusWorker.java
+++ b/gearman/controllerWorker/ControllerWorker/StatusWorker.java
@@ -231,6 +231,7 @@ public class StatusWorker extends AbstractGearmanFunction {
private GearmanJobResult createBootState(JSONObject jsonObject) {
String event = jsonObject.get("eventName").toString();
String eventOS = jsonObject.get("eventOS").toString();
+ Boolean force = Boolean.valueOf(jsonObject.get("force").toString());
JSONArray jsonArray = (JSONArray) jsonObject.get("clients");
Vector<Client> clients = new Vector<Client>();
for (Object clientObj : jsonArray) {
@@ -238,7 +239,7 @@ public class StatusWorker extends AbstractGearmanFunction {
Client client = new Client(clientJsonObj, "boot", event);
clients.add(client);
}
- BootState boot = new BootState(event, clients, eventOS);
+ BootState boot = new BootState(event, force, clients, eventOS);
BOOTSTATES.put(event, boot);
String jsonResult = "{boot state successfully created}";
byte[] warnings = new byte[0];
@@ -253,6 +254,7 @@ public class StatusWorker extends AbstractGearmanFunction {
private GearmanJobResult createShutdownState(JSONObject jsonObject) {
String event = jsonObject.get("eventName").toString();
+ Boolean force = Boolean.valueOf(jsonObject.get("force").toString());
JSONArray jsonArray = (JSONArray) jsonObject.get("clients");
Vector<Client> clients = new Vector<Client>();
for (Object clientObj : jsonArray) {
@@ -260,7 +262,7 @@ public class StatusWorker extends AbstractGearmanFunction {
Client client = new Client(clientJsonObj, "shutdown", event);
clients.add(client);
}
- ShutdownState shutdown = new ShutdownState(event, clients);
+ ShutdownState shutdown = new ShutdownState(event, force, clients);
SHUTDOWNSTATES.put(event, shutdown);
String jsonResult = "{shutdown state successfully created}";
byte[] warnings = new byte[0];
diff --git a/setup/poolctrl.sql b/setup/poolctrl.sql
index 2df20b5..85466c7 100755
--- a/setup/poolctrl.sql
+++ b/setup/poolctrl.sql
@@ -18,6 +18,7 @@ CREATE TABLE IF NOT EXISTS `poolctrl_event` (
`pbs_configID` int(11) DEFAULT NULL,
`pbs_bootmenuID` int(11) DEFAULT NULL,
`pbs_filterID` int(11) DEFAULT NULL,
+ `force` bool NOT NULL DEFAULT false,
`repeat` bool NOT NULL DEFAULT false,
`repeattype` int(11) NULL,
`repeatend` int(11) NULL,