1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-30 01:10:58 +01:00

Add a setup warning for calls to deprecated Conduit methods

Summary: We probably can't land this yet, since `arc tasks` still uses `maniphest.find` and `arc close` still uses `differential.getrevision`. We should clean those up and wait at least 30 days before committing this (maybe).

Test Plan: Saw setup issues for `maniphest.find` and `differential.getrevision` calls.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley, joshuaspence, FacebookPOC, aran

Differential Revision: https://secure.phabricator.com/D6333
This commit is contained in:
epriestley 2015-02-02 14:19:10 -08:00
parent b2320c2e68
commit 9af376a743
2 changed files with 66 additions and 0 deletions

View file

@ -211,6 +211,7 @@ phutil_register_library_map(array(
'ConduitCallTestCase' => 'applications/conduit/call/__tests__/ConduitCallTestCase.php',
'ConduitConnectConduitAPIMethod' => 'applications/conduit/method/ConduitConnectConduitAPIMethod.php',
'ConduitConnectionGarbageCollector' => 'applications/conduit/garbagecollector/ConduitConnectionGarbageCollector.php',
'ConduitDeprecatedCallSetupCheck' => 'applications/conduit/check/ConduitDeprecatedCallSetupCheck.php',
'ConduitException' => 'applications/conduit/protocol/exception/ConduitException.php',
'ConduitGetCapabilitiesConduitAPIMethod' => 'applications/conduit/method/ConduitGetCapabilitiesConduitAPIMethod.php',
'ConduitGetCertificateConduitAPIMethod' => 'applications/conduit/method/ConduitGetCertificateConduitAPIMethod.php',
@ -3321,6 +3322,7 @@ phutil_register_library_map(array(
'ConduitCallTestCase' => 'PhabricatorTestCase',
'ConduitConnectConduitAPIMethod' => 'ConduitAPIMethod',
'ConduitConnectionGarbageCollector' => 'PhabricatorGarbageCollector',
'ConduitDeprecatedCallSetupCheck' => 'PhabricatorSetupCheck',
'ConduitException' => 'Exception',
'ConduitGetCapabilitiesConduitAPIMethod' => 'ConduitAPIMethod',
'ConduitGetCertificateConduitAPIMethod' => 'ConduitAPIMethod',

View file

@ -0,0 +1,64 @@
<?php
final class ConduitDeprecatedCallSetupCheck extends PhabricatorSetupCheck {
protected function executeChecks() {
$methods = id(new PhabricatorConduitMethodQuery())
->setViewer(PhabricatorUser::getOmnipotentUser())
->withIsDeprecated(true)
->execute();
if (!$methods) {
return;
}
$method_names = mpull($methods, 'getAPIMethodName');
$table = new PhabricatorConduitMethodCallLog();
$conn_r = $table->establishConnection('r');
$calls = queryfx_all(
$conn_r,
'SELECT DISTINCT method FROM %T WHERE dateCreated > %d
AND method IN (%Ls)',
$table->getTableName(),
time() - (60 * 60 * 24 * 30),
$method_names);
$calls = ipull($calls, 'method', 'method');
foreach ($calls as $method_name) {
$method = $methods[$method_name];
$summary = pht(
'Deprecated Conduit method `%s` was called in the last 30 days. '.
'You should migrate away from use of this method: it will be '.
'removed in a future version of Phabricator.',
$method_name);
$uri = PhabricatorEnv::getURI('/conduit/log/?methods='.$method_name);
$description = $method->getMethodStatusDescription();
$message = pht(
'Deprecated Conduit method %s was called in the last 30 days. '.
'You should migrate away from use of this method: it will be '.
'removed in a future version of Phabricator.'.
"\n\n".
"%s: %s".
"\n\n".
'If you have already migrated all callers away from this method, '.
'you can safely ignore this setup issue.',
phutil_tag('tt', array(), $method_name),
phutil_tag('tt', array(), $method_name),
$description);
$this
->newIssue('conduit.deprecated.'.$method_name)
->setShortName(pht('Deprecated Conduit Method'))
->setName(pht('Deprecated Conduit Method "%s" In Use', $method_name))
->setSummary($summary)
->setMessage($message)
->addLink($uri, pht('View Method Call Logs'));
}
}
}