1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 00:32:42 +01:00

Get some level of meaningful status information into Harbormaster buildable list

Summary: Ref T1049. Nothing fancy, but shows red for fail/error and green for pass. See discussion in D7502.

Test Plan: {F78839}

Reviewers: hach-que, btrahan

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T1049

Differential Revision: https://secure.phabricator.com/D7512
This commit is contained in:
epriestley 2013-11-06 11:26:17 -08:00
parent c03cdbe9a9
commit 377742c23a
4 changed files with 54 additions and 2 deletions

View file

@ -44,6 +44,28 @@ final class HarbormasterBuildableListController
} }
$list->addItem($item); $list->addItem($item);
// TODO: This is proof-of-concept for getting meaningful status
// information into this list, and should get an improvement pass
// once we're a little farther along.
$all_pass = true;
$any_fail = false;
foreach ($buildable->getBuilds() as $build) {
if ($build->getBuildStatus() != HarbormasterBuild::STATUS_PASSED) {
$all_pass = false;
}
if ($build->getBuildStatus() == HarbormasterBuild::STATUS_FAILED ||
$build->getBuildStatus() == HarbormasterBuild::STATUS_ERROR) {
$any_fail = true;
}
}
if ($any_fail) {
$item->setBarColor('red');
} else if ($all_pass) {
$item->setBarColor('green');
}
} }
return $list; return $list;

View file

@ -10,6 +10,7 @@ final class HarbormasterBuildableQuery
private $needContainerObjects; private $needContainerObjects;
private $needBuildableHandles; private $needBuildableHandles;
private $needBuilds;
public function withIDs(array $ids) { public function withIDs(array $ids) {
$this->ids = $ids; $this->ids = $ids;
@ -41,6 +42,11 @@ final class HarbormasterBuildableQuery
return $this; return $this;
} }
public function needBuilds($need) {
$this->needBuilds = $need;
return $this;
}
protected function loadPage() { protected function loadPage() {
$table = new HarbormasterBuildable(); $table = new HarbormasterBuildable();
$conn_r = $table->establishConnection('r'); $conn_r = $table->establishConnection('r');
@ -119,6 +125,18 @@ final class HarbormasterBuildableQuery
} }
} }
if ($this->needBuilds) {
$builds = id(new HarbormasterBuildQuery())
->setViewer($this->getViewer())
->setParentQuery($this)
->withBuildablePHIDs(mpull($page, 'getPHID'))
->execute();
$builds = mgroup($builds, 'getBuildablePHID');
foreach ($page as $key => $buildable) {
$buildable->attachBuilds(idx($builds, $buildable->getPHID(), array()));
}
}
return $page; return $page;
} }

View file

@ -10,8 +10,9 @@ final class HarbormasterBuildableSearchEngine
} }
public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) { public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) {
$query = id(new HarbormasterBuildableQuery()); $query = id(new HarbormasterBuildableQuery())
$query->needBuildableHandles(true); ->needBuildableHandles(true)
->needBuilds(true);
return $query; return $query;
} }

View file

@ -11,6 +11,7 @@ final class HarbormasterBuildable extends HarbormasterDAO
private $buildableObject = self::ATTACHABLE; private $buildableObject = self::ATTACHABLE;
private $containerObject = self::ATTACHABLE; private $containerObject = self::ATTACHABLE;
private $buildableHandle = self::ATTACHABLE; private $buildableHandle = self::ATTACHABLE;
private $builds = self::ATTACHABLE;
const STATUS_WHATEVER = 'whatever'; const STATUS_WHATEVER = 'whatever';
@ -58,6 +59,16 @@ final class HarbormasterBuildable extends HarbormasterDAO
return $this->assertAttached($this->buildableHandle); return $this->assertAttached($this->buildableHandle);
} }
public function attachBuilds(array $builds) {
assert_instances_of($builds, 'HarbormasterBuild');
$this->builds = $builds;
return $this;
}
public function getBuilds() {
return $this->assertAttached($this->builds);
}
/* -( PhabricatorPolicyInterface )----------------------------------------- */ /* -( PhabricatorPolicyInterface )----------------------------------------- */