mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-18 21:02:41 +01:00
Add a summary view of all repository errors to the repository cluster screen
Summary: Ref T11559. This makes managing large numbers of repositories slightly easier. Test Plan: {F1796119} Reviewers: chad Reviewed By: chad Maniphest Tasks: T11559 Differential Revision: https://secure.phabricator.com/D16472
This commit is contained in:
parent
024a6693d3
commit
5504f37eb2
2 changed files with 83 additions and 1 deletions
|
@ -27,10 +27,15 @@ final class PhabricatorConfigClusterRepositoriesController
|
||||||
->setBorder(true);
|
->setBorder(true);
|
||||||
|
|
||||||
$repository_status = $this->buildClusterRepositoryStatus();
|
$repository_status = $this->buildClusterRepositoryStatus();
|
||||||
|
$repository_errors = $this->buildClusterRepositoryErrors();
|
||||||
|
|
||||||
$content = id(new PhabricatorConfigPageView())
|
$content = id(new PhabricatorConfigPageView())
|
||||||
->setHeader($header)
|
->setHeader($header)
|
||||||
->setContent($repository_status);
|
->setContent(
|
||||||
|
array(
|
||||||
|
$repository_status,
|
||||||
|
$repository_errors,
|
||||||
|
));
|
||||||
|
|
||||||
return $this->newPage()
|
return $this->newPage()
|
||||||
->setTitle($title)
|
->setTitle($title)
|
||||||
|
@ -338,4 +343,70 @@ final class PhabricatorConfigClusterRepositoriesController
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private function buildClusterRepositoryErrors() {
|
||||||
|
$viewer = $this->getViewer();
|
||||||
|
|
||||||
|
$messages = id(new PhabricatorRepositoryStatusMessage())->loadAllWhere(
|
||||||
|
'statusCode IN (%Ls)',
|
||||||
|
array(
|
||||||
|
PhabricatorRepositoryStatusMessage::CODE_ERROR,
|
||||||
|
));
|
||||||
|
|
||||||
|
$repository_ids = mpull($messages, 'getRepositoryID');
|
||||||
|
if ($repository_ids) {
|
||||||
|
// NOTE: We're bypassing policies when loading repositories because we
|
||||||
|
// want to show errors exist even if the viewer can't see the repository.
|
||||||
|
// We use handles to describe the repository below, so the viewer won't
|
||||||
|
// actually be able to see any particulars if they can't see the
|
||||||
|
// repository.
|
||||||
|
$repositories = id(new PhabricatorRepositoryQuery())
|
||||||
|
->setViewer(PhabricatorUser::getOmnipotentUser())
|
||||||
|
->withIDs($repository_ids)
|
||||||
|
->execute();
|
||||||
|
$repositories = mpull($repositories, null, 'getID');
|
||||||
|
}
|
||||||
|
|
||||||
|
$rows = array();
|
||||||
|
foreach ($messages as $message) {
|
||||||
|
$repository = idx($repositories, $message->getRepositoryID());
|
||||||
|
if (!$repository) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$repository->isTracked()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$icon = id(new PHUIIconView())
|
||||||
|
->setIcon('fa-exclamation-triangle red');
|
||||||
|
|
||||||
|
$rows[] = array(
|
||||||
|
$icon,
|
||||||
|
$viewer->renderHandle($repository->getPHID()),
|
||||||
|
phutil_tag(
|
||||||
|
'a',
|
||||||
|
array(
|
||||||
|
'href' => $repository->getPathURI('manage/status/'),
|
||||||
|
),
|
||||||
|
$message->getStatusTypeName()),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return id(new AphrontTableView($rows))
|
||||||
|
->setNoDataString(
|
||||||
|
pht('No active repositories have outstanding errors.'))
|
||||||
|
->setHeaders(
|
||||||
|
array(
|
||||||
|
null,
|
||||||
|
pht('Repository'),
|
||||||
|
pht('Error'),
|
||||||
|
))
|
||||||
|
->setColumnClasses(
|
||||||
|
array(
|
||||||
|
null,
|
||||||
|
'pri',
|
||||||
|
'wide',
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,4 +40,15 @@ final class PhabricatorRepositoryStatusMessage
|
||||||
return idx($this->parameters, $key, $default);
|
return idx($this->parameters, $key, $default);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getStatusTypeName() {
|
||||||
|
$names = array(
|
||||||
|
self::TYPE_INIT => pht('Error While Initializing Repository'),
|
||||||
|
self::TYPE_FETCH => pht('Error While Fetching Changes'),
|
||||||
|
self::TYPE_NEEDS_UPDATE => pht('Repository Needs Update'),
|
||||||
|
);
|
||||||
|
|
||||||
|
$type = $this->getStatusType();
|
||||||
|
return idx($names, $type, $type);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue