Skip to content

Latest commit

 

History

History
33 lines (24 loc) · 1.24 KB

extensions.rst

File metadata and controls

33 lines (24 loc) · 1.24 KB

Extensions

Given that :ref:`provisions` and :ref:`virtual-parameters` are executed in a sandbox environment, it is not possible to interact with external sources or execute any action that requires OS, file system, or network access. Extensions exist to bridge that gap.

Extensions are fully-privileged Node.js modules and as such have access to standard Node libraries and 3rd party packages. Functions exposed by the extension can be called from Provision scripts using the ext() function. A typical use case for extensions is fetching credentials from a database to have that pushed to the device during provisioning.

By default, the extension JS code must be placed under config/ext directory. You may need to create that directory if it doesn't already exist.

The example extension below fetches data from an external REST API and returns that to the caller:

.. literalinclude:: ext-sample.js
  :language: javascript

To call this extension from a Provision or a Virtual Parameter script:

// The arguments "arg1" and "arg2" are passed to the latlong. Though they are
// unused in this particular example.
const res = ext("ext-sample", "latlong", "arg1", "arg2");
log(JSON.stringify(res));