pulumi/sdk/nodejs
joeduffy 5e28a4ab07 Add the ability to read an existing resource
This change wires up the new Read RPC method in such a manner that
Pulumi programs can invoke it.  This is technically not required for
refreshing state programmatically (as in pulumi/pulumi#1081), however
it's a feature we had eons ago and have wanted since (see
pulumi/pulumi#83), and will allow us to write code like

    let vm = aws.ec2.Instance.get("my-vm", "i-07043cd97bd2c9cfc");
    // use any property from here on out ...

The way this works is simply by bridging the Pulumi program via its
existing RPC connection to the engine, much like Invoke and
RegisterResource RPC requests already do, and then invoking the proper
resource provider in order to read the state.  Note that some resources
cannot be uniquely identified by their ID alone, and so an extra
resource state bag may be provided with just those properties required.

This came almost for free (okay, not exactly) and will come in handy as
we start gaining experience with reading live state from resources.
2018-04-05 09:48:09 -07:00
..
asset Update the copyright end date to 2018. (#1068) 2018-03-21 12:43:21 -07:00
cmd Make some resource model changes 2018-04-05 08:14:25 -07:00
dist Add custom NODE_PATH to resource cmd 2018-02-19 18:45:12 -08:00
dynamic Make some resource model changes 2018-04-05 08:14:25 -07:00
log Update the copyright end date to 2018. (#1068) 2018-03-21 12:43:21 -07:00
proto Add the ability to read an existing resource 2018-04-05 09:48:09 -07:00
runtime Add the ability to read an existing resource 2018-04-05 09:48:09 -07:00
scripts Ship nativeruntime.node as part of the SDK 2018-02-16 18:12:33 -08:00
tests Add the ability to read an existing resource 2018-04-05 09:48:09 -07:00
.gitignore Implement more of the Python runtime 2018-02-24 08:58:34 -08:00
config.ts Update the copyright end date to 2018. (#1068) 2018-03-21 12:43:21 -07:00
errors.ts Update the copyright end date to 2018. (#1068) 2018-03-21 12:43:21 -07:00
index.ts Update the copyright end date to 2018. (#1068) 2018-03-21 12:43:21 -07:00
Makefile Adopt new version strategy 2018-03-15 18:06:04 -07:00
metadata.ts Update the copyright end date to 2018. (#1068) 2018-03-21 12:43:21 -07:00
package.json Rename pulumi package to @pulumi/pulumi (#917) 2018-02-12 13:13:13 -08:00
README.md Update the README 2018-02-14 10:33:18 -08:00
resource.ts Add the ability to read an existing resource 2018-04-05 09:48:09 -07:00
tsconfig.json Split closure serialization into separate files containing the different concerns. (#1045) 2018-03-12 18:12:49 -07:00
tslint.json Update the copyright end date to 2018. (#1068) 2018-03-21 12:43:21 -07:00
version.ts Update the copyright end date to 2018. (#1068) 2018-03-21 12:43:21 -07:00
yarn.lock Run yarn upgrade and commit all resulting lockfiles 2018-01-30 14:46:44 -08:00

Pulumi Fabric Node.js SDK

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

Installing

For now, we only support developers building from source. Eventually we will have a nice installer.

Prerequisites

To build and install the SDK, you will first need a few things.

First, install Node.js 6.10.2. We recommend nvm, since it makes it easier to switch between versions of Node.js. Afterwards, run nvm install 6.10.2. As part of the build, a custom build of Node.js 6.10.2 will be downloaded and installed alongside the SDK. This Node binary is identical to Node.js 6.10.2, except that it has one extra builtin module containing code that is used by the SDK to serialize JavaScript closures. The custom binary is built from this repo.

Next, we suggest using Yarn for package management. NPM works too, but Yarn is faster and therefore preferred. Please follow the directions on Yarn's website.

Building and Testing

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

$ make configure

Make sure to run this after installing the right version of Node.js above, otherwise it may bind to the wrong version.

To build the SDK, simply run make from the root directory (sdk/nodejs/). This will build the code, run tests, and then "install" the package (by yarn linking the resulting bin/ directory).

We recommend putting bin/ on your $PATH, since the pulumi-langhost-nodejs executable will be loaded dynamically by the pulumi tool whenever it encounters a Node.js program.

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