xpath('job[lastBuild/building="true"]');
if ($xml) return $xml;
else return "";
}
$ACTIVE_BUILDS = getActiveBuilds();
function slaveExists($slave) {
global $SLAVES;
$slave = $SLAVES->xpath('computer[displayName="'.$slave.'"]');
if ($slave) return true;
else return false;
}
function getSlaveStatus($slave) {
global $SLAVES;
$status = "unknown";
if (!slaveExists($slave)) return $status;
$slave = $SLAVES->xpath('computer[displayName="'.$slave.'"]');
$offline = $slave[0]->offline;
if ($offline == "true") $status = "offline";
else $status = "online";
return $status;
}
function getSlaveUrl($slave) {
if (slaveExists($slave)) return "https://build.opnfv.org/ci/computer/".$slave;
else return "";
}
function isCiPod($slave) {
global $CI_PODS;
$result = $CI_PODS->xpath('node[nodeName="'.$slave.'"]');
if ($result) return true;
else return false;
}
function isDevPod($slave) {
global $CI_PODS;
if (isCiPod($slave)) return false;
else if (strpos($slave, 'pod') !== false) return true;
else return false;
}
function parseJobString($str) {
$scenario = '';
$installer = '';
$branch = '';
$installers = array("fuel", "joid", "apex", "compass");
$branches = array("master","arno", "brahmaputra", "colorado");
$arr = split ('[ -]', $str);
for($x = 0; $x < count($arr); $x++) {
if (strcmp($arr[$x],"os") == 0) //all the scenarios start with 'os'
$scenario = $arr[$x].'-'.$arr[$x+1].'-'.$arr[$x+2].'-'.$arr[$x+3];
else if (in_array($arr[$x], $installers))
$installer = $arr[$x];
else if (in_array($arr[$x], $branches))
$branch = $arr[$x];
}
$arr2 = explode(' ', $str);
$jobname = $arr2[0]; //take first word as job name
return array(
"jobname"=>$jobname,
"installer"=>$installer,
"branch"=>$branch,
"scenario"=>$scenario
);
}
function getJJob($slave) {
global $ALL_BUILDS;
if (!slaveExists($slave)) return "";
//$builds = $ALL_BUILDS;
//$xml = $ALL_BUILDS->xpath('job[lastBuild/building="true"][lastBuild/builtOn="'.$slave.'"]');
$builds = $ALL_BUILDS->xpath('job[lastBuild/builtOn="'.$slave.'"]');
if (! $builds) { //the slave does not have jobs in building state
//echo "NO JOBS FOUND";
return "";
}
else {
//is there any active build?
$builds = $ALL_BUILDS->xpath('job[lastBuild/building="true"][lastBuild/builtOn="'.$slave.'"]');
if ($builds) { // there are active builds for this slave
//print_r($builds);
$child_job = simplexml_import_dom($builds[0]);
foreach ($builds as &$build) {
$int1 = intval($build->lastBuild->timestamp);
$int2 = intval($child_job->lastBuild->timestamp);
if ($int1 > $int2) {
$child_job = simplexml_import_dom($build);
}
}
$url = strval($child_job->url);
$fullDisplayName = $child_job->lastBuild->fullDisplayName;
//echo $fullDisplayName."
";
$params = parseJobString($fullDisplayName);
$type = 0; // type=0 means the job is running
$job_params = array(
"name"=>$params['jobname'],
"url"=>$url,
"scenario"=>$params['scenario'],
"installer"=>$params['installer'],
"branch"=>$params['branch'],
"type"=>$type
);
//print_r($job_params);
return $job_params;
}
else { // there are NO active builds for this slave, we take the latest build
//echo "NO Active builds";
$builds = $ALL_BUILDS->xpath('job[lastBuild/building="false"][lastBuild/builtOn="'.$slave.'"]');
$last_job = simplexml_import_dom($builds[0]);
//print_r($last_job);
foreach ($builds as &$build) {
$int1 = intval($build->lastBuild->timestamp);
$int2 = intval($last_job->lastBuild->timestamp);
if ($int1 > $int2) {
$last_job = simplexml_import_dom($build);
}
}
$url = strval($last_job->url);
$result = strval($last_job->lastBuild->result);
$fullDisplayName = $last_job->lastBuild->fullDisplayName;
$params = parseJobString($fullDisplayName);
$type = 3;
if ($result == "SUCCESS") $type = 1; // type=1 means it's the last job and it succeded
if ($result == "FAILURE") $type = 2; // type=2 means it's the last job and it failed
if ($result == "UNSTABLE") $type = 3; // type=3 means it's the last job is unstable
$job_params = array(
"name"=>$params['jobname'],
"url"=>$url,
"scenario"=>$params['scenario'],
"installer"=>$params['installer'],
"branch"=>$params['branch'],
"type"=>$type
);
return $job_params;
//print_r($job_params);
}
}
}
/*
$slave = "lf-pod2";
$job_params = getJJob($slave);
$status = getSlaveStatus($slave);
echo "Status slave ".$slave.": ".$status."
";
echo "Job: ".$job_params['name']."
";
echo "URL: ".$job_params['url']."
";
echo "Scenario: ".$job_params['scenario']."
";
echo "Installer: ".$job_params['installer']."
";
echo "Branch: ".$job_params['branch']."
";
echo "Type: ".$job_params['type']."
";
*/
?>