Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Fist make sure the backup file that you want to restore is in the S3 bucket that belongs to that service. A service can only download files from its own bucket.
  2. Once the backup in place in S3 we are ready to authenticate and get an administrator's session token:
    Code Block
    curl -i -k -H sessionToken:YourSessionToken -H Accept:application/json -H Content-Type:application/json -d '{
      "email": "<admin username>",
      "password": "<admin password>"
    }' http://localhost:8080/services-authentication-0.6-SNAPSHOT/auth/v1/session
    
  3. Now use the administrator's token to start the restore daemon. You must provide the file name of the backup file found on S3 to the daemon:
    Request
    Code Block
    curl -i -k -H sessionToken:YourSessionToken -H Accept:application/json -H Content-Type:application/json -d '{
      "url": "BackupDaemonJob6696-911306061719227050.zip"
    }' http://localhost:8080/services-repository-0.6-SNAPSHOT/repo/v1/startRestoreDaemon
    
    Response
    Code Block
    HTTP/1.1 201 Created
    Server: Apache-Coyote/1.1
    Content-Type: application/json
    Transfer-Encoding: chunked
    Date: Thu, 18 Aug 2011 23:31:28 GMT
    
    {
    	"id":"4",
    	"type":"RESTORE",
    	"status":"STARTED",
    	"progresssMessage":"Starting...",
    	"progresssCurrent":0,
    	"progresssTotal":0,
    	"errorMessage":null,
    	"errorDetails":null,
    	"backupUrl":null,
    	"totalTimeMS":0,
    	"startedBy":"platform@sagebase.org",
    	"startedOn":1313710288153
    }
    
  4. Once the daemon is started its progress can be monitored in the same way as we monitored the backup daemon, using the 'id' provided by the /startRestoreDaemon:
    Request
    Code Block
    curl -i -k -H sessionToken:YourSessionToken -H Accept:application/json -H Content-Type:application/json  http://localhost:8080/services-repository-0.6-SNAPSHOT/repo/v1/daemonStatus/4
    
    Response
    Code Block
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Type: application/json
    Transfer-Encoding: chunked
    Date: Thu, 18 Aug 2011 23:37:16 GMT
    
    {
    	"id":"4",
    	"type":"RESTORE",
    	"status":"FAILED",
    	"progresssMessage":"Starting to download the file from S3...",
    	"progresssCurrent":0,
    	"progresssTotal":0,
    	"errorMessage":"Access Denied",
    	"errorDetails":"Status Code: 403, AWS Request ID: 5A6F56E7416E1203, AWS Error Code: AccessDenied, AWS Error Message: Access Denied, S3 Extended Request ID: ...",
    	"totalTimeMS":781,
    	"startedBy":"platform@sagebase.org",
    	"startedOn":1313710288153
    }
    
    Just like in our backup example, the restore failed as indicated by the 'status'='FAILED'. Again it looks like the service did not have permission to download the S3 file. Upon closer inspection we find that we have a cut and paste error with the file name. Once our error is identified, we can start another restore daemon with the following results:
    Response
    Code Block
    HTTP/1.1 200 OK
    Server: Apache-Coyote/1.1
    Content-Type: application/json
    Transfer-Encoding: chunked
    Date: Thu, 18 Aug 2011 23:59:13 GMT
    
    {
    	"id":"5",
    	"type":"RESTORE",
    	"status":"COMPLETED",
    	"progresssMessage":"Finished: RESTORE",
    	"progresssCurrent":1164611,
    	"progresssTotal":1164611,
    	"errorMessage":null,
    	"errorDetails":null,
    	"backupUrl":"https://s3.amazonaws.com/devdata.sagebase.org/BackupDaemonJob6696-5911306061719227050.zip",
    	"totalTimeMS":46800,
    	"startedBy":"platform@sagebase.org",
    	"startedOn":1313711855784
    }
    
    This time we can see that the restore 'status'='COMPLETED', and that the entire restore took ~47 seconds to complete. We have successfully migrated all data from the staging to our local repository service.