balena-image-manager

Join our online chat at 
Manage device base operating systems resources with caching support.
Role
The intention of this module is to provide low level access to how a balena device image is downloaded, cached and evaluated for freshness.
THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY.
Installation
Install balena-image-manager
by running:
$ npm install --save balena-image-manager
Documentation
manager~get(deviceType, versionOrRange, options) ⇒ Promise.<NodeJS.ReadableStream>
This function saves a copy of the downloaded image in the cache directory setting specified in balena-settings-client.
Kind: inner method of manager
Summary: Get a device operating system image
Returns: Promise.<NodeJS.ReadableStream>
- image readable stream
Access: public
deviceType | String | device type slug or alias |
versionOrRange | String | can be one of * the exact version number, in which case it is used if the version is supported, or the promise is rejected, * a semver-compatible range specification, in which case the most recent satisfying version is used if it exists, or the promise is rejected, * 'latest' in which case the most recent version is used, including pre-releases, * 'recommended' in which case the recommended version is used, i.e. the most recent version excluding pre-releases, the promise is rejected if only pre-release versions are available, * 'default' in which case the recommended version is used if available, or latest is used otherwise. Defaults to 'latest' . |
options | Object | |
options?.developmentMode | boolean | |
Example
manager.get('raspberry-pi', 'default').then (stream) ->
stream.pipe(fs.createWriteStream('foo/bar.img'))
manager~cleanCache() ⇒ Promise
Useful to manually force an image to be re-downloaded.
Kind: inner method of manager
Summary: Clean the saved images cache
Access: public
Example
manager.cleanCache()
Support
If you're having any problem, please raise an issue on GitHub and the balena team will be happy to help.
Tests
Run the test suite by doing:
$ gulp test
Contribute
Before submitting a PR, please make sure that you include tests, and that coffeelint runs without any warning:
$ gulp lint
License
The project is licensed under the Apache 2.0 license.
10.0.1 - 2023-10-26
<details>
<summary> Update balena-sdk to 19.0.1 [Otávio Jacobi] </summary>
balena-sdk-19.0.1 - 2023-10-19
- Fix test workflow to run on node 18 [Otávio Jacobi]
balena-sdk-19.0.0 - 2023-10-16
<details>
<summary> **BREAKING**: Drop support to node < 18 [Otávio Jacobi] </summary>
balena-register-device-9.0.1 - 2023-10-11
- Fix balena-request peer dependency [Otávio Jacobi]
balena-register-device-9.0.0 - 2023-10-11
- Drop supoport for node 14 & 16 [Otávio Jacobi]
balena-request-13.0.0 - 2023-10-11
- Drop support for node 14 & 16 [Otávio Jacobi]
</details>
balena-sdk-18.3.0 - 2023-10-09
- jwt: Deprecate the profile fields in favor of the user_profile [Thodoris Greasidis]
- jwt: Deprecate the intercom fields [Thodoris Greasidis]
- jwt: Deprecate the features fields [Thodoris Greasidis]
- jwt: Deprecate thw loginAs field [Thodoris Greasidis]
- jwt: Deprecate username & created_at in favor of the user resource [Thodoris Greasidis]
- Add typings for the user_profile resource [Thodoris Greasidis]
balena-sdk-18.2.0 - 2023-09-26
- Update @balena/lint to 7.2.0 [Thodoris Greasidis]
- Deprecate the social_service_account property of the JWTUser [Thodoris Greasidis]
- Add typings for the social_service_account resource [Thodoris Greasidis]
balena-sdk-18.1.4 - 2023-08-24
- Update TypeScript to 5.2.2 [Thodoris Greasidis]
balena-sdk-18.1.3 - 2023-08-23
- tests/os: Refactor some promise tests to async await [Thodoris Greasidis]
- Fix os.getSupervisorReleaseByDeviceType test to work on balenaMachine [Thodoris Greasidis]
<details>
<summary> Update balena-request from 12.0.2 to 12.0.4 [Thodoris Greasidis] </summary>
balena-request-12.0.4 - 2023-08-23
- Refactor the interceptors to stop using .reduce() [Thodoris Greasidis]
balena-request-12.0.3 - 2023-08-09
- Avoid deep imports from balena-auth [Thodoris Greasidis]
- Update balena-auth to 5.1.0 [Thodoris Greasidis]
</details>
balena-sdk-18.1.2 - 2023-08-23
- organization-invite: Fix throwing a typed error when passing an unkonwn role [Thodoris Greasidis]
- application-invite: Fix throwing a typed error when passing an unkonwn role [Thodoris Greasidis]
- tests: Fix bugs that linting surfaced [Thodoris Greasidis]
- Update @balena/lint to 7.0.1 [Thodoris Greasidis]
balena-sdk-18.1.1 - 2023-08-22
- logs: Emit errors when initializing the SDK with debug: true [Thodoris Greasidis]
balena-sdk-18.1.0 - 2023-08-22
- Improve the auth.getActorId() tests [Thodoris Greasidis]
- auth.getUserInfo: Add the actor id to the returned values [Thodoris Greasidis]
balena-sdk-18.0.2 - 2023-08-18
- patch: bump lint-staged from 13.3.0 to 14.0.0 [Thodoris Greasidis]
balena-sdk-18.0.1 - 2023-08-18
- Replace dependabot with renovate [Thodoris Greasidis]
</details>