Page MenuHomePhabricator

D15724.diff
No OneTemporary

D15724.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
@@ -2160,6 +2160,7 @@
'PhabricatorCustomFieldStringIndexStorage' => 'infrastructure/customfield/storage/PhabricatorCustomFieldStringIndexStorage.php',
'PhabricatorCustomHeaderConfigType' => 'applications/config/custom/PhabricatorCustomHeaderConfigType.php',
'PhabricatorDaemon' => 'infrastructure/daemon/PhabricatorDaemon.php',
+ 'PhabricatorDaemonBulkJobController' => 'applications/daemon/controller/PhabricatorDaemonBulkJobController.php',
'PhabricatorDaemonBulkJobListController' => 'applications/daemon/controller/PhabricatorDaemonBulkJobListController.php',
'PhabricatorDaemonBulkJobMonitorController' => 'applications/daemon/controller/PhabricatorDaemonBulkJobMonitorController.php',
'PhabricatorDaemonBulkJobViewController' => 'applications/daemon/controller/PhabricatorDaemonBulkJobViewController.php',
@@ -6604,9 +6605,10 @@
'PhabricatorCustomFieldStringIndexStorage' => 'PhabricatorCustomFieldIndexStorage',
'PhabricatorCustomHeaderConfigType' => 'PhabricatorConfigOptionType',
'PhabricatorDaemon' => 'PhutilDaemon',
- 'PhabricatorDaemonBulkJobListController' => 'PhabricatorDaemonController',
- 'PhabricatorDaemonBulkJobMonitorController' => 'PhabricatorDaemonController',
- 'PhabricatorDaemonBulkJobViewController' => 'PhabricatorDaemonController',
+ 'PhabricatorDaemonBulkJobController' => 'PhabricatorDaemonController',
+ 'PhabricatorDaemonBulkJobListController' => 'PhabricatorDaemonBulkJobController',
+ 'PhabricatorDaemonBulkJobMonitorController' => 'PhabricatorDaemonBulkJobController',
+ 'PhabricatorDaemonBulkJobViewController' => 'PhabricatorDaemonBulkJobController',
'PhabricatorDaemonConsoleController' => 'PhabricatorDaemonController',
'PhabricatorDaemonContentSource' => 'PhabricatorContentSource',
'PhabricatorDaemonController' => 'PhabricatorController',
diff --git a/src/applications/daemon/controller/PhabricatorDaemonBulkJobController.php b/src/applications/daemon/controller/PhabricatorDaemonBulkJobController.php
new file mode 100644
--- /dev/null
+++ b/src/applications/daemon/controller/PhabricatorDaemonBulkJobController.php
@@ -0,0 +1,25 @@
+<?php
+
+abstract class PhabricatorDaemonBulkJobController
+ extends PhabricatorDaemonController {
+
+ public function shouldRequireAdmin() {
+ return false;
+ }
+
+ public function shouldAllowPublic() {
+ return true;
+ }
+
+ public function buildApplicationMenu() {
+ return $this->newApplicationMenu()
+ ->setSearchEngine(new PhabricatorWorkerBulkJobSearchEngine());
+ }
+
+ protected function buildApplicationCrumbs() {
+ $crumbs = parent::buildApplicationCrumbs();
+ $crumbs->addTextCrumb(pht('Bulk Jobs'), '/daemon/bulk/');
+ return $crumbs;
+ }
+
+}
diff --git a/src/applications/daemon/controller/PhabricatorDaemonBulkJobListController.php b/src/applications/daemon/controller/PhabricatorDaemonBulkJobListController.php
--- a/src/applications/daemon/controller/PhabricatorDaemonBulkJobListController.php
+++ b/src/applications/daemon/controller/PhabricatorDaemonBulkJobListController.php
@@ -1,31 +1,12 @@
<?php
final class PhabricatorDaemonBulkJobListController
- extends PhabricatorDaemonController {
-
- public function shouldAllowPublic() {
- return true;
- }
+ extends PhabricatorDaemonBulkJobController {
public function handleRequest(AphrontRequest $request) {
- $controller = id(new PhabricatorApplicationSearchController())
- ->setQueryKey($request->getURIData('queryKey'))
- ->setSearchEngine(new PhabricatorWorkerBulkJobSearchEngine())
- ->setNavigation($this->buildSideNavView());
- return $this->delegateToController($controller);
+ return id(new PhabricatorWorkerBulkJobSearchEngine())
+ ->setController($this)
+ ->buildResponse();
}
- protected function buildSideNavView($for_app = false) {
- $user = $this->getRequest()->getUser();
-
- $nav = new AphrontSideNavFilterView();
- $nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
-
- id(new PhabricatorWorkerBulkJobSearchEngine())
- ->setViewer($user)
- ->addNavigationItems($nav->getMenu());
- $nav->selectFilter(null);
-
- return $nav;
- }
}
diff --git a/src/applications/daemon/controller/PhabricatorDaemonBulkJobMonitorController.php b/src/applications/daemon/controller/PhabricatorDaemonBulkJobMonitorController.php
--- a/src/applications/daemon/controller/PhabricatorDaemonBulkJobMonitorController.php
+++ b/src/applications/daemon/controller/PhabricatorDaemonBulkJobMonitorController.php
@@ -1,11 +1,7 @@
<?php
final class PhabricatorDaemonBulkJobMonitorController
- extends PhabricatorDaemonController {
-
- public function shouldAllowPublic() {
- return true;
- }
+ extends PhabricatorDaemonBulkJobController {
public function handleRequest(AphrontRequest $request) {
$viewer = $this->getViewer();
diff --git a/src/applications/daemon/controller/PhabricatorDaemonBulkJobViewController.php b/src/applications/daemon/controller/PhabricatorDaemonBulkJobViewController.php
--- a/src/applications/daemon/controller/PhabricatorDaemonBulkJobViewController.php
+++ b/src/applications/daemon/controller/PhabricatorDaemonBulkJobViewController.php
@@ -1,11 +1,7 @@
<?php
final class PhabricatorDaemonBulkJobViewController
- extends PhabricatorDaemonController {
-
- public function shouldAllowPublic() {
- return true;
- }
+ extends PhabricatorDaemonBulkJobController {
public function handleRequest(AphrontRequest $request) {
$viewer = $this->getViewer();
@@ -21,7 +17,6 @@
$title = pht('Bulk Job %d', $job->getID());
$crumbs = $this->buildApplicationCrumbs();
- $crumbs->addTextCrumb(pht('Bulk Jobs'), '/daemon/bulk/');
$crumbs->addTextCrumb($title);
$crumbs->setBorder(true);
diff --git a/src/applications/daemon/controller/PhabricatorDaemonConsoleController.php b/src/applications/daemon/controller/PhabricatorDaemonConsoleController.php
--- a/src/applications/daemon/controller/PhabricatorDaemonConsoleController.php
+++ b/src/applications/daemon/controller/PhabricatorDaemonConsoleController.php
@@ -121,14 +121,13 @@
->setHeaderText(pht('Recently Completed Tasks (Last 15m)'))
->setTable($completed_table);
- $daemon_table = new PhabricatorDaemonLogListView();
- $daemon_table->setUser($viewer);
- $daemon_table->setDaemonLogs($logs);
-
- $daemon_panel = id(new PHUIObjectBoxView());
- $daemon_panel->setHeaderText(pht('Active Daemons'));
- $daemon_panel->setObjectList($daemon_table);
+ $daemon_table = id(new PhabricatorDaemonLogListView())
+ ->setUser($viewer)
+ ->setDaemonLogs($logs);
+ $daemon_panel = id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Active Daemons'))
+ ->setTable($daemon_table);
$tasks = id(new PhabricatorWorkerLeaseQuery())
->setSkipLease(true)
diff --git a/src/applications/daemon/controller/PhabricatorDaemonController.php b/src/applications/daemon/controller/PhabricatorDaemonController.php
--- a/src/applications/daemon/controller/PhabricatorDaemonController.php
+++ b/src/applications/daemon/controller/PhabricatorDaemonController.php
@@ -1,6 +1,11 @@
<?php
-abstract class PhabricatorDaemonController extends PhabricatorController {
+abstract class PhabricatorDaemonController
+ extends PhabricatorController {
+
+ public function shouldRequireAdmin() {
+ return true;
+ }
protected function buildSideNavView() {
$nav = new AphrontSideNavFilterView();
diff --git a/src/applications/daemon/controller/PhabricatorDaemonLogListController.php b/src/applications/daemon/controller/PhabricatorDaemonLogListController.php
--- a/src/applications/daemon/controller/PhabricatorDaemonLogListController.php
+++ b/src/applications/daemon/controller/PhabricatorDaemonLogListController.php
@@ -4,7 +4,7 @@
extends PhabricatorDaemonController {
public function handleRequest(AphrontRequest $request) {
- $viewer = $request->getViewer();
+ $viewer = $this->getViewer();
$pager = new AphrontCursorPagerView();
$pager->readFromRequest($request);
@@ -14,13 +14,13 @@
->setAllowStatusWrites(true)
->executeWithCursorPager($pager);
- $daemon_table = new PhabricatorDaemonLogListView();
- $daemon_table->setUser($request->getUser());
- $daemon_table->setDaemonLogs($logs);
+ $daemon_table = id(new PhabricatorDaemonLogListView())
+ ->setViewer($viewer)
+ ->setDaemonLogs($logs);
$box = id(new PHUIObjectBoxView())
->setHeaderText(pht('All Daemons'))
- ->appendChild($daemon_table);
+ ->setTable($daemon_table);
$crumbs = $this->buildApplicationCrumbs();
$crumbs->addTextCrumb(pht('All Daemons'));
diff --git a/src/applications/daemon/controller/PhabricatorDaemonLogViewController.php b/src/applications/daemon/controller/PhabricatorDaemonLogViewController.php
--- a/src/applications/daemon/controller/PhabricatorDaemonLogViewController.php
+++ b/src/applications/daemon/controller/PhabricatorDaemonLogViewController.php
@@ -16,10 +16,6 @@
return new Aphront404Response();
}
- $events = id(new PhabricatorDaemonLogEvent())->loadAllWhere(
- 'logID = %d ORDER BY id DESC LIMIT 1000',
- $log->getID());
-
$crumbs = $this->buildApplicationCrumbs();
$crumbs->addTextCrumb(pht('Daemon %s', $log->getID()));
$crumbs->setBorder(true);
@@ -69,23 +65,15 @@
$properties = $this->buildPropertyListView($log);
- $event_view = id(new PhabricatorDaemonLogEventsView())
- ->setUser($viewer)
- ->setEvents($events);
-
- $event_panel = id(new PHUIObjectBoxView())
- ->setHeaderText(pht('Events'))
- ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
- ->appendChild($event_view);
-
$object_box = id(new PHUIObjectBoxView())
+ ->setHeaderText(pht('Daemon Details'))
+ ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->addPropertyList($properties);
$view = id(new PHUITwoColumnView())
->setHeader($header)
->setFooter(array(
$object_box,
- $event_panel,
));
return $this->newPage()
diff --git a/src/applications/daemon/view/PhabricatorDaemonLogListView.php b/src/applications/daemon/view/PhabricatorDaemonLogListView.php
--- a/src/applications/daemon/view/PhabricatorDaemonLogListView.php
+++ b/src/applications/daemon/view/PhabricatorDaemonLogListView.php
@@ -14,65 +14,107 @@
$viewer = $this->getViewer();
$rows = array();
+ $daemons = $this->daemonLogs;
- $list = new PHUIObjectItemListView();
- $list->setFlush(true);
- foreach ($this->daemonLogs as $log) {
- $id = $log->getID();
- $epoch = $log->getDateCreated();
+ foreach ($daemons as $daemon) {
+ $id = $daemon->getID();
+ $host = $daemon->getHost();
+ $pid = $daemon->getPID();
+ $name = phutil_tag(
+ 'a',
+ array(
+ 'href' => "/daemon/log/{$id}/",
+ ),
+ $daemon->getDaemon());
- $item = id(new PHUIObjectItemView())
- ->setObjectName(pht('Daemon %s', $id))
- ->setHeader($log->getDaemon())
- ->setHref("/daemon/log/{$id}/")
- ->addIcon('none', phabricator_datetime($epoch, $viewer));
-
- $status = $log->getStatus();
+ $status = $daemon->getStatus();
switch ($status) {
case PhabricatorDaemonLog::STATUS_RUNNING:
- $item->setStatusIcon('fa-rocket green');
- $item->addAttribute(pht('This daemon is running.'));
+ $status_icon = 'fa-rocket green';
+ $status_label = pht('Running');
+ $status_tip = pht('This daemon is running.');
break;
case PhabricatorDaemonLog::STATUS_DEAD:
- $item->setStatusIcon('fa-warning red');
- $item->addAttribute(
- pht(
- 'This daemon is lost or exited uncleanly, and is presumed '.
- 'dead.'));
- $item->addIcon('fa-times grey', pht('Dead'));
+ $status_icon = 'fa-warning red';
+ $status_label = pht('Dead');
+ $status_tip = pht(
+ 'This daemon has been lost or exited uncleanly, and is '.
+ 'presumed dead.');
break;
case PhabricatorDaemonLog::STATUS_EXITING:
- $item->addAttribute(pht('This daemon is exiting.'));
- $item->addIcon('fa-check', pht('Exiting'));
+ $status_icon = 'fa-check';
+ $status_label = pht('Shutting Down');
+ $status_tip = pht('This daemon is shutting down.');
break;
case PhabricatorDaemonLog::STATUS_EXITED:
- $item->setDisabled(true);
- $item->addAttribute(pht('This daemon exited cleanly.'));
- $item->addIcon('fa-check grey', pht('Exited'));
+ $status_icon = 'fa-check grey';
+ $status_label = pht('Exited');
+ $status_tip = pht('This daemon exited cleanly.');
break;
case PhabricatorDaemonLog::STATUS_WAIT:
- $item->setStatusIcon('fa-clock-o blue');
- $item->addAttribute(
- pht(
- 'This daemon encountered an error recently and is waiting a '.
- 'moment to restart.'));
- $item->addIcon('fa-clock-o grey', pht('Waiting'));
+ $status_icon = 'fa-clock-o blue';
+ $status_label = pht('Waiting');
+ $status_tip = pht(
+ 'This daemon encountered an error recently and is waiting a '.
+ 'moment to restart.');
break;
case PhabricatorDaemonLog::STATUS_UNKNOWN:
default:
- $item->setStatusIcon('fa-warning orange');
- $item->addAttribute(
- pht(
- 'This daemon has not reported its status recently. It may '.
- 'have exited uncleanly.'));
- $item->addIcon('fa-warning', pht('Unknown'));
+ $status_icon = 'fa-warning orange';
+ $status_label = pht('Unknown');
+ $status_tip = pht(
+ 'This daemon has not reported its status recently. It may '.
+ 'have exited uncleanly.');
break;
}
- $list->addItem($item);
+ $status = phutil_tag(
+ 'span',
+ array(
+ 'sigil' => 'has-tooltip',
+ 'meta' => array(
+ 'tip' => $status_tip,
+ ),
+ ),
+ array(
+ id(new PHUIIconView())->setIcon($status_icon),
+ ' ',
+ $status_label,
+ ));
+
+ $launched = phabricator_datetime($daemon->getDateCreated(), $viewer);
+
+ $rows[] = array(
+ $id,
+ $host,
+ $pid,
+ $name,
+ $status,
+ $launched,
+ );
}
- return $list;
+ $table = id(new AphrontTableView($rows))
+ ->setHeaders(
+ array(
+ pht('ID'),
+ pht('Host'),
+ pht('PPID'),
+ pht('Daemon'),
+ pht('Status'),
+ pht('Launched'),
+ ))
+ ->setColumnClasses(
+ array(
+ null,
+ null,
+ null,
+ 'pri',
+ 'wide',
+ 'right date',
+ ));
+
+ return $table;
}
}

File Metadata

Mime Type
text/plain
Expires
Sun, May 12, 5:31 AM (3 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6275187
Default Alt Text
D15724.diff (14 KB)

Event Timeline