[Nostromo] Revert RuntimeInterface

This commit is contained in:
Andrés Montañez 2017-01-01 01:33:34 -03:00
parent 196f84ceb1
commit d8cd3b4058
8 changed files with 44 additions and 273 deletions

View file

@ -10,7 +10,7 @@
namespace Mage\Command; namespace Mage\Command;
use Mage\Runtime\RuntimeInterface; use Mage\Runtime\Runtime;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Psr\Log\LogLevel; use Psr\Log\LogLevel;
use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\Command;
@ -23,17 +23,17 @@ use Symfony\Component\Console\Command\Command;
abstract class AbstractCommand extends Command abstract class AbstractCommand extends Command
{ {
/** /**
* @var RuntimeInterface Current Runtime instance * @var Runtime Current Runtime instance
*/ */
protected $runtime; protected $runtime;
/** /**
* Set the Runtime configuration * Set the Runtime configuration
* *
* @param RuntimeInterface $runtime Runtime container * @param Runtime $runtime Runtime container
* @return AbstractCommand * @return AbstractCommand
*/ */
public function setRuntime(RuntimeInterface $runtime) public function setRuntime(Runtime $runtime)
{ {
$this->runtime = $runtime; $this->runtime = $runtime;

View file

@ -13,7 +13,7 @@ namespace Mage\Command\BuiltIn;
use Mage\Runtime\Exception\DeploymentException; use Mage\Runtime\Exception\DeploymentException;
use Mage\Runtime\Exception\InvalidEnvironmentException; use Mage\Runtime\Exception\InvalidEnvironmentException;
use Mage\Runtime\Exception\RuntimeException; use Mage\Runtime\Exception\RuntimeException;
use Mage\Runtime\RuntimeInterface; use Mage\Runtime\Runtime;
use Mage\Task\ErrorException; use Mage\Task\ErrorException;
use Mage\Task\ExecuteOnRollbackInterface; use Mage\Task\ExecuteOnRollbackInterface;
use Mage\Task\AbstractTask; use Mage\Task\AbstractTask;
@ -105,7 +105,7 @@ class DeployCommand extends AbstractCommand
protected function runDeployment(OutputInterface $output) protected function runDeployment(OutputInterface $output)
{ {
// Run Pre Deploy Tasks // Run Pre Deploy Tasks
$this->runtime->setStage(RuntimeInterface::PRE_DEPLOY); $this->runtime->setStage(Runtime::PRE_DEPLOY);
$preDeployTasks = $this->runtime->getTasks(); $preDeployTasks = $this->runtime->getTasks();
if ($this->runtime->getEnvironmentConfig('branch', false) && !$this->runtime->inRollback()) { if ($this->runtime->getEnvironmentConfig('branch', false) && !$this->runtime->inRollback()) {
@ -130,7 +130,7 @@ class DeployCommand extends AbstractCommand
$output->writeln(' No hosts defined, skipping On Deploy tasks'); $output->writeln(' No hosts defined, skipping On Deploy tasks');
$output->writeln(''); $output->writeln('');
} else { } else {
$this->runtime->setStage(RuntimeInterface::ON_DEPLOY); $this->runtime->setStage(Runtime::ON_DEPLOY);
$onDeployTasks = $this->runtime->getTasks(); $onDeployTasks = $this->runtime->getTasks();
if ($this->runtime->getEnvironmentConfig('releases', false) && !$this->runtime->inRollback()) { if ($this->runtime->getEnvironmentConfig('releases', false) && !$this->runtime->inRollback()) {
@ -164,7 +164,7 @@ class DeployCommand extends AbstractCommand
$output->writeln(' No hosts defined, skipping On Release tasks'); $output->writeln(' No hosts defined, skipping On Release tasks');
$output->writeln(''); $output->writeln('');
} else { } else {
$this->runtime->setStage(RuntimeInterface::ON_RELEASE); $this->runtime->setStage(Runtime::ON_RELEASE);
$onReleaseTasks = $this->runtime->getTasks(); $onReleaseTasks = $this->runtime->getTasks();
if ($this->runtime->getEnvironmentConfig('releases', false)) { if ($this->runtime->getEnvironmentConfig('releases', false)) {
@ -188,7 +188,7 @@ class DeployCommand extends AbstractCommand
$output->writeln(' No hosts defined, skipping Post Release tasks'); $output->writeln(' No hosts defined, skipping Post Release tasks');
$output->writeln(''); $output->writeln('');
} else { } else {
$this->runtime->setStage(RuntimeInterface::POST_RELEASE); $this->runtime->setStage(Runtime::POST_RELEASE);
$postReleaseTasks = $this->runtime->getTasks(); $postReleaseTasks = $this->runtime->getTasks();
if ($this->runtime->getEnvironmentConfig('releases', false) && !$this->runtime->inRollback()) { if ($this->runtime->getEnvironmentConfig('releases', false) && !$this->runtime->inRollback()) {
@ -207,7 +207,7 @@ class DeployCommand extends AbstractCommand
} }
// Run Post Deploy Tasks // Run Post Deploy Tasks
$this->runtime->setStage(RuntimeInterface::POST_DEPLOY); $this->runtime->setStage(Runtime::POST_DEPLOY);
$postDeployTasks = $this->runtime->getTasks(); $postDeployTasks = $this->runtime->getTasks();
if ($this->runtime->getEnvironmentConfig('releases', false) && !$this->runtime->inRollback()) { if ($this->runtime->getEnvironmentConfig('releases', false) && !$this->runtime->inRollback()) {
if (!in_array('deploy/targz/cleanup', $postDeployTasks)) { if (!in_array('deploy/targz/cleanup', $postDeployTasks)) {

View file

@ -20,8 +20,14 @@ use Mage\Runtime\Exception\InvalidEnvironmentException;
* *
* @author Andrés Montañez <andresmontanez@gmail.com> * @author Andrés Montañez <andresmontanez@gmail.com>
*/ */
class Runtime implements RuntimeInterface class Runtime
{ {
const PRE_DEPLOY = 'pre-deploy';
const ON_DEPLOY = 'on-deploy';
const POST_DEPLOY = 'post-deploy';
const ON_RELEASE = 'on-release';
const POST_RELEASE = 'post-release';
/** /**
* @var array Magallanes configuration * @var array Magallanes configuration
*/ */
@ -65,7 +71,7 @@ class Runtime implements RuntimeInterface
/** /**
* Generate the Release ID * Generate the Release ID
* *
* @return RuntimeInterface * @return Runtime
*/ */
public function generateReleaseId() public function generateReleaseId()
{ {
@ -77,7 +83,7 @@ class Runtime implements RuntimeInterface
* Sets the Release ID * Sets the Release ID
* *
* @param string $releaseId Release ID * @param string $releaseId Release ID
* @return RuntimeInterface * @return Runtime
*/ */
public function setReleaseId($releaseId) public function setReleaseId($releaseId)
{ {
@ -99,7 +105,7 @@ class Runtime implements RuntimeInterface
* Sets the Runtime in Rollback mode On or Off * Sets the Runtime in Rollback mode On or Off
* *
* @param bool $inRollback * @param bool $inRollback
* @return RuntimeInterface * @return Runtime
*/ */
public function setRollback($inRollback) public function setRollback($inRollback)
{ {
@ -122,7 +128,7 @@ class Runtime implements RuntimeInterface
* *
* @param mixed $key Variable name * @param mixed $key Variable name
* @param mixed $value Variable value * @param mixed $value Variable value
* @return RuntimeInterface * @return Runtime
*/ */
public function setVar($key, $value) public function setVar($key, $value)
{ {
@ -150,7 +156,7 @@ class Runtime implements RuntimeInterface
* Sets the Logger instance * Sets the Logger instance
* *
* @param LoggerInterface $logger Logger instance * @param LoggerInterface $logger Logger instance
* @return RuntimeInterface * @return Runtime
*/ */
public function setLogger(LoggerInterface $logger = null) public function setLogger(LoggerInterface $logger = null)
{ {
@ -162,7 +168,7 @@ class Runtime implements RuntimeInterface
* Sets the Magallanes Configuration to the Runtime * Sets the Magallanes Configuration to the Runtime
* *
* @param array $configuration Configuration * @param array $configuration Configuration
* @return RuntimeInterface * @return Runtime
*/ */
public function setConfiguration($configuration) public function setConfiguration($configuration)
{ {
@ -228,7 +234,7 @@ class Runtime implements RuntimeInterface
* Sets the working Environment * Sets the working Environment
* *
* @param string $environment Environment name * @param string $environment Environment name
* @return RuntimeInterface * @return Runtime
* @throws InvalidEnvironmentException * @throws InvalidEnvironmentException
*/ */
public function setEnvironment($environment) public function setEnvironment($environment)
@ -255,7 +261,7 @@ class Runtime implements RuntimeInterface
* Sets the working stage * Sets the working stage
* *
* @param string $stage Stage code * @param string $stage Stage code
* @return RuntimeInterface * @return Runtime
*/ */
public function setStage($stage) public function setStage($stage)
{ {
@ -295,7 +301,7 @@ class Runtime implements RuntimeInterface
* Sets the working Host * Sets the working Host
* *
* @param string $host Host name * @param string $host Host name
* @return RuntimeInterface * @return Runtime
*/ */
public function setWorkingHost($host) public function setWorkingHost($host)
{ {
@ -336,9 +342,9 @@ class Runtime implements RuntimeInterface
public function runCommand($cmd, $timeout = 120) public function runCommand($cmd, $timeout = 120)
{ {
switch ($this->getStage()) { switch ($this->getStage()) {
case RuntimeInterface::ON_DEPLOY: case self::ON_DEPLOY:
case RuntimeInterface::ON_RELEASE: case self::ON_RELEASE:
case RuntimeInterface::POST_RELEASE: case self::POST_RELEASE:
return $this->runRemoteCommand($cmd, true, $timeout); return $this->runRemoteCommand($cmd, true, $timeout);
break; break;
default: default:

View file

@ -1,234 +0,0 @@
<?php
/*
* This file is part of the Magallanes package.
*
* (c) Andrés Montañez <andres@andresmontanez.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Mage\Runtime;
use Psr\Log\LoggerInterface;
use Psr\Log\LogLevel;
use Symfony\Component\Process\Process;
use Mage\Runtime\Exception\InvalidEnvironmentException;
/**
* Interface for the Runtime container
*
* @author Andrés Montañez <andresmontanez@gmail.com>
*/
interface RuntimeInterface
{
const PRE_DEPLOY = 'pre-deploy';
const ON_DEPLOY = 'on-deploy';
const POST_DEPLOY = 'post-deploy';
const ON_RELEASE = 'on-release';
const POST_RELEASE = 'post-release';
/**
* Generate the Release ID
*
* @return RuntimeInterface
*/
public function generateReleaseId();
/**
* Sets the Release ID
*
* @param string $releaseId Release ID
* @return RuntimeInterface
*/
public function setReleaseId($releaseId);
/**
* Retrieve the current Release ID
*
* @return null|string Release ID
*/
public function getReleaseId();
/**
* Sets the Runtime in Rollback mode On or Off
*
* @param bool $inRollback
* @return RuntimeInterface
*/
public function setRollback($inRollback);
/**
* Indicates if Runtime is in rollback
*
* @return bool
*/
public function inRollback();
/**
* Sets a value in the Vars bag
*
* @param mixed $key Variable name
* @param mixed $value Variable value
* @return RuntimeInterface
*/
public function setVar($key, $value);
/**
* Retrieve a value from the Vars bag
*
* @param mixed $key Variable name
* @param mixed $default Variable default value, returned if not found
* @return mixed
*/
public function getVar($key, $default = null);
/**
* Sets the Logger instance
*
* @param LoggerInterface $logger Logger instance
* @return RuntimeInterface
*/
public function setLogger(LoggerInterface $logger = null);
/**
* Sets the Magallanes Configuration to the Runtime
*
* @param array $configuration Configuration
* @return RuntimeInterface
*/
public function setConfiguration($configuration);
/**
* Retrieve the Configuration
*
* @return array
*/
public function getConfiguration();
/**
* Retrieves the Configuration options for a specific section in the configuration
*
* @param mixed $key Section name
* @param mixed $default Default value
* @return mixed
*/
public function getConfigOptions($key, $default = null);
/**
* Returns the configuration for the current Environment
* If $key is provided, it will be returned only that section, if not found the default value will be returned,
* if $key is not provided, the whole Environment's configuration will be returned
*
* @param mixed $key Section name
* @param mixed $default Default value
* @return mixed
* @throws InvalidEnvironmentException
*/
public function getEnvironmentConfig($key = null, $default = null);
/**
* Sets the working Environment
*
* @param string $environment Environment name
* @return RuntimeInterface
* @throws InvalidEnvironmentException
*/
public function setEnvironment($environment);
/**
* Returns the current working Environment
*
* @return null|string
*/
public function getEnvironment();
/**
* Sets the working stage
*
* @param string $stage Stage code
* @return RuntimeInterface
*/
public function setStage($stage);
/**
* Retrieve the current wokring Stage
*
* @return string
*/
public function getStage();
/**
* Retrieve the defined Tasks for the current Environment and Stage
*
* @return array
* @throws InvalidEnvironmentException
*/
public function getTasks();
/**
* Sets the working Host
*
* @param string $host Host name
* @return RuntimeInterface
*/
public function setWorkingHost($host);
/**
* Retrieve the working Host
*
* @return null|string
*/
public function getWorkingHost();
/**
* Logs a Message into the Logger
*
* @param string $message Log message
* @param string $level Log Level
*/
public function log($message, $level = LogLevel::DEBUG);
/**
* Executes a command, it will be run Locally or Remotely based on the working Stage
*
* @param string $cmd Command to execute
* @param int $timeout Seconds to wait
* @return Process
*/
public function runCommand($cmd, $timeout = 120);
/**
* Execute a command locally
*
* @param string $cmd Command to execute
* @param int $timeout Seconds to wait
* @return Process
*/
public function runLocalCommand($cmd, $timeout = 120);
/**
* Executes a command remotely, if jail is true, it will run inside the Host Path and the Release (if available)
*
* @param string $cmd Command to execute
* @param bool $jail Jail the command
* @param int $timeout Seconds to wait
* @return Process
* @throws InvalidEnvironmentException
*/
public function runRemoteCommand($cmd, $jail = true, $timeout = 120);
/**
* Get the SSH configuration based on the environment
*
* @return array
*/
public function getSSHConfig();
/**
* Gets a Temporal File name
*
* @return string
*/
public function getTempFile();
}

View file

@ -10,7 +10,7 @@
namespace Mage\Task; namespace Mage\Task;
use Mage\Runtime\RuntimeInterface; use Mage\Runtime\Runtime;
/** /**
* Abstract base class for Magallanes Tasks * Abstract base class for Magallanes Tasks
@ -25,7 +25,7 @@ abstract class AbstractTask
protected $options = []; protected $options = [];
/** /**
* @var RuntimeInterface * @var Runtime
*/ */
protected $runtime; protected $runtime;
@ -68,10 +68,10 @@ abstract class AbstractTask
/** /**
* Set the Runtime instance * Set the Runtime instance
* *
* @param RuntimeInterface $runtime * @param Runtime $runtime
* @return AbstractTask * @return AbstractTask
*/ */
public function setRuntime(RuntimeInterface $runtime) public function setRuntime(Runtime $runtime)
{ {
$this->runtime = $runtime; $this->runtime = $runtime;
return $this; return $this;

View file

@ -10,7 +10,7 @@
namespace Mage\Task; namespace Mage\Task;
use Mage\Runtime\RuntimeInterface; use Mage\Runtime\Runtime;
use Mage\Runtime\Exception\RuntimeException; use Mage\Runtime\Exception\RuntimeException;
use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\Finder;
use Symfony\Component\Finder\SplFileInfo; use Symfony\Component\Finder\SplFileInfo;
@ -23,7 +23,7 @@ use Symfony\Component\Finder\SplFileInfo;
class TaskFactory class TaskFactory
{ {
/** /**
* @var RuntimeInterface * @var Runtime
*/ */
protected $runtime; protected $runtime;
@ -35,9 +35,9 @@ class TaskFactory
/** /**
* Constructor * Constructor
* *
* @param RuntimeInterface $runtime * @param Runtime $runtime
*/ */
public function __construct(RuntimeInterface $runtime) public function __construct(Runtime $runtime)
{ {
$this->runtime = $runtime; $this->runtime = $runtime;
$this->loadBuiltInTasks(); $this->loadBuiltInTasks();

View file

@ -2,7 +2,6 @@
namespace Mage\Tests\Runtime; namespace Mage\Tests\Runtime;
use Mage\Runtime\Runtime; use Mage\Runtime\Runtime;
use Mage\Runtime\RuntimeInterface;
use Symfony\Component\Process\Process; use Symfony\Component\Process\Process;
class RuntimeMockup extends Runtime class RuntimeMockup extends Runtime
@ -17,7 +16,7 @@ class RuntimeMockup extends Runtime
/** /**
* Generate the Release ID * Generate the Release ID
* *
* @return RuntimeInterface * @return Runtime
*/ */
public function generateReleaseId() public function generateReleaseId()
{ {

View file

@ -10,7 +10,7 @@
namespace Mage; namespace Mage;
use Mage\Runtime\RuntimeInterface; use Mage\Runtime\Runtime;
use DateTime; use DateTime;
/** /**
@ -29,23 +29,23 @@ class Utils
public static function getStageName($stage) public static function getStageName($stage)
{ {
switch ($stage) { switch ($stage) {
case RuntimeInterface::PRE_DEPLOY: case Runtime::PRE_DEPLOY:
return 'Pre Deployment'; return 'Pre Deployment';
break; break;
case RuntimeInterface::ON_DEPLOY: case Runtime::ON_DEPLOY:
return 'On Deployment'; return 'On Deployment';
break; break;
case RuntimeInterface::POST_DEPLOY: case Runtime::POST_DEPLOY:
return 'Post Deployment'; return 'Post Deployment';
break; break;
case RuntimeInterface::ON_RELEASE: case Runtime::ON_RELEASE:
return 'On Release'; return 'On Release';
break; break;
case RuntimeInterface::POST_RELEASE: case Runtime::POST_RELEASE:
return 'Post Release'; return 'Post Release';
break; break;
} }