diff --git a/lib/actions-oclif/device/index.ts b/lib/actions-oclif/device/index.ts index 2007ed37..ef606978 100644 --- a/lib/actions-oclif/device/index.ts +++ b/lib/actions-oclif/device/index.ts @@ -69,19 +69,26 @@ export default class DeviceCmd extends Command { const balena = getBalenaSdk(); - const [device, overallStatus] = await Promise.all([ - balena.models.device.get(params.uuid, expandForAppName) as Promise< - ExtendedDevice - >, - // TODO: drop this and add `overall_status` to a $select in the above - // pine query once the overall_status field is moved to open-balena-api. - // See: https://github.com/balena-io/open-balena-api/issues/338 - balena.models.device - .get(params.uuid, { $select: 'overall_status' }) - .then(({ overall_status }) => overall_status) - .catchReturn(''), - ]); - device.status = overallStatus; + const device: ExtendedDevice = await balena.models.device.get(params.uuid, { + $select: [ + 'device_name', + 'id', + 'device_type', + 'overall_status', + 'is_online', + 'ip_address', + 'mac_address', + 'last_connectivity_event', + 'uuid', + 'is_on__commit', + 'supervisor_version', + 'is_web_accessible', + 'note', + 'os_version', + ], + ...expandForAppName, + }); + device.status = device.overall_status; device.dashboard_url = balena.models.device.getDashboardUrl(device.uuid); diff --git a/tests/commands/device/device.spec.ts b/tests/commands/device/device.spec.ts index a3cee520..b58c5a56 100644 --- a/tests/commands/device/device.spec.ts +++ b/tests/commands/device/device.spec.ts @@ -78,7 +78,6 @@ describe('balena device', function () { it('should list device details for provided uuid', async () => { api.expectGetWhoAmI({ optional: true, persist: true }); api.expectGetMixpanel({ optional: true }); - api.expectGetDeviceStatus(); api.scope .get( /^\/v5\/device\?.+&\$expand=belongs_to__application\(\$select=app_name\)/, @@ -103,7 +102,6 @@ describe('balena device', function () { // e.g. When user has a device associated with app that user is no longer a collaborator of. api.expectGetWhoAmI({ optional: true, persist: true }); api.expectGetMixpanel({ optional: true }); - api.expectGetDeviceStatus(); api.scope .get( /^\/v5\/device\?.+&\$expand=belongs_to__application\(\$select=app_name\)/, diff --git a/tests/test-data/api-response/device-missing-app.json b/tests/test-data/api-response/device-missing-app.json index b224b622..66ff2944 100644 --- a/tests/test-data/api-response/device-missing-app.json +++ b/tests/test-data/api-response/device-missing-app.json @@ -4,54 +4,19 @@ "belongs_to__application": [ ], "id": 1747415, - "belongs_to__user": { - "__deferred": { - "uri": "/resin/user(46272)" - }, - "__id": 46272 - }, "is_managed_by__device": null, - "actor": 4180757, - "should_be_running__release": null, "device_name": "sparkling-wood", "device_type": "raspberrypi4-64", "uuid": "fda508c8583011b8466c26abdd5159f2", "is_on__commit": "18756d3386c25a044db66b89e0409804", "note": null, - "local_id": null, - "status": "Idle", "is_online": false, - "last_connectivity_event": "2019-11-23T00:26:35.074Z", - "is_connected_to_vpn": false, - "last_vpn_event": "2019-11-23T00:26:35.074Z", "ip_address": "192.168.0.112", - "vpn_address": null, - "public_address": "89.186.29.129", + "mac_address": null, "os_version": "balenaOS 2.44.0+rev3", - "os_variant": "dev", "supervisor_version": "10.3.7", - "should_be_managed_by__supervisor_release": null, - "is_managed_by__service_instance": { - "__deferred": { - "uri": "/resin/service_instance(124111)" - }, - "__id": 124111 - }, - "provisioning_progress": null, - "provisioning_state": "", - "download_progress": null, "is_web_accessible": false, - "longitude": "22.5853", - "latitude": "51.2712", - "location": "Lublin, Lublin, Poland", - "custom_longitude": "", - "custom_latitude": "", - "logs_channel": null, - "is_locked_until__date": null, - "is_accessible_by_support_until__date": null, - "created_at": "2019-11-18T12:27:37.423Z", - "is_active": true, - "api_heartbeat_state": "offline", + "overall_status": "idle", "__metadata": { "uri": "/resin/device(@id)?@id=1747415" } diff --git a/tests/test-data/api-response/device.json b/tests/test-data/api-response/device.json index c922c6e3..58852c08 100644 --- a/tests/test-data/api-response/device.json +++ b/tests/test-data/api-response/device.json @@ -8,54 +8,19 @@ } ], "id": 1747415, - "belongs_to__user": { - "__deferred": { - "uri": "/resin/user(46272)" - }, - "__id": 46272 - }, "is_managed_by__device": null, - "actor": 4180757, - "should_be_running__release": null, "device_name": "sparkling-wood", "device_type": "raspberrypi4-64", "uuid": "fda508c8583011b8466c26abdd5159f2", "is_on__commit": "18756d3386c25a044db66b89e0409804", "note": null, - "local_id": null, - "status": "Idle", "is_online": false, - "last_connectivity_event": "2019-11-23T00:26:35.074Z", - "is_connected_to_vpn": false, - "last_vpn_event": "2019-11-23T00:26:35.074Z", "ip_address": "192.168.0.112", - "vpn_address": null, - "public_address": "89.186.29.129", + "mac_address": null, "os_version": "balenaOS 2.44.0+rev3", - "os_variant": "dev", "supervisor_version": "10.3.7", - "should_be_managed_by__supervisor_release": null, - "is_managed_by__service_instance": { - "__deferred": { - "uri": "/resin/service_instance(124111)" - }, - "__id": 124111 - }, - "provisioning_progress": null, - "provisioning_state": "", - "download_progress": null, "is_web_accessible": false, - "longitude": "22.5853", - "latitude": "51.2712", - "location": "Lublin, Lublin, Poland", - "custom_longitude": "", - "custom_latitude": "", - "logs_channel": null, - "is_locked_until__date": null, - "is_accessible_by_support_until__date": null, - "created_at": "2019-11-18T12:27:37.423Z", - "is_active": true, - "api_heartbeat_state": "offline", + "overall_status": "offline", "__metadata": { "uri": "/resin/device(@id)?@id=1747415" }