typesafehub / conductr-cli

CLI for Lightbend ConductR
Other
16 stars 21 forks source link

add support for backup of a conductr cluster #517

Closed ashutoshraina closed 7 years ago

ashutoshraina commented 7 years ago

ConductR Backup

ashutoshraina commented 7 years ago

Will resolve #149

ashutoshraina commented 7 years ago

Backup Member and Agent Info in the conductr-cli

ashutoshraina commented 7 years ago

Backup the entire cluster using conductr-cli

ashutoshraina commented 7 years ago

Back up a single bundle using conductr-cli

ashutoshraina commented 7 years ago

Error Scenarios :

Invalid Bundle

# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle o [17:20:01] C:127
$ conduct backup yolo
Error: ConductR backup could not be completed : Bundle yolo was not found.

Bundle has already been unloaded


# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle o [17:22:33]
$ conduct unload visualizer
Bundle unload request sent.
Bundle cabaae7cf37b1cf99b3861515cd5e77a-d54620c7bc91897bbb2f25faaac25f46 waiting to be uninstalled
Bundle cabaae7cf37b1cf99b3861515cd5e77a-d54620c7bc91897bbb2f25faaac25f46 uninstalled
Print ConductR info with: conduct info

# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle o [17:22:49]
$ conduct backup visualizer
Error: ConductR backup could not be completed : Bundle visualizer was not found.

Sandbox not running


# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle o [17:22:56] C:1
$ sandbox stop
|------------------------------------------------|
| Stopping ConductR                              |
|------------------------------------------------|
ConductR core pid 46008 stopped
ConductR agent pid 46044 stopped
ConductR agent pid 46046 stopped
ConductR agent pid 46045 stopped
ConductR has been successfully stopped

# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle o [17:23:22]
$ conduct backup visualizer
Error: Unable to contact ConductR.
Error: Reason: HTTPConnectionPool(host='127.0.0.1', port=9005): Max retries exceeded with url: /v2/bundles (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x103ad98d0>: Failed to establish a new connection: [Errno 61] Connection refused',))
Error: Start the ConductR sandbox with: sandbox run IMAGE_VERSION
ashutoshraina commented 7 years ago

Manual Testing

Backup of a Bundle

# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle x [16:46:35]
$ conduct backup eslite > backup.zip

# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle x [16:46:48] C:1
$ unzip backup.zip -d backup
Archive:  backup.zip
 extracting: backup/agents.json
 extracting: backup/bundles.json
 extracting: backup/d54620c7bc91897bbb2f25faaac25f46b11e029ed327f91c7a10931ec45bd792.zip
 extracting: backup/eslite-57e432d0c647be2bbc83fa8e59ee469bb59d1f72df31f3d82cab0ad396130fe7.zip
 extracting: backup/members.json

Backup of the entire Cluster


# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle x [16:44:52] C:1
$ unzip backup.zip backup
Archive:  backup.zip
caution: filename not matched:  backup

# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle x [16:45:02] C:11
$ unzip backup.zip -d backup
Archive:  backup.zip
 extracting: backup/agents.json
 extracting: backup/bundles.json
 extracting: backup/continuous-delivery-870ee7d6a4f5853229275cca14b604b8aca62a5e74819c0a092858cc75b6c186.zip
 extracting: backup/d54620c7bc91897bbb2f25faaac25f46b11e029ed327f91c7a10931ec45bd792.zip
 extracting: backup/eslite-57e432d0c647be2bbc83fa8e59ee469bb59d1f72df31f3d82cab0ad396130fe7.zip
 extracting: backup/members.json
 extracting: backup/reactive-maps-backend-summary-abf60451c6af18adcc851d67b369b7f54810d12f3a0ef80a89bdc2d9dff49a10.zip
 extracting: backup/reactive-maps-frontend-69aa58f00909e36a3cb4229414698b6436295de8368898b5620b24f52c40c5c3.zip
 extracting: backup/visualizer-cabaae7cf37b1cf99b3861515cd5e77a16fa9638e225fa234929cc1d46dde937.zip

Backup While Unloading a bundle


# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle x [16:39:03]
$ conduct backup > ashutosh.zip

# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle x [16:39:26] C:1
$ unzip ashutosh.zip
Archive:  ashutosh.zip
 extracting: agents.json
 extracting: bundles.json
 extracting: continuous-delivery-870ee7d6a4f5853229275cca14b604b8aca62a5e74819c0a092858cc75b6c186.zip
 extracting: eslite-57e432d0c647be2bbc83fa8e59ee469bb59d1f72df31f3d82cab0ad396130fe7.zip
 extracting: members.json
 extracting: reactive-maps-backend-summary-abf60451c6af18adcc851d67b369b7f54810d12f3a0ef80a89bdc2d9dff49a10.zip
 extracting: reactive-maps-frontend-69aa58f00909e36a3cb4229414698b6436295de8368898b5620b24f52c40c5c3.zip
 extracting: visualizer-cabaae7cf37b1cf99b3861515cd5e77a16fa9638e225fa234929cc1d46dde937.zip
# ashutosh @ ashutoshs-MacBook-Pro in ~ [16:38:43]
$ conduct unload reactive-maps-backend-region
Bundle unload request sent.
Bundle 6273d7a5b059d0e978c6d69ee1a5d7b4-d54620c7bc91897bbb2f25faaac25f46 waiting to be uninstalled
Bundle 6273d7a5b059d0e978c6d69ee1a5d7b4-d54620c7bc91897bbb2f25faaac25f46 uninstalled
Print ConductR info with: conduct info

# ashutosh @ ashutoshs-MacBook-Pro in ~ [16:39:22]
$ conduct info
Licensed To: 2e8b3724-d81e-4ba5-94b1-47bd9da02775
Max ConductR agents: 3
Expires In: 64 days (Wed 20 Sep 2017 14:41PM)
ConductR Version(s): 2.1.*, 2.1.0-beta.1
Grants: akka-sbr, cinnamon, conductr

ID               NAME                                    TAG  #REP  #STR  #RUN  ROLES
870ee7d-d54620c  continuous-delivery                   2.1.0     1     0     1  continuous-delivery
57e432d-d54620c  eslite                                2.1.0     1     0     1  elasticsearch
abf6045-d54620c  reactive-maps-backend-summary                   1     0     0  intranet
69aa58f-d54620c  reactive-maps-frontend         1.0-SNAPSHOT     1     0     0  dmz
cabaae7-d54620c  visualizer                            2.1.0     1     0     1  web

Backup while loading a bundle

# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle x [16:49:58]
$ conduct backup > backup.zip

# ashutosh @ ashutoshs-MacBook-Pro in ~/github/conductr-cli on git:backup_bundle x [16:50:50] C:1
$ unzip backup.zip -d backup
Archive:  backup.zip
 extracting: backup/agents.json
 extracting: backup/bundles.json
 extracting: backup/continuous-delivery-870ee7d6a4f5853229275cca14b604b8aca62a5e74819c0a092858cc75b6c186.zip
 extracting: backup/d54620c7bc91897bbb2f25faaac25f46b11e029ed327f91c7a10931ec45bd792.zip
 extracting: backup/eslite-57e432d0c647be2bbc83fa8e59ee469bb59d1f72df31f3d82cab0ad396130fe7.zip
 extracting: backup/members.json
 extracting: backup/reactive-maps-backend-region-6273d7a5b059d0e978c6d69ee1a5d7b4f0185008d7e57614a4a20c253a18fe28.zip
 extracting: backup/reactive-maps-backend-summary-abf60451c6af18adcc851d67b369b7f54810d12f3a0ef80a89bdc2d9dff49a10.zip
 extracting: backup/reactive-maps-frontend-69aa58f00909e36a3cb4229414698b6436295de8368898b5620b24f52c40c5c3.zip
 extracting: backup/visualizer-cabaae7cf37b1cf99b3861515cd5e77a16fa9638e225fa234929cc1d46dde937.zip
# ashutosh @ ashutoshs-MacBook-Pro in ~ [16:50:25]
$ conduct load reactive-maps-backend-region
Retrieving bundle..
Resolving bundle using [bintray_resolver, docker_resolver]
Loading bundle from cache typesafe/bundle/reactive-maps-backend-region
Retrieving from cache /Users/ashutosh/.conductr/cache/bundle/reactive-maps-backend-region-v1-6273d7a5b059d0e978c6d69ee1a5d7b4f0185008d7e57614a4a20c253a18fe28.zip
Loading bundle to ConductR..
[##################################################] 100%
Bundle 6273d7a5b059d0e978c6d69ee1a5d7b4-d54620c7bc91897bbb2f25faaac25f46 is installed
Bundle loaded.
Start bundle with:        conduct run 6273d7a-d54620c
Unload bundle with:       conduct unload 6273d7a-d54620c
Print ConductR info with: conduct info
Print bundle info with:   conduct info 6273d7a-d54620c