Skip to content

Commit

Permalink
Device: explicitly fetch only the presented fields
Browse files Browse the repository at this point in the history
Depends on open-balena adding the mac_address &
the overall_status device fields, but the latest cli
version is probably already not working, since some
of its dependencies already use the v14 SDK which
needs the v6 model, that the open-balena-api doesn't
have yet either.

Change-type: minor
See: https://www.flowdock.com/app/rulemotion/i-cli/threads/SaSXFlJEv-dpk9uUngWY225zv2D
See: balena-io/open-balena-api#388
See: balena-io/open-balena-api#338
See: balena-io/balena-sdk#920
Signed-off-by: Thodoris Greasidis <thodoris@balena.io>
  • Loading branch information
thgreasi committed Jul 9, 2020
1 parent 463f3f4 commit 5915c72
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 89 deletions.
33 changes: 20 additions & 13 deletions lib/actions-oclif/device/index.ts
Expand Up @@ -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);

Expand Down
2 changes: 0 additions & 2 deletions tests/commands/device/device.spec.ts
Expand Up @@ -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\)/,
Expand All @@ -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\)/,
Expand Down
39 changes: 2 additions & 37 deletions tests/test-data/api-response/device-missing-app.json
Expand Up @@ -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"
}
Expand Down
39 changes: 2 additions & 37 deletions tests/test-data/api-response/device.json
Expand Up @@ -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"
}
Expand Down

0 comments on commit 5915c72

Please sign in to comment.