mirror of
https://we.phorge.it/source/phorge.git
synced 2025-03-08 02:19:34 +01:00
Add buttons to delete or free tasks from the queue
Summary: See T709. I also ran into a case in Drydock where this is useful for testing/development. Test Plan: Freed lease of a task; deleted a task. Reviewers: btrahan, jungejason Reviewed By: btrahan CC: aran, epriestley Maniphest Tasks: T709 Differential Revision: https://secure.phabricator.com/D1469
This commit is contained in:
parent
51bc18e93f
commit
7a9e6af008
6 changed files with 128 additions and 2 deletions
|
@ -756,6 +756,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorWorkerTask' => 'infrastructure/daemon/workers/storage/task',
|
||||
'PhabricatorWorkerTaskData' => 'infrastructure/daemon/workers/storage/taskdata',
|
||||
'PhabricatorWorkerTaskDetailController' => 'applications/daemon/controller/workertaskdetail',
|
||||
'PhabricatorWorkerTaskUpdateController' => 'applications/daemon/controller/workertaskupdate',
|
||||
'PhabricatorXHPASTViewController' => 'applications/xhpastview/controller/base',
|
||||
'PhabricatorXHPASTViewDAO' => 'applications/xhpastview/storage/base',
|
||||
'PhabricatorXHPASTViewFrameController' => 'applications/xhpastview/controller/viewframe',
|
||||
|
@ -1421,6 +1422,7 @@ phutil_register_library_map(array(
|
|||
'PhabricatorWorkerTask' => 'PhabricatorWorkerDAO',
|
||||
'PhabricatorWorkerTaskData' => 'PhabricatorWorkerDAO',
|
||||
'PhabricatorWorkerTaskDetailController' => 'PhabricatorDaemonController',
|
||||
'PhabricatorWorkerTaskUpdateController' => 'PhabricatorDaemonController',
|
||||
'PhabricatorXHPASTViewController' => 'PhabricatorController',
|
||||
'PhabricatorXHPASTViewDAO' => 'PhabricatorLiskDAO',
|
||||
'PhabricatorXHPASTViewFrameController' => 'PhabricatorXHPASTViewController',
|
||||
|
|
|
@ -259,6 +259,8 @@ class AphrontDefaultApplicationConfiguration
|
|||
|
||||
'/daemon/' => array(
|
||||
'task/(?P<id>\d+)/$' => 'PhabricatorWorkerTaskDetailController',
|
||||
'task/(?P<id>\d+)/(?P<action>[^/]+)/$'
|
||||
=> 'PhabricatorWorkerTaskUpdateController',
|
||||
'log/' => array(
|
||||
'$' => 'PhabricatorDaemonLogListController',
|
||||
'combined/$' => 'PhabricatorDaemonCombinedLogController',
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Copyright 2011 Facebook, Inc.
|
||||
* Copyright 2012 Facebook, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -118,13 +118,33 @@ class PhabricatorWorkerTaskDetailController
|
|||
$form
|
||||
->appendChild(
|
||||
id(new AphrontFormSubmitControl())
|
||||
->addCancelButton('/daemon/'));
|
||||
->addCancelButton('/daemon/', 'Back'));
|
||||
|
||||
$panel = new AphrontPanelView();
|
||||
$panel->setHeader('Task Detail');
|
||||
$panel->setWidth(AphrontPanelView::WIDTH_WIDE);
|
||||
$panel->appendChild($form);
|
||||
|
||||
$panel->addButton(
|
||||
javelin_render_tag(
|
||||
'a',
|
||||
array(
|
||||
'href' => '/daemon/task/'.$task->getID().'/delete/',
|
||||
'class' => 'button grey',
|
||||
'sigil' => 'workflow',
|
||||
),
|
||||
'Delete Task'));
|
||||
|
||||
$panel->addButton(
|
||||
javelin_render_tag(
|
||||
'a',
|
||||
array(
|
||||
'href' => '/daemon/task/'.$task->getID().'/release/',
|
||||
'class' => 'button grey',
|
||||
'sigil' => 'workflow',
|
||||
),
|
||||
'Free Lease'));
|
||||
|
||||
return $this->buildStandardPageResponse(
|
||||
$panel,
|
||||
array(
|
||||
|
|
|
@ -11,6 +11,7 @@ phutil_require_module('phabricator', 'applications/repository/storage/commit');
|
|||
phutil_require_module('phabricator', 'applications/repository/storage/repository');
|
||||
phutil_require_module('phabricator', 'infrastructure/daemon/workers/storage/task');
|
||||
phutil_require_module('phabricator', 'infrastructure/daemon/workers/storage/taskdata');
|
||||
phutil_require_module('phabricator', 'infrastructure/javelin/markup');
|
||||
phutil_require_module('phabricator', 'view/form/base');
|
||||
phutil_require_module('phabricator', 'view/form/control/markup');
|
||||
phutil_require_module('phabricator', 'view/form/control/static');
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Copyright 2012 Facebook, Inc.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
class PhabricatorWorkerTaskUpdateController
|
||||
extends PhabricatorDaemonController {
|
||||
|
||||
private $id;
|
||||
private $action;
|
||||
|
||||
public function willProcessRequest(array $data) {
|
||||
$this->id = $data['id'];
|
||||
$this->action = $data['action'];
|
||||
}
|
||||
|
||||
public function processRequest() {
|
||||
$request = $this->getRequest();
|
||||
$user = $request->getUser();
|
||||
|
||||
$task = id(new PhabricatorWorkerTask())->load($this->id);
|
||||
if (!$task) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
if ($request->isFormPost()) {
|
||||
switch ($this->action) {
|
||||
case 'delete':
|
||||
$task->delete();
|
||||
break;
|
||||
case 'release':
|
||||
$task->setLeaseOwner(null);
|
||||
$task->setLeaseExpires(time());
|
||||
$task->save();
|
||||
break;
|
||||
}
|
||||
return id(new AphrontRedirectResponse())->setURI('/daemon/');
|
||||
}
|
||||
|
||||
$dialog = new AphrontDialogView();
|
||||
$dialog->setUser($user);
|
||||
|
||||
switch ($this->action) {
|
||||
case 'delete':
|
||||
$dialog->setTitle('Really delete task?');
|
||||
$dialog->appendChild(
|
||||
'<p>The work this task represents will never be performed if you '.
|
||||
'delete it. Are you sure you want to delete it?</p>');
|
||||
$dialog->addSubmitButton('Delete Task');
|
||||
break;
|
||||
case 'release':
|
||||
$dialog->setTitle('Really free task lease?');
|
||||
$dialog->appendChild(
|
||||
'<p>If the process which owns the task lease is still doing work '.
|
||||
'on it, the work may be performed twice. Are you sure you '.
|
||||
'want to free the lease?</p>');
|
||||
$dialog->addSubmitButton('Free Lease');
|
||||
break;
|
||||
default:
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
|
||||
$dialog->addCancelButton('/daemon/');
|
||||
|
||||
return id(new AphrontDialogResponse())->setDialog($dialog);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
<?php
|
||||
/**
|
||||
* This file is automatically generated. Lint this module to rebuild it.
|
||||
* @generated
|
||||
*/
|
||||
|
||||
|
||||
|
||||
phutil_require_module('phabricator', 'aphront/response/404');
|
||||
phutil_require_module('phabricator', 'aphront/response/dialog');
|
||||
phutil_require_module('phabricator', 'aphront/response/redirect');
|
||||
phutil_require_module('phabricator', 'applications/daemon/controller/base');
|
||||
phutil_require_module('phabricator', 'infrastructure/daemon/workers/storage/task');
|
||||
phutil_require_module('phabricator', 'view/dialog');
|
||||
|
||||
phutil_require_module('phutil', 'utils');
|
||||
|
||||
|
||||
phutil_require_source('PhabricatorWorkerTaskUpdateController.php');
|
Loading…
Add table
Reference in a new issue