pulumi/sdk/nodejs
Pat Gavlin 2585b86aa4
Initial support for remote component construction. (#5280)
These changes add initial support for the construction of remote
components. For now, this support is limited to the NodeJS SDK;
follow-up changes will implement support for the other SDKs.

Remote components are component resources that are constructed and
managed by plugins rather than by Pulumi programs. In this sense, they
are a bit like cloud resources, and are supported by the same
distribution and plugin loading mechanisms and described by the same
schema system.

The construction of a remote component is initiated by a
`RegisterResourceRequest` with the new `remote` field set to `true`.
When the resource monitor receives such a request, it loads the plugin
that implements the component resource and calls the `Construct`
method added to the resource provider interface as part of these
changes. This method accepts the information necessary to construct the
component and its children: the component's name, type, resource
options, inputs, and input dependencies. It is responsible for
dispatching to the appropriate component factory to create the
component, then returning its URN, resolved output properties, and
output property dependencies. The dependency information is necessary to
support features such as delete-before-replace, which rely on precise
dependency information for custom resources.

These changes also add initial support for more conveniently
implementing resource providers in NodeJS. The interface used to
implement such a provider is similar to the dynamic provider interface
(and may be unified with that interface in the future).

An example of a NodeJS program constructing a remote component resource
also implemented in NodeJS can be found in
`tests/construct_component/nodejs`.

This is the core of #2430.
2020-09-07 19:33:55 -07:00
..
asset
cmd Initial support for remote component construction. (#5280) 2020-09-07 19:33:55 -07:00
dist
dynamic
iterable
log
proto Initial support for remote component construction. (#5280) 2020-09-07 19:33:55 -07:00
provider Initial support for remote component construction. (#5280) 2020-09-07 19:33:55 -07:00
queryable
runtime Initial support for remote component construction. (#5280) 2020-09-07 19:33:55 -07:00
tests Initial support for remote component construction. (#5280) 2020-09-07 19:33:55 -07:00
.gitignore
config.ts
errors.ts
index.ts Initial support for remote component construction. (#5280) 2020-09-07 19:33:55 -07:00
invoke.ts
Makefile Add brew make targets to sdk makefiles 2020-05-13 20:42:01 -07:00
metadata.ts
output.ts Fix typo (#5153) 2020-08-11 12:12:24 +01:00
package.json
README.md
resource.ts Initial support for remote component construction. (#5280) 2020-09-07 19:33:55 -07:00
stackReference.ts
tsconfig.json Initial support for remote component construction. (#5280) 2020-09-07 19:33:55 -07:00
tslint.json
utils.ts
version.ts

Pulumi Node.js SDK

The Pulumi Node.js SDK lets you write cloud programs in JavaScript.

Installation

Using npm:

$ npm install --save @pulumi/pulumi

Using yarn:

$ yarn add @pulumi/pulumi

This SDK is meant for use with the Pulumi CLI. Please visit pulumi.com for installation instructions.

Building and Testing

For anybody who wants to build from source, here is how you do it.

Prerequisites

This SDK uses Node.js and we support the Active LTS and Current releases, as defined by this table. We support both NPM and Yarn for package management.

At the moment, we only support building on macOS and Linux, where standard GNU tools like make are available.

Make Targets

The first time you build, run make ensure to install and prepare native plugins for V8:

$ make ensure

This is only necessary if you intend to produce a build that is capable of running older versions of the SDK contained in this directory. If you do intend to do this, you must have node 6.10.2 installed.

To build the SDK, simply run make from the root directory (where this README lives, at sdk/nodejs/ from the repo's root). This will build the code, run tests, and install the package and its supporting artifacts.

At the moment, for local development, we install everything into /opt/pulumi. You will want this on your $PATH.

The tests will verify that everything works, but feel free to try running pulumi preview and/or pulumi up from the examples/minimal/ directory. Remember to run tsc first, since pulumi expects JavaScript, not TypeScript.