Page MenuHomePhabricator

D19672.id.diff
No OneTemporary

D19672.id.diff

diff --git a/src/applications/drydock/application/PhabricatorDrydockApplication.php b/src/applications/drydock/application/PhabricatorDrydockApplication.php
--- a/src/applications/drydock/application/PhabricatorDrydockApplication.php
+++ b/src/applications/drydock/application/PhabricatorDrydockApplication.php
@@ -93,6 +93,8 @@
'' => 'DrydockRepositoryOperationViewController',
'status/' => 'DrydockRepositoryOperationStatusController',
'dismiss/' => 'DrydockRepositoryOperationDismissController',
+ 'logs/(?:query/(?P<queryKey>[^/]+)/)?' =>
+ 'DrydockLogListController',
),
),
),
diff --git a/src/applications/drydock/controller/DrydockLogController.php b/src/applications/drydock/controller/DrydockLogController.php
--- a/src/applications/drydock/controller/DrydockLogController.php
+++ b/src/applications/drydock/controller/DrydockLogController.php
@@ -6,6 +6,7 @@
private $blueprint;
private $resource;
private $lease;
+ private $operation;
public function setBlueprint(DrydockBlueprint $blueprint) {
$this->blueprint = $blueprint;
@@ -34,6 +35,15 @@
return $this->lease;
}
+ public function setOperation(DrydockRepositoryOperation $operation) {
+ $this->operation = $operation;
+ return $this;
+ }
+
+ public function getOperation() {
+ return $this->operation;
+ }
+
public function buildSideNavView() {
$nav = new AphrontSideNavFilterView();
$nav->setBaseURI(new PhutilURI($this->getApplicationURI()));
@@ -56,6 +66,11 @@
$engine->setLease($lease);
}
+ $operation = $this->getOperation();
+ if ($operation) {
+ $engine->setOperation($operation);
+ }
+
$engine->addNavigationItems($nav->getMenu());
$nav->selectFilter(null);
@@ -66,9 +81,12 @@
protected function buildApplicationCrumbs() {
$crumbs = parent::buildApplicationCrumbs();
+ $viewer = $this->getViewer();
+
$blueprint = $this->getBlueprint();
$resource = $this->getResource();
$lease = $this->getLease();
+ $operation = $this->getOperation();
if ($blueprint) {
$id = $blueprint->getID();
@@ -111,6 +129,20 @@
$crumbs->addTextCrumb(
pht('Logs'),
$this->getApplicationURI("lease/{$id}/logs/"));
+ } else if ($operation) {
+ $id = $operation->getID();
+
+ $crumbs->addTextCrumb(
+ pht('Operations'),
+ $this->getApplicationURI('operation/'));
+
+ $crumbs->addTextCrumb(
+ pht('Repository Operation %d', $id),
+ $this->getApplicationURI("operation/{$id}/"));
+
+ $crumbs->addTextCrumb(
+ pht('Logs'),
+ $this->getApplicationURI("operation/{$id}/logs/"));
}
return $crumbs;
diff --git a/src/applications/drydock/controller/DrydockLogListController.php b/src/applications/drydock/controller/DrydockLogListController.php
--- a/src/applications/drydock/controller/DrydockLogListController.php
+++ b/src/applications/drydock/controller/DrydockLogListController.php
@@ -46,6 +46,17 @@
$engine->setLease($lease);
$this->setLease($lease);
break;
+ case 'operation':
+ $operation = id(new DrydockRepositoryOperationQuery())
+ ->setViewer($viewer)
+ ->withIDs(array($id))
+ ->executeOne();
+ if (!$operation) {
+ return new Aphront404Response();
+ }
+ $engine->setOperation($operation);
+ $this->setOperation($operation);
+ break;
default:
return new Aphront404Response();
}
diff --git a/src/applications/drydock/controller/DrydockRepositoryOperationViewController.php b/src/applications/drydock/controller/DrydockRepositoryOperationViewController.php
--- a/src/applications/drydock/controller/DrydockRepositoryOperationViewController.php
+++ b/src/applications/drydock/controller/DrydockRepositoryOperationViewController.php
@@ -47,13 +47,22 @@
->setUser($viewer)
->setOperation($operation);
+ $log_query = id(new DrydockLogQuery())
+ ->withOperationPHIDs(array($operation->getPHID()));
+
+ $logs = $this->buildLogBox(
+ $log_query,
+ $this->getApplicationURI("operation/{$id}/logs/query/all/"));
+
$view = id(new PHUITwoColumnView())
->setHeader($header)
->setCurtain($curtain)
->addPropertySection(pht('Properties'), $properties)
- ->setMainColumn(array(
- $status_view,
- ));
+ ->setMainColumn(
+ array(
+ $status_view,
+ $logs,
+ ));
return $this->newPage()
->setTitle($title)
diff --git a/src/applications/drydock/query/DrydockLogSearchEngine.php b/src/applications/drydock/query/DrydockLogSearchEngine.php
--- a/src/applications/drydock/query/DrydockLogSearchEngine.php
+++ b/src/applications/drydock/query/DrydockLogSearchEngine.php
@@ -5,6 +5,7 @@
private $blueprint;
private $resource;
private $lease;
+ private $operation;
public function setBlueprint(DrydockBlueprint $blueprint) {
$this->blueprint = $blueprint;
@@ -33,6 +34,15 @@
return $this->lease;
}
+ public function setOperation(DrydockRepositoryOperation $operation) {
+ $this->operation = $operation;
+ return $this;
+ }
+
+ public function getOperation() {
+ return $this->operation;
+ }
+
public function canUseInPanelContext() {
// Prevent use on Dashboard panels since all log queries currently need a
// parent object and these don't seem particularly useful in any case.
@@ -65,6 +75,11 @@
$query->withLeasePHIDs(array($lease->getPHID()));
}
+ $operation = $this->getOperation();
+ if ($operation) {
+ $query->withOperationPHIDs(array($operation->getPHID()));
+ }
+
return $query;
}
@@ -97,9 +112,15 @@
return "/drydock/lease/{$id}/logs/{$path}";
}
+ $operation = $this->getOperation();
+ if ($operation) {
+ $id = $operation->getID();
+ return "/drydock/operation/{$id}/logs/{$path}";
+ }
+
throw new Exception(
pht(
- 'Search engine has no blueprint, resource, or lease.'));
+ 'Search engine has no blueprint, resource, lease, or operation.'));
}
protected function getBuiltinQueryNames() {

File Metadata

Mime Type
text/plain
Expires
Tue, Oct 7, 8:14 AM (1 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
8499269
Default Alt Text
D19672.id.diff (6 KB)

Event Timeline