Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F18756468
D19672.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
D19672.diff
View Options
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
Details
Attached
Mime Type
text/plain
Expires
Mon, Oct 6, 11:36 AM (1 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
8499269
Default Alt Text
D19672.diff (6 KB)
Attached To
Mode
D19672: Add Drydock logs to the RepositoryOperation UI
Attached
Detach File
Event Timeline
Log In to Comment