Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/drydock/management/DrydockManagementReclaimWorkflow.php
12256 views
1
<?php
2
3
final class DrydockManagementReclaimWorkflow
4
extends DrydockManagementWorkflow {
5
6
protected function didConstruct() {
7
$this
8
->setName('reclaim')
9
->setSynopsis(pht('Reclaim unused resources.'))
10
->setArguments(array());
11
}
12
13
public function execute(PhutilArgumentParser $args) {
14
$viewer = $this->getViewer();
15
$drydock_phid = id(new PhabricatorDrydockApplication())->getPHID();
16
17
PhabricatorWorker::setRunAllTasksInProcess(true);
18
19
$resources = id(new DrydockResourceQuery())
20
->setViewer($viewer)
21
->withStatuses(
22
array(
23
DrydockResourceStatus::STATUS_ACTIVE,
24
))
25
->execute();
26
foreach ($resources as $resource) {
27
$command = DrydockCommand::initializeNewCommand($viewer)
28
->setTargetPHID($resource->getPHID())
29
->setAuthorPHID($drydock_phid)
30
->setCommand(DrydockCommand::COMMAND_RECLAIM)
31
->save();
32
33
$resource->scheduleUpdate();
34
35
$resource = $resource->reload();
36
37
$name = pht(
38
'Resource %d: %s',
39
$resource->getID(),
40
$resource->getResourceName());
41
42
switch ($resource->getStatus()) {
43
case DrydockResourceStatus::STATUS_RELEASED:
44
case DrydockResourceStatus::STATUS_DESTROYED:
45
echo tsprintf(
46
"%s\n",
47
pht(
48
'Resource "%s" was reclaimed.',
49
$name));
50
break;
51
default:
52
echo tsprintf(
53
"%s\n",
54
pht(
55
'Resource "%s" could not be reclaimed.',
56
$name));
57
break;
58
}
59
}
60
61
}
62
63
}
64
65