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 "--lease" to specify a lease.'));
33 $argv = $args->getArg('argv');
35 throw new PhutilArgumentUsageException(
37 'Specify a command to run.'));
40 $lease = id(new DrydockLeaseQuery())
41 ->setViewer($this->getViewer())
42 ->withIDs(array($lease_id))
47 'Unable to load lease with ID "%s"!',
51 // TODO: Check lease state, etc.
53 $interface = $lease->getInterface(DrydockCommandInterface
::INTERFACE_TYPE
);
55 list($stdout, $stderr) = call_user_func_array(
56 array($interface, 'execx'),
59 fwrite(STDOUT
, $stdout);
60 fwrite(STDERR
, $stderr);