3 final class DrydockManagementReleaseLeaseWorkflow
4 extends DrydockManagementWorkflow
{
6 protected function didConstruct() {
8 ->setName('release-lease')
9 ->setSynopsis(pht('Release a lease.'))
16 'help' => pht('Lease ID to release.'),
21 public function execute(PhutilArgumentParser
$args) {
22 $ids = $args->getArg('id');
24 throw new PhutilArgumentUsageException(
26 'Specify one or more lease IDs to release with "%s".',
30 $viewer = $this->getViewer();
31 $drydock_phid = id(new PhabricatorDrydockApplication())->getPHID();
33 $leases = id(new DrydockLeaseQuery())
38 PhabricatorWorker
::setRunAllTasksInProcess(true);
39 foreach ($ids as $id) {
40 $lease = idx($leases, $id);
44 pht('Lease "%s" does not exist.', $id));
48 if (!$lease->canRelease()) {
51 pht('Lease "%s" is not releasable.', $id));
55 $command = DrydockCommand
::initializeNewCommand($viewer)
56 ->setTargetPHID($lease->getPHID())
57 ->setAuthorPHID($drydock_phid)
58 ->setCommand(DrydockCommand
::COMMAND_RELEASE
)
61 $lease->scheduleUpdate();
65 pht('Scheduled release of lease "%s".', $id));