protected function executeAcquireLease(DrydockResource $resource, DrydockLease $lease)
 {
     // Because preallocated resources are manually created, we should verify
     // we have all the information we need.
     PhutilTypeSpec::checkMap($resource->getAttributesForTypeSpec(array('platform', 'host', 'port', 'credential', 'path')), array('platform' => 'string', 'host' => 'string', 'port' => 'string', 'credential' => 'string', 'path' => 'string'));
     $v_platform = $resource->getAttribute('platform');
     $v_path = $resource->getAttribute('path');
     // Similar to DrydockLocalHostBlueprint, we create a folder
     // on the remote host that the lease can use.
     $lease_id = $lease->getID();
     // Can't use DIRECTORY_SEPERATOR here because that is relevant to
     // the platform we're currently running on, not the platform we are
     // remoting to.
     $separator = '/';
     if ($v_platform === 'windows') {
         $separator = '\\';
     }
     // Clean up the directory path a little.
     $base_path = rtrim($v_path, '/');
     $base_path = rtrim($base_path, '\\');
     $full_path = $base_path . $separator . $lease_id;
     $cmd = $lease->getInterface('command');
     $cmd->execx('mkdir %s', $full_path);
     $lease->setAttribute('path', $full_path);
 }
 public function activateLease(DrydockBlueprint $blueprint, DrydockResource $resource, DrydockLease $lease)
 {
     $command_type = DrydockCommandInterface::INTERFACE_TYPE;
     $interface = $lease->getInterface($command_type);
     $cmd = array();
     $arg = array();
     $cmd[] = 'git clean -d --force';
     $cmd[] = 'git reset --hard HEAD';
     $cmd[] = 'git fetch';
     $commit = $lease->getAttribute('commit');
     $branch = $lease->getAttribute('branch');
     if ($commit !== null) {
         $cmd[] = 'git reset --hard %s';
         $arg[] = $commit;
     } else {
         if ($branch !== null) {
             $cmd[] = 'git reset --hard %s';
             $arg[] = $branch;
         }
     }
     $cmd = implode(' && ', $cmd);
     $argv = array_merge(array($cmd), $arg);
     $result = call_user_func_array(array($interface, 'execx'), $argv);
     $lease->activateOnResource($resource);
 }