3 final class DrydockManagementCommandWorkflow
4 extends DrydockManagementWorkflow
{
6 protected function didConstruct() {
9 ->setSynopsis(pht('Run a command on a leased resource.'))
15 'help' => pht('Lease ID.'),
20 'help' => pht('Command to execute.'),
25 public function execute(PhutilArgumentParser
$args) {
26 $lease_id = $args->getArg('lease');
28 throw new PhutilArgumentUsageException(
30 'Use %s to specify a lease.',
34 $argv = $args->getArg('argv');
36 throw new PhutilArgumentUsageException(
38 'Specify a command to run.'));
41 $lease = id(new DrydockLeaseQuery())
42 ->setViewer($this->getViewer())
43 ->withIDs(array($lease_id))
48 'Unable to load lease with ID "%s"!',
52 // TODO: Check lease state, etc.
54 $interface = $lease->getInterface(DrydockCommandInterface
::INTERFACE_TYPE
);
56 list($stdout, $stderr) = call_user_func_array(
57 array($interface, 'execx'),
60 fwrite(STDOUT
, $stdout);
61 fwrite(STDERR
, $stderr);