Exemple #1
0
 /**
  * Maps a given server to a task.
  *
  * @param Stage        $stage  Stage instance
  * @param AbstractTask $task   Task instance
  * @param Server       $server Server instance
  *
  * @return null
  */
 private function addServer(Stage $stage, AbstractTask $task, Server $server)
 {
     $stageName = $stage->getName();
     $taskName = $task->getName();
     if (!array_key_exists('servers', $this->mapping[$stageName]['tasks'][$taskName])) {
         $this->mapping[$stageName]['tasks'][$taskName]['servers'] = array();
     }
     foreach ($this->mapping[$stageName]['tasks'][$taskName]['servers'] as $serverAdded) {
         if ($serverAdded === $server) {
             throw new \LogicException(sprintf("Can't add server '%s' to task '%s' twice.", $server->getName(), $task->getName()));
         }
     }
     $this->mapping[$stageName]['tasks'][$taskName]['servers'][] = $server;
 }
Exemple #2
0
 /**
  * Creates a ssh session for a given server.
  *
  * @param Server $server
  *
  * @return Session
  */
 public function createFromServer(Server $server)
 {
     $config = new Configuration($server->getHost(), $server->getPort());
     switch (true) {
         case $server->getUsername() && $server->getPassword():
             $auth = new Password($server->getUsername(), $server->getPassword());
             break;
         case $server->getPrivateKey():
             $auth = new PublicKeyFile($server->getUsername(), $server->getPublicKey(), $server->getPrivateKey(), $server->getKeyPhrase());
             break;
         default:
             throw new \DomainException(sprintf('No authentication credentials given for server: %s', $server->getName()));
             break;
     }
     $session = new Session($config, $auth);
     return $session;
 }