<?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) . "</span>   <span id='" . $shortname . "_instance'>"; # Examine Service status to determine control knobs to place if ($state == "running") { # 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>'; } 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 LIKE '_ipp'"; $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")); } } }