pulumi/sdk/nodejs
joeduffy 087deb7643 Add optional dependsOn to Resource constructors
This change adds an optiona dependsOn parameter to Resource constructors,
to "force" a fake dependency between resources.  We have an extremely strong
desire to resort to using this only in unusual cases -- and instead rely
on the natural dependency DAG based on properties -- but experience in other
resource provisioning frameworks tells us that we're likely to need this in
the general case.  Indeed, we've already encountered the need in AWS's
API Gateway resources... and I suspect we'll run into more especially as we
tackle non-serverless resources like EC2 Instances, where "ambient"
dependencies are far more commonplace.

This also makes parallelism the default mode of operation, and we have a
new --serialize flag that can be used to suppress this default behavior.
Full disclosure: I expect this to become more Make-like, i.e. -j 8, where
you can specify the precise width of parallelism, when we tackle
pulumi/pulumi-fabric#106.  I also think there's a good chance we will flip
the default, so that serial execution is the default, so that developers
who don't benefit from the parallelism don't need to worry about dependsOn
in awkward ways.  This tends to be the way most tools (like Make) operate.

This fixes pulumi/pulumi-fabric#335.
2017-09-15 16:38:52 -07:00
..
asset Harden dependent resolutions 2017-09-06 14:29:17 -07:00
bin Move language host into bin/ 2017-09-08 06:13:09 -07:00
cmd Add optional dependsOn to Resource constructors 2017-09-15 16:38:52 -07:00
runtime Add optional dependsOn to Resource constructors 2017-09-15 16:38:52 -07:00
tests Add optional dependsOn to Resource constructors 2017-09-15 16:38:52 -07:00
.gitignore Move language host into bin/ 2017-09-08 06:13:09 -07:00
computed.ts Add typings and tests for mapValues that return computeds 2017-09-06 08:28:11 -07:00
config.ts Add a runtime.Log class 2017-09-04 11:35:21 -07:00
index.ts Prettify properties 2017-09-05 10:55:09 -07:00
Makefile Add instructions for make configure 2017-09-11 15:17:11 -07:00
package.json Upgrade to TypeScript ^2.5.2 2017-09-14 15:02:41 -07:00
README.md Add instructions for make configure 2017-09-11 15:17:11 -07:00
resource.ts Add optional dependsOn to Resource constructors 2017-09-15 16:38:52 -07:00
tsconfig.json Fix a bunch of Linux issues 2017-09-08 15:11:09 -07:00
tslint.json Lint the test files 2017-09-04 11:35:21 -07:00
yarn.lock Upgrade to TypeScript ^2.5.2 2017-09-14 15:02:41 -07: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.

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 lumi tool whenever it encounters a Node.js program.

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