Page MenuHomePhabricator

D16348.id39317.diff
No OneTemporary

D16348.id39317.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -1131,6 +1131,7 @@
'HarbormasterBuildQuery' => 'applications/harbormaster/query/HarbormasterBuildQuery.php',
'HarbormasterBuildRequest' => 'applications/harbormaster/engine/HarbormasterBuildRequest.php',
'HarbormasterBuildSearchEngine' => 'applications/harbormaster/query/HarbormasterBuildSearchEngine.php',
+ 'HarbormasterBuildStatus' => 'applications/harbormaster/constants/HarbormasterBuildStatus.php',
'HarbormasterBuildStatusDatasource' => 'applications/harbormaster/typeahead/HarbormasterBuildStatusDatasource.php',
'HarbormasterBuildStep' => 'applications/harbormaster/storage/configuration/HarbormasterBuildStep.php',
'HarbormasterBuildStepCoreCustomField' => 'applications/harbormaster/customfield/HarbormasterBuildStepCoreCustomField.php',
@@ -5687,6 +5688,7 @@
'HarbormasterBuildQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'HarbormasterBuildRequest' => 'Phobject',
'HarbormasterBuildSearchEngine' => 'PhabricatorApplicationSearchEngine',
+ 'HarbormasterBuildStatus' => 'Phobject',
'HarbormasterBuildStatusDatasource' => 'PhabricatorTypeaheadDatasource',
'HarbormasterBuildStep' => array(
'HarbormasterDAO',
diff --git a/src/applications/harbormaster/conduit/HarbormasterQueryBuildsConduitAPIMethod.php b/src/applications/harbormaster/conduit/HarbormasterQueryBuildsConduitAPIMethod.php
--- a/src/applications/harbormaster/conduit/HarbormasterQueryBuildsConduitAPIMethod.php
+++ b/src/applications/harbormaster/conduit/HarbormasterQueryBuildsConduitAPIMethod.php
@@ -66,6 +66,7 @@
$id = $build->getID();
$uri = '/harbormaster/build/'.$id.'/';
$status = $build->getBuildStatus();
+ $status_name = HarbormasterBuildStatus::getBuildStatusName($status);
$data[] = array(
'id' => $id,
@@ -75,7 +76,7 @@
'buildablePHID' => $build->getBuildablePHID(),
'buildPlanPHID' => $build->getBuildPlanPHID(),
'buildStatus' => $status,
- 'buildStatusName' => HarbormasterBuild::getBuildStatusName($status),
+ 'buildStatusName' => $status_name,
);
}
diff --git a/src/applications/harbormaster/constants/HarbormasterBuildStatus.php b/src/applications/harbormaster/constants/HarbormasterBuildStatus.php
new file mode 100644
--- /dev/null
+++ b/src/applications/harbormaster/constants/HarbormasterBuildStatus.php
@@ -0,0 +1,121 @@
+<?php
+
+final class HarbormasterBuildStatus extends Phobject {
+
+ /**
+ * Not currently being built.
+ */
+ const STATUS_INACTIVE = 'inactive';
+
+ /**
+ * Pending pick up by the Harbormaster daemon.
+ */
+ const STATUS_PENDING = 'pending';
+
+ /**
+ * Current building the buildable.
+ */
+ const STATUS_BUILDING = 'building';
+
+ /**
+ * The build has passed.
+ */
+ const STATUS_PASSED = 'passed';
+
+ /**
+ * The build has failed.
+ */
+ const STATUS_FAILED = 'failed';
+
+ /**
+ * The build has aborted.
+ */
+ const STATUS_ABORTED = 'aborted';
+
+ /**
+ * The build encountered an unexpected error.
+ */
+ const STATUS_ERROR = 'error';
+
+ /**
+ * The build has been paused.
+ */
+ const STATUS_PAUSED = 'paused';
+
+ /**
+ * The build has been deadlocked.
+ */
+ const STATUS_DEADLOCKED = 'deadlocked';
+
+
+ /**
+ * Get a human readable name for a build status constant.
+ *
+ * @param const Build status constant.
+ * @return string Human-readable name.
+ */
+ public static function getBuildStatusName($status) {
+ $map = self::getBuildStatusMap();
+ return idx($map, $status, pht('Unknown ("%s")', $status));
+ }
+
+ public static function getBuildStatusMap() {
+ return array(
+ self::STATUS_INACTIVE => pht('Inactive'),
+ self::STATUS_PENDING => pht('Pending'),
+ self::STATUS_BUILDING => pht('Building'),
+ self::STATUS_PASSED => pht('Passed'),
+ self::STATUS_FAILED => pht('Failed'),
+ self::STATUS_ABORTED => pht('Aborted'),
+ self::STATUS_ERROR => pht('Unexpected Error'),
+ self::STATUS_PAUSED => pht('Paused'),
+ self::STATUS_DEADLOCKED => pht('Deadlocked'),
+ );
+ }
+
+ public static function getBuildStatusIcon($status) {
+ switch ($status) {
+ case self::STATUS_INACTIVE:
+ case self::STATUS_PENDING:
+ return PHUIStatusItemView::ICON_OPEN;
+ case self::STATUS_BUILDING:
+ return PHUIStatusItemView::ICON_RIGHT;
+ case self::STATUS_PASSED:
+ return PHUIStatusItemView::ICON_ACCEPT;
+ case self::STATUS_FAILED:
+ return PHUIStatusItemView::ICON_REJECT;
+ case self::STATUS_ABORTED:
+ return PHUIStatusItemView::ICON_MINUS;
+ case self::STATUS_ERROR:
+ return PHUIStatusItemView::ICON_MINUS;
+ case self::STATUS_PAUSED:
+ return PHUIStatusItemView::ICON_MINUS;
+ case self::STATUS_DEADLOCKED:
+ return PHUIStatusItemView::ICON_WARNING;
+ default:
+ return PHUIStatusItemView::ICON_QUESTION;
+ }
+ }
+
+ public static function getBuildStatusColor($status) {
+ switch ($status) {
+ case self::STATUS_INACTIVE:
+ return 'dark';
+ case self::STATUS_PENDING:
+ case self::STATUS_BUILDING:
+ return 'blue';
+ case self::STATUS_PASSED:
+ return 'green';
+ case self::STATUS_FAILED:
+ case self::STATUS_ABORTED:
+ case self::STATUS_ERROR:
+ case self::STATUS_DEADLOCKED:
+ return 'red';
+ case self::STATUS_PAUSED:
+ return 'dark';
+ default:
+ return 'bluegrey';
+ }
+ }
+
+}
diff --git a/src/applications/harbormaster/controller/HarbormasterBuildViewController.php b/src/applications/harbormaster/controller/HarbormasterBuildViewController.php
--- a/src/applications/harbormaster/controller/HarbormasterBuildViewController.php
+++ b/src/applications/harbormaster/controller/HarbormasterBuildViewController.php
@@ -581,9 +581,9 @@
} else {
$status = $build->getBuildStatus();
$status_name =
- HarbormasterBuild::getBuildStatusName($status);
- $icon = HarbormasterBuild::getBuildStatusIcon($status);
- $color = HarbormasterBuild::getBuildStatusColor($status);
+ HarbormasterBuildStatus::getBuildStatusName($status);
+ $icon = HarbormasterBuildStatus::getBuildStatusIcon($status);
+ $color = HarbormasterBuildStatus::getBuildStatusColor($status);
}
$item->setTarget($status_name);
diff --git a/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php b/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php
--- a/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php
+++ b/src/applications/harbormaster/controller/HarbormasterBuildableViewController.php
@@ -196,11 +196,10 @@
->setHref($view_uri);
$status = $build->getBuildStatus();
- $item->setStatusIcon(
- 'fa-dot-circle-o '.HarbormasterBuild::getBuildStatusColor($status),
- HarbormasterBuild::getBuildStatusName($status));
-
- $item->addAttribute(HarbormasterBuild::getBuildStatusName($status));
+ $status_color = HarbormasterBuildStatus::getBuildStatusColor($status);
+ $status_name = HarbormasterBuildStatus::getBuildStatusName($status);
+ $item->setStatusIcon('fa-dot-circle-o '.$status_color, $status_name);
+ $item->addAttribute($status_name);
if ($build->isRestarting()) {
$item->addIcon('fa-repeat', pht('Restarting'));
diff --git a/src/applications/harbormaster/engine/HarbormasterBuildEngine.php b/src/applications/harbormaster/engine/HarbormasterBuildEngine.php
--- a/src/applications/harbormaster/engine/HarbormasterBuildEngine.php
+++ b/src/applications/harbormaster/engine/HarbormasterBuildEngine.php
@@ -63,7 +63,7 @@
// If any exception is raised, the build is marked as a failure and the
// exception is re-thrown (this ensures we don't leave builds in an
// inconsistent state).
- $build->setBuildStatus(HarbormasterBuild::STATUS_ERROR);
+ $build->setBuildStatus(HarbormasterBuildStatus::STATUS_ERROR);
$build->save();
$lock->unlock();
@@ -106,30 +106,30 @@
private function updateBuild(HarbormasterBuild $build) {
if ($build->isAborting()) {
$this->releaseAllArtifacts($build);
- $build->setBuildStatus(HarbormasterBuild::STATUS_ABORTED);
+ $build->setBuildStatus(HarbormasterBuildStatus::STATUS_ABORTED);
$build->save();
}
- if (($build->getBuildStatus() == HarbormasterBuild::STATUS_PENDING) ||
+ if (($build->getBuildStatus() == HarbormasterBuildStatus::STATUS_PENDING) ||
($build->isRestarting())) {
$this->restartBuild($build);
- $build->setBuildStatus(HarbormasterBuild::STATUS_BUILDING);
+ $build->setBuildStatus(HarbormasterBuildStatus::STATUS_BUILDING);
$build->save();
}
if ($build->isResuming()) {
- $build->setBuildStatus(HarbormasterBuild::STATUS_BUILDING);
+ $build->setBuildStatus(HarbormasterBuildStatus::STATUS_BUILDING);
$build->save();
}
if ($build->isPausing() && !$build->isComplete()) {
- $build->setBuildStatus(HarbormasterBuild::STATUS_PAUSED);
+ $build->setBuildStatus(HarbormasterBuildStatus::STATUS_PAUSED);
$build->save();
}
$build->deleteUnprocessedCommands();
- if ($build->getBuildStatus() == HarbormasterBuild::STATUS_BUILDING) {
+ if ($build->getBuildStatus() == HarbormasterBuildStatus::STATUS_BUILDING) {
$this->updateBuildSteps($build);
}
}
@@ -243,7 +243,7 @@
// If any step failed, fail the whole build, then bail.
if (count($failed)) {
- $build->setBuildStatus(HarbormasterBuild::STATUS_FAILED);
+ $build->setBuildStatus(HarbormasterBuildStatus::STATUS_FAILED);
$build->save();
return;
}
@@ -251,7 +251,7 @@
// If every step is complete, we're done with this build. Mark it passed
// and bail.
if (count($complete) == count($steps)) {
- $build->setBuildStatus(HarbormasterBuild::STATUS_PASSED);
+ $build->setBuildStatus(HarbormasterBuildStatus::STATUS_PASSED);
$build->save();
return;
}
@@ -287,7 +287,7 @@
if (!$runnable && !$waiting && !$underway) {
// This means the build is deadlocked, and the user has configured
// circular dependencies.
- $build->setBuildStatus(HarbormasterBuild::STATUS_DEADLOCKED);
+ $build->setBuildStatus(HarbormasterBuildStatus::STATUS_DEADLOCKED);
$build->save();
return;
}
@@ -443,14 +443,14 @@
$all_pass = true;
$any_fail = false;
foreach ($buildable->getBuilds() as $build) {
- if ($build->getBuildStatus() != HarbormasterBuild::STATUS_PASSED) {
+ if ($build->getBuildStatus() != HarbormasterBuildStatus::STATUS_PASSED) {
$all_pass = false;
}
- if ($build->getBuildStatus() == HarbormasterBuild::STATUS_FAILED ||
- $build->getBuildStatus() == HarbormasterBuild::STATUS_ERROR ||
- $build->getBuildStatus() == HarbormasterBuild::STATUS_DEADLOCKED) {
- $any_fail = true;
- }
+ $any_fail = in_array($build->getBuildStatus(), array(
+ HarbormasterBuildStatus::STATUS_FAILED,
+ HarbormasterBuildStatus::STATUS_ERROR,
+ HarbormasterBuildStatus::STATUS_DEADLOCKED,
+ ));
}
if ($any_fail) {
diff --git a/src/applications/harbormaster/event/HarbormasterUIEventListener.php b/src/applications/harbormaster/event/HarbormasterUIEventListener.php
--- a/src/applications/harbormaster/event/HarbormasterUIEventListener.php
+++ b/src/applications/harbormaster/event/HarbormasterUIEventListener.php
@@ -132,9 +132,9 @@
}
$status = $build->getBuildStatus();
- $status_name = HarbormasterBuild::getBuildStatusName($status);
- $icon = HarbormasterBuild::getBuildStatusIcon($status);
- $color = HarbormasterBuild::getBuildStatusColor($status);
+ $status_name = HarbormasterBuildStatus::getBuildStatusName($status);
+ $icon = HarbormasterBuildStatus::getBuildStatusIcon($status);
+ $color = HarbormasterBuildStatus::getBuildStatusColor($status);
$item->setIcon($icon, $color, $status_name);
diff --git a/src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php b/src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php
--- a/src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php
+++ b/src/applications/harbormaster/query/HarbormasterBuildSearchEngine.php
@@ -107,9 +107,9 @@
$status = $build->getBuildStatus();
- $status_icon = HarbormasterBuild::getBuildStatusIcon($status);
- $status_color = HarbormasterBuild::getBuildStatusColor($status);
- $status_label = HarbormasterBuild::getBuildStatusName($status);
+ $status_icon = HarbormasterBuildStatus::getBuildStatusIcon($status);
+ $status_color = HarbormasterBuildStatus::getBuildStatusColor($status);
+ $status_label = HarbormasterBuildStatus::getBuildStatusName($status);
$item->setStatusIcon("{$status_icon} {$status_color}", $status_label);
diff --git a/src/applications/harbormaster/storage/HarbormasterBuildable.php b/src/applications/harbormaster/storage/HarbormasterBuildable.php
--- a/src/applications/harbormaster/storage/HarbormasterBuildable.php
+++ b/src/applications/harbormaster/storage/HarbormasterBuildable.php
@@ -170,7 +170,7 @@
->setBuildablePHID($this->getPHID())
->setBuildPlanPHID($plan->getPHID())
->setBuildParameters($parameters)
- ->setBuildStatus(HarbormasterBuild::STATUS_PENDING);
+ ->setBuildStatus(HarbormasterBuildStatus::STATUS_PENDING);
if ($initiator_phid) {
$build->setInitiatorPHID($initiator_phid);
}
diff --git a/src/applications/harbormaster/storage/build/HarbormasterBuild.php b/src/applications/harbormaster/storage/build/HarbormasterBuild.php
--- a/src/applications/harbormaster/storage/build/HarbormasterBuild.php
+++ b/src/applications/harbormaster/storage/build/HarbormasterBuild.php
@@ -18,125 +18,9 @@
private $buildTargets = self::ATTACHABLE;
private $unprocessedCommands = self::ATTACHABLE;
- /**
- * Not currently being built.
- */
- const STATUS_INACTIVE = 'inactive';
-
- /**
- * Pending pick up by the Harbormaster daemon.
- */
- const STATUS_PENDING = 'pending';
-
- /**
- * Current building the buildable.
- */
- const STATUS_BUILDING = 'building';
-
- /**
- * The build has passed.
- */
- const STATUS_PASSED = 'passed';
-
- /**
- * The build has failed.
- */
- const STATUS_FAILED = 'failed';
-
- /**
- * The build has aborted.
- */
- const STATUS_ABORTED = 'aborted';
-
- /**
- * The build encountered an unexpected error.
- */
- const STATUS_ERROR = 'error';
-
- /**
- * The build has been paused.
- */
- const STATUS_PAUSED = 'paused';
-
- /**
- * The build has been deadlocked.
- */
- const STATUS_DEADLOCKED = 'deadlocked';
-
-
- /**
- * Get a human readable name for a build status constant.
- *
- * @param const Build status constant.
- * @return string Human-readable name.
- */
- public static function getBuildStatusName($status) {
- $map = self::getBuildStatusMap();
- return idx($map, $status, pht('Unknown ("%s")', $status));
- }
-
- public static function getBuildStatusMap() {
- return array(
- self::STATUS_INACTIVE => pht('Inactive'),
- self::STATUS_PENDING => pht('Pending'),
- self::STATUS_BUILDING => pht('Building'),
- self::STATUS_PASSED => pht('Passed'),
- self::STATUS_FAILED => pht('Failed'),
- self::STATUS_ABORTED => pht('Aborted'),
- self::STATUS_ERROR => pht('Unexpected Error'),
- self::STATUS_PAUSED => pht('Paused'),
- self::STATUS_DEADLOCKED => pht('Deadlocked'),
- );
- }
-
- public static function getBuildStatusIcon($status) {
- switch ($status) {
- case self::STATUS_INACTIVE:
- case self::STATUS_PENDING:
- return PHUIStatusItemView::ICON_OPEN;
- case self::STATUS_BUILDING:
- return PHUIStatusItemView::ICON_RIGHT;
- case self::STATUS_PASSED:
- return PHUIStatusItemView::ICON_ACCEPT;
- case self::STATUS_FAILED:
- return PHUIStatusItemView::ICON_REJECT;
- case self::STATUS_ABORTED:
- return PHUIStatusItemView::ICON_MINUS;
- case self::STATUS_ERROR:
- return PHUIStatusItemView::ICON_MINUS;
- case self::STATUS_PAUSED:
- return PHUIStatusItemView::ICON_MINUS;
- case self::STATUS_DEADLOCKED:
- return PHUIStatusItemView::ICON_WARNING;
- default:
- return PHUIStatusItemView::ICON_QUESTION;
- }
- }
-
- public static function getBuildStatusColor($status) {
- switch ($status) {
- case self::STATUS_INACTIVE:
- return 'dark';
- case self::STATUS_PENDING:
- case self::STATUS_BUILDING:
- return 'blue';
- case self::STATUS_PASSED:
- return 'green';
- case self::STATUS_FAILED:
- case self::STATUS_ABORTED:
- case self::STATUS_ERROR:
- case self::STATUS_DEADLOCKED:
- return 'red';
- case self::STATUS_PAUSED:
- return 'dark';
- default:
- return 'bluegrey';
- }
- }
-
public static function initializeNewBuild(PhabricatorUser $actor) {
return id(new HarbormasterBuild())
- ->setBuildStatus(self::STATUS_INACTIVE)
+ ->setBuildStatus(HarbormasterBuildStatus::STATUS_INACTIVE)
->setBuildGeneration(0);
}
@@ -220,8 +104,9 @@
}
public function isBuilding() {
- return $this->getBuildStatus() === self::STATUS_PENDING ||
- $this->getBuildStatus() === self::STATUS_BUILDING;
+ return
+ $this->getBuildStatus() === HarbormasterBuildStatus::STATUS_PENDING ||
+ $this->getBuildStatus() === HarbormasterBuildStatus::STATUS_BUILDING;
}
public function isAutobuild() {
@@ -285,11 +170,11 @@
public function isComplete() {
switch ($this->getBuildStatus()) {
- case self::STATUS_PASSED:
- case self::STATUS_FAILED:
- case self::STATUS_ABORTED:
- case self::STATUS_ERROR:
- case self::STATUS_PAUSED:
+ case HarbormasterBuildStatus::STATUS_PASSED:
+ case HarbormasterBuildStatus::STATUS_FAILED:
+ case HarbormasterBuildStatus::STATUS_ABORTED:
+ case HarbormasterBuildStatus::STATUS_ERROR:
+ case HarbormasterBuildStatus::STATUS_PAUSED:
return true;
}
@@ -297,7 +182,7 @@
}
public function isPaused() {
- return ($this->getBuildStatus() == self::STATUS_PAUSED);
+ return ($this->getBuildStatus() == HarbormasterBuildStatus::STATUS_PAUSED);
}
public function getURI() {
diff --git a/src/applications/harbormaster/typeahead/HarbormasterBuildStatusDatasource.php b/src/applications/harbormaster/typeahead/HarbormasterBuildStatusDatasource.php
--- a/src/applications/harbormaster/typeahead/HarbormasterBuildStatusDatasource.php
+++ b/src/applications/harbormaster/typeahead/HarbormasterBuildStatusDatasource.php
@@ -27,11 +27,11 @@
private function buildResults() {
$results = array();
- $status_map = HarbormasterBuild::getBuildStatusMap();
+ $status_map = HarbormasterBuildStatus::getBuildStatusMap();
foreach ($status_map as $value => $name) {
$result = id(new PhabricatorTypeaheadResult())
- ->setIcon(HarbormasterBuild::getBuildStatusIcon($value))
- ->setColor(HarbormasterBuild::getBuildStatusColor($value))
+ ->setIcon(HarbormasterBuildStatus::getBuildStatusIcon($value))
+ ->setColor(HarbormasterBuildStatus::getBuildStatusColor($value))
->setPHID($value)
->setName($name)
->addAttribute(pht('Status'));

File Metadata

Mime Type
text/plain
Expires
Sat, Mar 8, 10:14 AM (3 d, 16 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7367200
Default Alt Text
D16348.id39317.diff (19 KB)

Event Timeline