Remove registered device resource in case of errors in quickstart

A device resource needs to be registered with the API before being able
to create the `config.json` file that goes in a device.

This means thats the device image is configured and written to an
external drive (e.g: SDCard) *after* the device resource registered.

If any of the above operations fail, there will be an unitialized orphan
device living in the selected application that the user will have to
remove himself.
This commit is contained in:
Juan Cruz Viotti 2016-01-14 09:14:45 -04:00
parent 999120e711
commit add30b33a1
2 changed files with 10 additions and 0 deletions

View File

@ -226,6 +226,10 @@ limitations under the License.
var message;
message = 'Initializing a device requires administration permissions\ngiven that we need to access raw devices directly.\n';
return helpers.sudo(['os', 'initialize', temporalPath, '--type', application.device_type], message);
})["catch"](function(error) {
return resin.models.device.remove(device.uuid)["finally"](function() {
throw error;
});
});
});
}).then(function(device) {

View File

@ -299,6 +299,12 @@ exports.init =
'''
helpers.sudo([ 'os', 'initialize', temporalPath, '--type', application.device_type ], message)
# Make sure the device resource is removed if there is an
# error when configuring or initializing a device image
.catch (error) ->
resin.models.device.remove(device.uuid).finally ->
throw error
.then (device) ->
console.log('Done')
return device.uuid