blob: a45ab7e31c69db54320eb56e9e2edad5fad19ae0 [file] [log] [blame]
<?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> &#160; <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"));
}
}
}