@balena/open-balena-api 43.5.0-build-linked-supervisor-app-during-registration-bc17a9e38fcd45ac76cc1edf8005478cbb32cb33-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,17 +1,32 @@
|
|
|
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;
|
|
5
4
|
hooks.addPureHook('POST', 'resin', 'device', {
|
|
6
5
|
/**
|
|
7
6
|
* When the device's initial supervisor version is provided during registration, set the corresponding should_be_managed_by__release resource.
|
|
8
7
|
*/
|
|
9
|
-
async
|
|
10
|
-
if (typeof
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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;
|
|
15
30
|
}
|
|
16
31
|
},
|
|
17
32
|
});
|
|
@@ -102,7 +117,7 @@ async function checkSupervisorReleaseUpgrades(api, deviceIds, newSupervisorRelea
|
|
|
102
117
|
}
|
|
103
118
|
}
|
|
104
119
|
}
|
|
105
|
-
async function getSupervisorReleaseResource(api, supervisorVersion,
|
|
120
|
+
async function getSupervisorReleaseResource(api, supervisorVersion, cpuArchFilter) {
|
|
106
121
|
return await api.get({
|
|
107
122
|
resource: 'release',
|
|
108
123
|
options: {
|
|
@@ -127,16 +142,16 @@ async function getSupervisorReleaseResource(api, supervisorVersion, archId) {
|
|
|
127
142
|
$alias: 'dt',
|
|
128
143
|
$expr: {
|
|
129
144
|
dt: {
|
|
130
|
-
is_of__cpu_architecture:
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
$
|
|
134
|
-
|
|
135
|
-
|
|
145
|
+
is_of__cpu_architecture: typeof cpuArchFilter === 'number'
|
|
146
|
+
? cpuArchFilter
|
|
147
|
+
: {
|
|
148
|
+
$any: {
|
|
149
|
+
$alias: 'c',
|
|
150
|
+
$expr: {
|
|
151
|
+
c: cpuArchFilter,
|
|
136
152
|
},
|
|
137
153
|
},
|
|
138
154
|
},
|
|
139
|
-
},
|
|
140
155
|
},
|
|
141
156
|
},
|
|
142
157
|
},
|
|
@@ -157,24 +172,24 @@ async function setSupervisorReleaseResource(api, deviceIds, supervisorVersion) {
|
|
|
157
172
|
const devices = await api.get({
|
|
158
173
|
resource: 'device',
|
|
159
174
|
options: {
|
|
175
|
+
$select: ['id'],
|
|
176
|
+
$expand: {
|
|
177
|
+
is_of__device_type: { $select: ['is_of__cpu_architecture'] },
|
|
178
|
+
},
|
|
160
179
|
// if the device already has a supervisor_version, just bail.
|
|
161
180
|
$filter: {
|
|
162
181
|
id: { $in: deviceIds },
|
|
163
182
|
supervisor_version: null,
|
|
164
183
|
},
|
|
165
|
-
$select: ['id'],
|
|
166
|
-
$expand: {
|
|
167
|
-
is_of__device_type: { $select: ['is_of__cpu_architecture'] },
|
|
168
|
-
},
|
|
169
184
|
},
|
|
170
185
|
});
|
|
171
186
|
if (devices.length === 0) {
|
|
172
187
|
return;
|
|
173
188
|
}
|
|
174
|
-
const
|
|
189
|
+
const devicesByCpuArchId = Map.groupBy(devices, (d) => {
|
|
175
190
|
return d.is_of__device_type[0].is_of__cpu_architecture.__id;
|
|
176
191
|
});
|
|
177
|
-
if (
|
|
192
|
+
if (devicesByCpuArchId.size === 0) {
|
|
178
193
|
return;
|
|
179
194
|
}
|
|
180
195
|
const rootApi = api.clone({
|
|
@@ -183,9 +198,9 @@ async function setSupervisorReleaseResource(api, deviceIds, supervisorVersion) {
|
|
|
183
198
|
tx: api.passthrough.tx,
|
|
184
199
|
},
|
|
185
200
|
});
|
|
186
|
-
return Promise.all(
|
|
201
|
+
return Promise.all(Array.from(devicesByCpuArchId).map(async ([cpuArchId, affectedDevices]) => {
|
|
187
202
|
const affectedDeviceIds = affectedDevices.map((d) => d.id);
|
|
188
|
-
const [supervisorRelease] = await getSupervisorReleaseResource(api, supervisorVersion,
|
|
203
|
+
const [supervisorRelease] = await getSupervisorReleaseResource(api, supervisorVersion, cpuArchId);
|
|
189
204
|
if (supervisorRelease == null) {
|
|
190
205
|
return;
|
|
191
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.5.0-build-linked-supervisor-app-during-registration-
|
|
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
|
}
|