summaryrefslogtreecommitdiffstats
path: root/application
diff options
context:
space:
mode:
Diffstat (limited to 'application')
-rw-r--r--application/controllers/EventController.php116
1 files changed, 112 insertions, 4 deletions
diff --git a/application/controllers/EventController.php b/application/controllers/EventController.php
index 93819c0..7b03341 100644
--- a/application/controllers/EventController.php
+++ b/application/controllers/EventController.php
@@ -318,7 +318,11 @@ class EventController extends Zend_Controller_Action
$filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3);
$filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id);
}
- $event->setRunning(false);
+ if($params['immediate']) {
+ $this->runEvent($event);
+ } else {
+ $event->setRunning(false);
+ }
try {
$eventID = $this->eventMapper->save($event);
} catch(Zend_Exception $e)
@@ -502,7 +506,6 @@ class EventController extends Zend_Controller_Action
$filterentriesXML3 = new SimpleXMLElement($filterentriesXMLString3);
$filterentriesID3 = sprintf("%s", $filterentriesXML3->filterentry->id);
}
- $event->setRunning(false);
try {
$this->eventMapper->save($event);
} catch(Zend_Exception $e)
@@ -545,9 +548,9 @@ class EventController extends Zend_Controller_Action
*/
public function getpoollistAction() {
-
+
$this->_helper->layout->disableLayout();
-
+
$poollist = array();
$poolApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getpools'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', '');
$poolXMLString = $poolApiResult['http-body'];
@@ -1005,4 +1008,109 @@ class EventController extends Zend_Controller_Action
header('Expires: 0');
echo $resultString;
}
+
+ private function runEvent(Application_Model_Event $event) {
+ $data = array(
+ 'eventName' => $event->getTitle(),
+ 'updateRate' => $this->gearmanWorkerUpdateRate,
+ 'waitTime' => $this->gearmanWorkerWaitTime,
+ 'gearmanServerHost' => $this->gearmanServerHost,
+ 'gearmanServerPort' => $this->gearmanServerPort,
+ 'blacklist' => $this->config['gearman']['worker']['ps']['blacklist'],
+ 'whitelist' => $this->config['gearman']['worker']['ps']['whitelist'],
+ );
+ $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);
+ $poolXMLString = $poolApiResult['http-body'];
+ if(strlen($poolXMLString) > 0) {
+ $poolXML = new SimpleXMLElement($poolXMLString);
+ foreach($poolXML->poollist->pool as $pool) {
+ $clientsXML = $pool->clients;
+ foreach($clientsXML->client as $clientNew) {
+ $client = new Application_Model_Client();
+ $client->setID(sprintf("%s", $clientNew->clientID));
+ $client->setCreated(sprintf("%s", $clientNew->created));
+ $client->setGroupID(sprintf("%s", $clientNew->groupid));
+ $client->setHardwarehash(sprintf("%s", $clientNew->location));
+ $client->setIp(sprintf("%s", $clientNew->ip));
+ $client->setIp6(sprintf("%s", $clientNew->ip6));
+ $client->setMacadress(sprintf("%s", $clientNew->macadress));
+ $clientArray = array(
+ 'id' => $client->getID(),
+ 'ip' => $client->getIp(),
+ 'mac' => $client->getMacadress());
+ $clients[] = $clientArray;
+ }
+ }
+ }
+ $data['clients'] = $clients;
+ if($boot) {
+ $bootOsRequest = "bootosid=" . $event->getPbs_bootosID();
+ $bootOsApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['getbootoss'] . $apikey, 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $bootOsRequest);
+ $bootOsXMLString = $bootOsApiResult['http-body'];
+ if(strlen($bootOsXMLString) > 0) {
+ $bootOsXML = new SimpleXMLElement($bootOsXMLString);
+ foreach($bootOsXML->bootoslist->bootos as $bootosNew) {
+ $bootos = new Application_Model_BootOs();
+ $bootos->setID(sprintf("%s", $bootosNew->id));
+ $bootos->setCreated(sprintf("%s", $bootosNew->created));
+ $bootos->setDefaultkcl(sprintf("%s", $bootosNew->defaultkcl));
+ $bootos->setDescription(sprintf("%s", $bootosNew->description));
+ $bootos->setDistro(sprintf("%s", $bootosNew->distro));
+ $bootos->setDistroversion(sprintf("%s", $bootosNew->distroversion));
+ $bootos->setExpires(sprintf("%s", $bootosNew->expires));
+ $bootos->setGroupID(sprintf("%s", $bootosNew->groupid));
+ $bootos->setMembershipID(sprintf("%s", $bootosNew->membershipid));
+ $bootos->setPublic(sprintf("%s", $bootosNew->public));
+ $bootos->setShare(sprintf("%s", $bootosNew->share));
+ $bootos->setShortname(sprintf("%s", $bootosNew->shortname));
+ $bootos->setSource(sprintf("%s", $bootosNew->source));
+ $bootos->setTitle(sprintf("%s", $bootosNew->title));
+ }
+ $data['eventOS'] = $bootos->getTitle();
+ }
+ $dataString = json_encode($data);
+ $result = $this->gearmanClient->do("boot", $dataString, 'boot' . $event->getTitle());
+ if (! $this->gearmanClient->runTasks())
+ {
+ echo "ERROR " . $gmc->error() . "\n";
+ exit;
+ }
+ $results[$event->getTitle()] = $result;
+ $result = $eventtypeMapper->findBy(array("title" => "boot"));
+ $eventtypeBoot = $result[0];
+ $event->setRunning(true);
+ $event->setRunningtype($eventtypeBoot->getID());
+ try {
+ $this->eventMapper->save($event);
+ } catch(Zend_Exception $e)
+ {
+ echo "Caught exception: " . get_class($e) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ return;
+ }
+ } else if($shutdown) {
+ $dataString = json_encode($data);
+ $result = $this->gearmanClient->do("shutdown", $dataString, 'shutdown' . $event->getTitle());
+ if (! $this->gearmanClient->runTasks())
+ {
+ echo "ERROR " . $gmc->error() . "\n";
+ exit;
+ }
+ $results[$event->getTitle()] = $result;
+ $result = $eventtypeMapper->findBy(array("title" => "shutdown"));
+ $eventtypeShutdown = $result[0];
+ $event->setRunning(true);
+ $event->setRunningtype($eventtypeShutdown->getID());
+ try {
+ $this->eventMapper->save($event);
+ } catch(Zend_Exception $e)
+ {
+ echo "Caught exception: " . get_class($e) . "<br/>";
+ echo "Message: " . $e->getMessage() . "<br/>";
+ return;
+ }
+ }
+ }
} \ No newline at end of file