Merge pull request #1434 from balena-io/1433-move-same-arch-apps

Support moving devices to applications of a compatible architecture
This commit is contained in:
Thodoris Greasidis 2019-09-16 21:11:02 +03:00 committed by GitHub
commit ae691391b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -366,11 +366,22 @@ exports.move =
patterns = require('../utils/patterns')
balena.models.device.get(params.uuid, expandForAppName).then (device) ->
return options.application or patterns.selectApplication (application) ->
return _.every [
application.device_type is device.device_type
device.belongs_to__application[0].app_name isnt application.app_name
]
return options.application if options.application
return Promise.all([
balena.models.device.getManifestBySlug(device.device_type)
balena.models.config.getDeviceTypes()
]).then ([deviceDeviceType, deviceTypes]) ->
compatibleDeviceTypes = deviceTypes.filter (dt) ->
balena.models.os.isArchitectureCompatibleWith(deviceDeviceType.arch, dt.arch) &&
!!dt.isDependent == !!deviceDeviceType.isDependent &&
dt.state != 'DISCONTINUED'
return patterns.selectApplication (application) ->
return _.every [
_.some(compatibleDeviceTypes, (dt) -> dt.slug == application.device_type)
device.belongs_to__application[0].app_name isnt application.app_name
]
.tap (application) ->
return balena.models.device.move(params.uuid, application)
.then (application) ->