| <?php |
| /******************************************************************************* |
| * Copyright (c) 2014-2015 Eclipse Foundation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Denis Roy (Eclipse Foundation) - initial API and implementation |
| * Christopher Guindon (Eclipse Foundation) |
| *******************************************************************************/ |
| require_once(realpath(dirname(__FILE__) . "/../../system/app.class.php")); |
| |
| class Hipp { |
| |
| #***************************************************************************** |
| # |
| # hipp.class.php |
| # |
| # Author: Denis Roy |
| # Date: 2013-11-06 |
| # |
| # Description: Functions and modules related to Hudson HIPP |
| # |
| # HISTORY: |
| # |
| # mysql> select * from ProjectServices; |
| # +-----+-------------------+-------------+----------------+------------------------+--------------------+------------+----------+-----------+---------+ |
| # | ID | ProjectID | ServiceType | ServiceVersion | ServicePreviousVersion | ServerHost | ServerPort | XvncBase | OtherData | State | |
| # +-----+-------------------+-------------+----------------+------------------------+--------------------+------------+----------+-----------+---------+ |
| # | 1 | technology.babel | hipp | 3.2.2 | 3.0.1-b2 | hipp6.eclipse.org | 8215 | 360 | NULL | running | |
| # |
| #***************************************************************************** |
| |
| var $ID = 0; |
| |
| var $ProjectID = ""; |
| |
| var $ServiceType = ""; |
| |
| var $ServiceVersion = ""; |
| |
| var $ServicePreviousVersion = ""; |
| |
| var $ServiceLatestVersion = ""; |
| |
| var $ServerHost = ""; |
| |
| var $ServerPort = 0; |
| |
| var $XvncBase = 0; |
| |
| var $OtherData = ""; |
| |
| var $State = ""; |
| |
| # Path to HIPP images |
| private $HIPPImagePath = "/opt/public/hipp/homes/hudson-wars"; |
| |
| private $VersionRegexp = '/[^\w\.-]/'; |
| |
| /** |
| * Create HTML for hipp control panel link |
| * |
| * @param string $id |
| * Project id (technology.cbi) |
| * |
| * @param string $shortname |
| * Project shortname (cbi) |
| * |
| * @return string |
| */ |
| public function getControlLink($id, $shortname){ |
| $state = $this->getState(); |
| $str = "<span id='" . $shortname . "_state' class='" . $state . "'>" . ucfirst($state) . " (" . $this->getServiceVersion() . ")</span>   <span id='" . $shortname . "_instance'>"; |
| |
| # Examine Service status to determine control knobs to place |
| if ($state == "running") { |
| # Add STOP button |
| $str .= '<a title="stop" href="#ct" data-action="stop" data-projectid="' . $id . '" data-shortname="' . $shortname . '" class="hipp-control-action-link" ><i class="fa fa-power-off"></i></a>   '; |
| |
| # Add RESTART button |
| $str .= '<a title="restart" href="#ct" data-action="restart" data-projectid="' . $id . '" data-shortname="' . $shortname . '" class="hipp-control-action-link" ><i class="fa fa-refresh"></i></a>'; |
| } |
| |
| if ($state == "stopped") { |
| # Add START button |
| $str .= '<a title="start" href="#ct" data-action="start" data-projectid="' . $id . '" data-shortname="' . $shortname . '" class="hipp-control-action-link" ><i class="fa fa-power-off"></i></a>'; |
| } |
| |
| # Upgrade available? |
| if($this->getServiceLatestVersion("hipp") != $this->getServiceVersion() && $this->getServiceLatestVersion("hipp") != "" && $this->getServiceVersion() != "") { |
| |
| $str .= '<br /><a title="upgrade" href="#ct" data-action="upgrade" data-projectid="' . $id . '" data-shortname="' . $shortname . '" class="hipp-control-action-link" ><i class="fa fa-download"></i> Upgrade to ' . $this->getServiceLatestVersion("hipp") . '</a>'; |
| $readme = $this->getReadmeContents("hipp", $this->getServiceLatestVersion("hipp")); |
| if($readme != "") { |
| $str .= "<br /><span id='" . $shortname . "_readme'><a title='readme' href='#ct' data-action='readme' data-projectid='" . $id . "' data-shortname='" . $shortname . "' class='hipp-control-action-link'><i class='fa fa-file-o'></i> README for " . $this->getServiceLatestVersion("hipp") . '</a></span>'; |
| } |
| } |
| |
| return $str . "</span>"; |
| } |
| |
| function getID() { |
| return $this->ID; |
| } |
| |
| function getProjectID() { |
| return $this->ProjectID; |
| } |
| |
| function getServiceType() { |
| return $this->ServiceType; |
| } |
| |
| function getServiceVersion() { |
| return $this->ServiceVersion; |
| } |
| |
| function getServicePreviousVersion() { |
| return $this->ServicePreviousVersion; |
| } |
| |
| function getServiceLatestVersion() { |
| return $this->ServiceLatestVersion; |
| } |
| function getServerHost() { |
| return $this->ServerHost; |
| } |
| |
| function getServerPort() { |
| return $this->ServerPort; |
| } |
| |
| function getXvncBase() { |
| return $this->XvncBase; |
| } |
| |
| function getOtherData() { |
| return $this->OtherData; |
| } |
| |
| function getState() { |
| return $this->State; |
| } |
| |
| function setID($_ID) { |
| $this->ID = $_ID; |
| } |
| |
| function setProjectID($_ProjectID) { |
| $this->ProjectID = $_ProjectID; |
| } |
| |
| function setServiceType($_ServiceType) { |
| $this->ServiceType = $_ServiceType; |
| } |
| |
| function setServiceVersion($_ServiceVersion) { |
| $this->ServiceVersion = $_ServiceVersion; |
| } |
| |
| function setServicePreviousVersion($_ServicePreviousVersion) { |
| $this->ServicePreviousVersion = $_ServicePreviousVersion; |
| } |
| |
| function setServiceLatestVersion($_ServiceLatestVersion) { |
| # this regexp also in admintools.git:create_hipp |
| $this->ServiceLatestVersion = preg_replace($this->VersionRegexp, '', $_ServiceLatestVersion); |
| } |
| |
| function setServerHost($_ServerHost) { |
| $this->ServerHost = $_ServerHost; |
| } |
| |
| function setServerPort($_ServerPort) { |
| $this->ServerPort = $_ServerPort; |
| } |
| |
| function setXvncBase($_XvncBase) { |
| $this->XvncBase = $_XvncBase; |
| } |
| |
| function setOtherData($_OtherData) { |
| $this->OtherData = $_OtherData; |
| } |
| |
| function setState($_State) { |
| $this->State = $_State; |
| } |
| |
| function selectHIPP($_ProjectID) { |
| $App = new App(); |
| $WHERE = ""; |
| |
| if ($_ProjectID != "") { |
| $WHERE .= " WHERE SRV.ProjectID = " . $App->returnQuotedString($App->sqlSanitize($_ProjectID)) . " |
| AND SRV.ServiceType = 'hipp'"; |
| $sql = "SELECT /* hipp.class.php */ |
| SRV.ID, |
| SRV.ProjectID, |
| SRV.ServiceType, |
| SRV.ServiceVersion, |
| SRV.ServicePreviousVersion, |
| SRV.ServerHost, |
| SRV.ServerPort, |
| SRV.XvncBase, |
| SRV.OtherData, |
| SRV.State |
| FROM |
| ProjectServices AS SRV " |
| . $WHERE; |
| |
| $result = $App->foundation_sql($sql); |
| |
| if ($myrow = mysql_fetch_array($result)) { |
| $this->setID($myrow["ID"]); |
| $this->setProjectID($myrow["ProjectID"]); |
| $this->setServiceType($myrow["ServiceType"]); |
| $this->setServiceVersion($myrow["ServiceVersion"]); |
| $this->setServicePreviousVersion($myrow["ServicePreviousVersion"]); |
| $this->setServerHost($myrow["ServerHost"]); |
| $this->setServerPort($myrow["ServerPort"]); |
| $this->setXvncBase($myrow["XvncBase"]); |
| $this->setOtherData($myrow["OtherData"]); |
| $this->setState($myrow["State"]); |
| } |
| $result = NULL; |
| $myrow = NULL; |
| |
| $this->getLatestVersionFromFile("hipp"); |
| } |
| } |
| |
| /** |
| * getLatestVersionFromFile - read latest version from file |
| * @param string - Servicetype (HIPP) |
| * @return none |
| * @since 2015-02-26 |
| * @author droy |
| */ |
| function getLatestVersionFromFile($_ServiceType="hipp") { |
| if(is_readable($this->HIPPImagePath . "/latest")) { |
| $this->setServiceLatestVersion(file_get_contents($this->HIPPImagePath. "/latest")); |
| } |
| } |
| |
| /** |
| * getReadmeContents - Fetch README contents for a version |
| * @param string - Servicetype (HIPP), string Version (3.2.2) |
| * @return String |
| * @since 2015-02-26 |
| * @author droy |
| */ |
| function getReadmeContents($_ServiceType="hipp", $_version) { |
| $rValue = ""; |
| if($_version != "") { |
| $_version = preg_replace($this->VersionRegexp, '', $_version); |
| $filename = $this->HIPPImagePath . "/hudson-" . $_version . ".README"; |
| if(is_readable($filename)) { |
| $rValue = file_get_contents($filename); |
| } |
| } |
| return $rValue; |
| } |
| } |