@balena/open-balena-api 43.4.1-build-renovate-valkey-valkey-9-x-010829685c9d65bc46e30b3727625c47c341d47a-1 → 43.5.0-build-linked-supervisor-app-during-registration-9a5773a4fbeb31b72dbac4aa6293c80a09ef619f-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,35 @@
|
|
|
1
1
|
import * as semver from 'balena-semver';
|
|
2
|
-
import _ from 'lodash';
|
|
3
2
|
import { sbvrUtils, hooks, permissions, errors as pinejsErrors, } from '@balena/pinejs';
|
|
4
3
|
const { BadRequestError } = pinejsErrors;
|
|
4
|
+
hooks.addPureHook('POST', 'resin', 'device', {
|
|
5
|
+
/**
|
|
6
|
+
* When the device's initial supervisor version is provided during registration, set the corresponding should_be_managed_by__release resource.
|
|
7
|
+
*/
|
|
8
|
+
async POSTPARSE({ request, api }) {
|
|
9
|
+
if (typeof request.values.supervisor_version === 'string' &&
|
|
10
|
+
typeof request.values.is_of__device_type === 'number') {
|
|
11
|
+
const [supervisorRelease] = await getSupervisorReleaseResource(api, request.values.supervisor_version, {
|
|
12
|
+
is_supported_by__device_type: {
|
|
13
|
+
$any: {
|
|
14
|
+
$alias: 'dt',
|
|
15
|
+
$expr: {
|
|
16
|
+
dt: {
|
|
17
|
+
id: request.values.is_of__device_type,
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
if (supervisorRelease == null) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// We are not using setSupervisorReleaseResource in a POSTRUN, since that only sets
|
|
27
|
+
// the supervisor release FK to device that have no supervisor_release set, and by the
|
|
28
|
+
// that POSTRUN for a POST, the device would already have a supervisor_release set.
|
|
29
|
+
request.values.should_be_managed_by__release = supervisorRelease.id;
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
});
|
|
5
33
|
hooks.addPureHook('PATCH', 'resin', 'device', {
|
|
6
34
|
/**
|
|
7
35
|
* When a device checks in with it's initial supervisor version, set the corresponding should_be_managed_by__release resource
|
|
@@ -89,7 +117,7 @@ async function checkSupervisorReleaseUpgrades(api, deviceIds, newSupervisorRelea
|
|
|
89
117
|
}
|
|
90
118
|
}
|
|
91
119
|
}
|
|
92
|
-
async function getSupervisorReleaseResource(api, supervisorVersion,
|
|
120
|
+
async function getSupervisorReleaseResource(api, supervisorVersion, cpuArchFilter) {
|
|
93
121
|
return await api.get({
|
|
94
122
|
resource: 'release',
|
|
95
123
|
options: {
|
|
@@ -114,16 +142,16 @@ async function getSupervisorReleaseResource(api, supervisorVersion, archId) {
|
|
|
114
142
|
$alias: 'dt',
|
|
115
143
|
$expr: {
|
|
116
144
|
dt: {
|
|
117
|
-
is_of__cpu_architecture:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
$
|
|
121
|
-
|
|
122
|
-
|
|
145
|
+
is_of__cpu_architecture: typeof cpuArchFilter === 'number'
|
|
146
|
+
? cpuArchFilter
|
|
147
|
+
: {
|
|
148
|
+
$any: {
|
|
149
|
+
$alias: 'c',
|
|
150
|
+
$expr: {
|
|
151
|
+
c: cpuArchFilter,
|
|
123
152
|
},
|
|
124
153
|
},
|
|
125
154
|
},
|
|
126
|
-
},
|
|
127
155
|
},
|
|
128
156
|
},
|
|
129
157
|
},
|
|
@@ -144,24 +172,24 @@ async function setSupervisorReleaseResource(api, deviceIds, supervisorVersion) {
|
|
|
144
172
|
const devices = await api.get({
|
|
145
173
|
resource: 'device',
|
|
146
174
|
options: {
|
|
175
|
+
$select: ['id'],
|
|
176
|
+
$expand: {
|
|
177
|
+
is_of__device_type: { $select: ['is_of__cpu_architecture'] },
|
|
178
|
+
},
|
|
147
179
|
// if the device already has a supervisor_version, just bail.
|
|
148
180
|
$filter: {
|
|
149
181
|
id: { $in: deviceIds },
|
|
150
182
|
supervisor_version: null,
|
|
151
183
|
},
|
|
152
|
-
$select: ['id'],
|
|
153
|
-
$expand: {
|
|
154
|
-
is_of__device_type: { $select: ['is_of__cpu_architecture'] },
|
|
155
|
-
},
|
|
156
184
|
},
|
|
157
185
|
});
|
|
158
186
|
if (devices.length === 0) {
|
|
159
187
|
return;
|
|
160
188
|
}
|
|
161
|
-
const
|
|
189
|
+
const devicesByCpuArchId = Map.groupBy(devices, (d) => {
|
|
162
190
|
return d.is_of__device_type[0].is_of__cpu_architecture.__id;
|
|
163
191
|
});
|
|
164
|
-
if (
|
|
192
|
+
if (devicesByCpuArchId.size === 0) {
|
|
165
193
|
return;
|
|
166
194
|
}
|
|
167
195
|
const rootApi = api.clone({
|
|
@@ -170,9 +198,9 @@ async function setSupervisorReleaseResource(api, deviceIds, supervisorVersion) {
|
|
|
170
198
|
tx: api.passthrough.tx,
|
|
171
199
|
},
|
|
172
200
|
});
|
|
173
|
-
return Promise.all(
|
|
201
|
+
return Promise.all(Array.from(devicesByCpuArchId).map(async ([cpuArchId, affectedDevices]) => {
|
|
174
202
|
const affectedDeviceIds = affectedDevices.map((d) => d.id);
|
|
175
|
-
const [supervisorRelease] = await getSupervisorReleaseResource(api, supervisorVersion,
|
|
203
|
+
const [supervisorRelease] = await getSupervisorReleaseResource(api, supervisorVersion, cpuArchId);
|
|
176
204
|
if (supervisorRelease == null) {
|
|
177
205
|
return;
|
|
178
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervisor-app.js","sourceRoot":"","sources":["../../../../src/features/supervisor-app/hooks/supervisor-app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"supervisor-app.js","sourceRoot":"","sources":["../../../../src/features/supervisor-app/hooks/supervisor-app.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@balena/open-balena-api",
|
|
3
3
|
"description": "Internet of things, Made Simple",
|
|
4
|
-
"version": "43.
|
|
4
|
+
"version": "43.5.0-build-linked-supervisor-app-during-registration-9a5773a4fbeb31b72dbac4aa6293c80a09ef619f-2",
|
|
5
5
|
"license": "AGPL-3.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -176,6 +176,6 @@
|
|
|
176
176
|
"import": "@swc-node/register/esm-register"
|
|
177
177
|
},
|
|
178
178
|
"versionist": {
|
|
179
|
-
"publishedAt": "2025-12-
|
|
179
|
+
"publishedAt": "2025-12-17T22:30:15.379Z"
|
|
180
180
|
}
|
|
181
181
|
}
|