Skip to content

Commit

Permalink
Add --no-backup option to databse:copy and database:copy:all (#125)
Browse files Browse the repository at this point in the history
* Create a moveDbs() function that does not backup dbs first and read --no-backup option for database:copy:all.

* Add --no-backup option to single database:copy.

* Combine backupAndMoveDbs() and moveDbs() into one method.

* Create move DBs no backup tests.

* Remove $backup var declaration from function call.
  • Loading branch information
earthday47 authored Oct 17, 2020
1 parent 54f467f commit 12ca1d8
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 9 deletions.
10 changes: 8 additions & 2 deletions src/Commands/AcquiaCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -221,11 +221,15 @@ protected function waitForNotification($response)
}

/**
* Copy all DBs from one environment to another.
*
* @param string $uuid
* @param EnvironmentResponse $environmentFrom
* @param EnvironmentResponse $environmentTo
* @param null|string $dbName The DB to move, if null move all DBs.
* @param boolean $backup Whether to backup DBs first.
*/
protected function backupAndMoveDbs($uuid, $environmentFrom, $environmentTo, $dbName = null)
protected function moveDbs($uuid, $environmentFrom, $environmentTo, $dbName = null, $backup = true)
{
if (null !== $dbName) {
$this->cloudapi->addQuery('filter', "name=${dbName}");
Expand All @@ -236,7 +240,9 @@ protected function backupAndMoveDbs($uuid, $environmentFrom, $environmentTo, $db
$this->cloudapi->clearQuery();

foreach ($databases as $database) {
$this->backupDb($uuid, $environmentTo, $database);
if ($backup) {
$this->backupDb($uuid, $environmentTo, $database);
}

// Copy DB from prod to non-prod.
$this->say(
Expand Down
31 changes: 25 additions & 6 deletions src/Commands/DbCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,16 @@ public function dbTruncate(Databases $databaseAdapter, $uuid, $dbName)
* @param string $dbName
*
* @command database:copy
* @option no-backup Do not backup the databases on production.
* @aliases db:copy
*/
public function dbCopy($uuid, $environmentFrom, $environmentTo, $dbName)
{
public function dbCopy(
$uuid,
$environmentFrom,
$environmentTo,
$dbName,
$options = ['no-backup']
) {
$environmentFrom = $this->cloudapiService->getEnvironment($uuid, $environmentFrom);
$environmentTo = $this->cloudapiService->getEnvironment($uuid, $environmentTo);

Expand All @@ -123,7 +129,11 @@ public function dbCopy($uuid, $environmentFrom, $environmentTo, $dbName)
)
)
) {
$this->backupAndMoveDbs($uuid, $environmentFrom, $environmentTo, $dbName);
if (!$options['no-backup']) {
$this->moveDbs($uuid, $environmentFrom, $environmentTo, $dbName);
} else {
$this->moveDbs($uuid, $environmentFrom, $environmentTo, $dbName, false);
}
}
}

Expand All @@ -135,10 +145,15 @@ public function dbCopy($uuid, $environmentFrom, $environmentTo, $dbName)
* @param string $environmentTo
*
* @command database:copy:all
* @option no-backup Do not backup the databases on production.
* @aliases db:copy:all
*/
public function dbCopyAll($uuid, $environmentFrom, $environmentTo)
{
public function dbCopyAll(
$uuid,
$environmentFrom,
$environmentTo,
$options = ['no-backup']
) {
$environmentFrom = $this->cloudapiService->getEnvironment($uuid, $environmentFrom);
$environmentTo = $this->cloudapiService->getEnvironment($uuid, $environmentTo);

Expand All @@ -151,7 +166,11 @@ public function dbCopyAll($uuid, $environmentFrom, $environmentTo)
)
)
) {
$this->backupAndMoveDbs($uuid, $environmentFrom, $environmentTo);
if (!$options['no-backup']) {
$this->moveDbs($uuid, $environmentFrom, $environmentTo);
} else {
$this->moveDbs($uuid, $environmentFrom, $environmentTo, null, false);
}
}
}
}
2 changes: 1 addition & 1 deletion src/Commands/DeployCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public function deployPrepare($uuid, $environmentTo, $environmentFrom = null)

$environmentTo = $this->cloudapiService->getEnvironment($uuid, $environmentTo);

$this->backupAndMoveDbs($uuid, $environmentFrom, $environmentTo);
$this->moveDbs($uuid, $environmentFrom, $environmentTo);
$this->copyFiles($uuid, $environmentFrom, $environmentTo);
}
}
13 changes: 13 additions & 0 deletions tests/Commands/DbCommandTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ public function dbProvider()
> Moving DB (database1) from Stage to Dev
> Backing up DB (database2) on Dev
> Moving DB (database2) from Stage to Dev
TEXT;

$dbCopyNoBackup = <<<TEXT
> Moving DB (database1) from Stage to Dev
> Moving DB (database2) from Stage to Dev
TEXT;

return [
Expand All @@ -59,6 +64,14 @@ public function dbProvider()
[
['database:copy:all', 'devcloud:devcloud2', 'test', 'dev'],
$dbCopy . PHP_EOL
],
[
['database:copy', 'devcloud:devcloud2', 'test', 'dev', 'dbName', '--no-backup'],
$dbCopyNoBackup . PHP_EOL
],
[
['database:copy:all', 'devcloud:devcloud2', 'test', 'dev', '--no-backup'],
$dbCopyNoBackup . PHP_EOL
]
];
}
Expand Down

0 comments on commit 12ca1d8

Please sign in to comment.