@pulumi/pulumi 3.65.1 → 3.66.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/automation/errors.js +9 -5
- package/automation/errors.js.map +1 -1
- package/automation/events.js.map +1 -1
- package/automation/localWorkspace.js +21 -5
- package/automation/localWorkspace.js.map +1 -1
- package/automation/remoteStack.js.map +1 -1
- package/automation/remoteWorkspace.js.map +1 -1
- package/automation/server.js +1 -1
- package/automation/server.js.map +1 -1
- package/automation/stack.js +14 -7
- package/automation/stack.js.map +1 -1
- package/cmd/dynamic-provider/index.js +1 -1
- package/cmd/dynamic-provider/index.js.map +1 -1
- package/cmd/run/index.js +5 -3
- package/cmd/run/index.js.map +1 -1
- package/cmd/run/run.js +3 -7
- package/cmd/run/run.js.map +1 -1
- package/cmd/run/tracing.js.map +1 -1
- package/cmd/run-policy-pack/index.js +1 -1
- package/cmd/run-policy-pack/index.js.map +1 -1
- package/cmd/run-policy-pack/run.js +3 -6
- package/cmd/run-policy-pack/run.js.map +1 -1
- package/config.js +2 -3
- package/config.js.map +1 -1
- package/dynamic/index.js +2 -2
- package/dynamic/index.js.map +1 -1
- package/iterable/index.js +4 -4
- package/iterable/index.js.map +1 -1
- package/log/index.js +1 -3
- package/log/index.js.map +1 -1
- package/output.d.ts +4 -4
- package/output.js +35 -29
- package/output.js.map +1 -1
- package/package.json +2 -1
- package/provider/internals.js.map +1 -1
- package/provider/server.js +7 -8
- package/provider/server.js.map +1 -1
- package/resource.js +8 -8
- package/resource.js.map +1 -1
- package/runtime/asyncIterableUtil.js +1 -1
- package/runtime/asyncIterableUtil.js.map +1 -1
- package/runtime/closure/codePaths.js +1 -2
- package/runtime/closure/codePaths.js.map +1 -1
- package/runtime/closure/createClosure.js +56 -38
- package/runtime/closure/createClosure.js.map +1 -1
- package/runtime/closure/package.js +8 -5
- package/runtime/closure/package.js.map +1 -1
- package/runtime/closure/parseFunction.js +33 -17
- package/runtime/closure/parseFunction.js.map +1 -1
- package/runtime/closure/rewriteSuper.js +3 -6
- package/runtime/closure/rewriteSuper.js.map +1 -1
- package/runtime/closure/serializeClosure.js +34 -26
- package/runtime/closure/serializeClosure.js.map +1 -1
- package/runtime/closure/utils.js +1 -2
- package/runtime/closure/utils.js.map +1 -1
- package/runtime/closure/v8.js +9 -10
- package/runtime/closure/v8.js.map +1 -1
- package/runtime/closure/v8Hooks.js +2 -2
- package/runtime/closure/v8Hooks.js.map +1 -1
- package/runtime/config.js.map +1 -1
- package/runtime/debuggable.js +10 -9
- package/runtime/debuggable.js.map +1 -1
- package/runtime/index.js.map +1 -1
- package/runtime/invoke.js +4 -9
- package/runtime/invoke.js.map +1 -1
- package/runtime/mocks.js.map +1 -1
- package/runtime/resource.js +17 -12
- package/runtime/resource.js.map +1 -1
- package/runtime/rpc.js +6 -6
- package/runtime/rpc.js.map +1 -1
- package/runtime/settings.js +1 -1
- package/runtime/settings.js.map +1 -1
- package/runtime/stack.js +3 -3
- package/runtime/stack.js.map +1 -1
- package/runtime/state.js +1 -3
- package/runtime/state.js.map +1 -1
- package/stackReference.js.map +1 -1
- package/tests/automation/localWorkspace.spec.js +63 -57
- package/tests/automation/localWorkspace.spec.js.map +1 -1
- package/tests/automation/remoteWorkspace.spec.js +9 -6
- package/tests/automation/remoteWorkspace.spec.js.map +1 -1
- package/tests/config.spec.js +76 -28
- package/tests/config.spec.js.map +1 -1
- package/tests/iterable.spec.js +2 -2
- package/tests/iterable.spec.js.map +1 -1
- package/tests/options.spec.js +9 -3
- package/tests/options.spec.js.map +1 -1
- package/tests/output.spec.js +61 -67
- package/tests/output.spec.js.map +1 -1
- package/tests/provider.spec.js +7 -1
- package/tests/provider.spec.js.map +1 -1
- package/tests/resource.spec.js.map +1 -1
- package/tests/runtime/asyncIterableUtil.spec.js.map +1 -1
- package/tests/runtime/closureLoader.spec.js +1 -1
- package/tests/runtime/closureLoader.spec.js.map +1 -1
- package/tests/runtime/deploymentOnlyModule/runtimeConfig.js.map +1 -1
- package/tests/runtime/langhost/cases/000.empty/index.js +0 -1
- package/tests/runtime/langhost/cases/001.one_resource/index.js +0 -1
- package/tests/runtime/langhost/cases/002.ten_resources/index.js +0 -1
- package/tests/runtime/langhost/cases/003.one_complex_resource/index.js +20 -20
- package/tests/runtime/langhost/cases/004.ten_complex_resources/index.js +5 -6
- package/tests/runtime/langhost/cases/004.ten_complex_resources/resource.js +11 -12
- package/tests/runtime/langhost/cases/005.resource_thens/index.js +12 -13
- package/tests/runtime/langhost/cases/006.asset/index.js +1 -2
- package/tests/runtime/langhost/cases/007.promises_io/index.js +2 -3
- package/tests/runtime/langhost/cases/008.ten_depends_on_resources/index.js +19 -11
- package/tests/runtime/langhost/cases/009.invoke/index.js +1 -1
- package/tests/runtime/langhost/cases/012.assets_archive/index.js +10 -8
- package/tests/runtime/langhost/cases/013.unhandled_promise_rejection/index.js +1 -1
- package/tests/runtime/langhost/cases/014.read_resource/index.js +7 -7
- package/tests/runtime/langhost/cases/015.runtime_sxs/index.js +35 -19
- package/tests/runtime/langhost/cases/017.parent_defaults/index.js +49 -41
- package/tests/runtime/langhost/cases/020.property_dependencies/index.js +27 -18
- package/tests/runtime/langhost/cases/021.parent_child_dependencies/index.js +3 -3
- package/tests/runtime/langhost/cases/022.parent_child_dependencies_2/index.js +3 -3
- package/tests/runtime/langhost/cases/023.parent_child_dependencies_3/index.js +6 -6
- package/tests/runtime/langhost/cases/024.parent_child_dependencies_4/index.js +8 -8
- package/tests/runtime/langhost/cases/025.parent_child_dependencies_5/index.js +9 -9
- package/tests/runtime/langhost/cases/026.parent_child_dependencies_6/index.js +11 -11
- package/tests/runtime/langhost/cases/027.parent_child_dependencies_7/index.js +14 -14
- package/tests/runtime/langhost/cases/028.parent_child_dependencies_8/index.js +10 -10
- package/tests/runtime/langhost/cases/029.parent_child_dependencies_9/index.js +8 -8
- package/tests/runtime/langhost/cases/030.import_resource/index.js +0 -1
- package/tests/runtime/langhost/cases/041.component_opt_single_provider/index.js +49 -41
- package/tests/runtime/langhost/cases/042.component_opt_providers_array/index.js +49 -41
- package/tests/runtime/langhost/cases/060.provider_invokes/index.js +4 -4
- package/tests/runtime/langhost/cases/061.provider_in_parent_invokes/index.js +8 -8
- package/tests/runtime/langhost/cases/063.providerref_in_parent_invokes/index.js +2 -2
- package/tests/runtime/langhost/cases/064.async_components/index.js +9 -9
- package/tests/runtime/langhost/cases/065.large_resource/index.js +2 -2
- package/tests/runtime/langhost/cases/067.native_es_module/index.js +0 -1
- package/tests/runtime/langhost/cases/068.remote_component_providers/index.js +6 -6
- package/tests/runtime/langhost/cases/069.ambiguous_entrypoints/index.js +0 -1
- package/tests/runtime/langhost/cases/070.unusual_alias_names/index.js +5 -6
- package/tests/runtime/langhost/cases/071.large_alias_counts/index.js +4 -5
- package/tests/runtime/langhost/cases/072.large_alias_lineage_chains/index.js +13 -14
- package/tests/runtime/langhost/cases/073.component_dependencies/index.js +10 -10
- package/tests/runtime/langhost/run.spec.js +140 -116
- package/tests/runtime/langhost/run.spec.js.map +1 -1
- package/tests/runtime/package.spec.js +23 -23
- package/tests/runtime/package.spec.js.map +1 -1
- package/tests/runtime/props.spec.js +53 -51
- package/tests/runtime/props.spec.js.map +1 -1
- package/tests/runtime/settings.spec.js.map +1 -1
- package/tests/runtime/tsClosureCases.js +3 -1
- package/tests/runtime/tsClosureCases.js.map +1 -1
- package/tests/stackReference.spec.js.map +1 -1
- package/tests/unwrap.spec.js +27 -7
- package/tests/unwrap.spec.js.map +1 -1
- package/tests/util.js.map +1 -1
- package/tests_with_mocks/mocks.spec.js +11 -11
- package/tests_with_mocks/mocks.spec.js.map +1 -1
- package/version.js +1 -1
|
@@ -6,8 +6,8 @@ let pulumi = require("../../../../../");
|
|
|
6
6
|
class ResourceA extends pulumi.CustomResource {
|
|
7
7
|
constructor(name) {
|
|
8
8
|
super("test:index:ResourceA", name, {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
inprop: 777,
|
|
10
|
+
outprop: undefined,
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -15,31 +15,31 @@ class ResourceA extends pulumi.CustomResource {
|
|
|
15
15
|
class ResourceB extends pulumi.CustomResource {
|
|
16
16
|
constructor(name, other) {
|
|
17
17
|
super("test:index:ResourceB", name, {
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
otherIn: other.inprop,
|
|
19
|
+
otherOut: other.outprop,
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
// First create and validate a simple resource A with an input and output.
|
|
25
25
|
let a = new ResourceA("resourceA");
|
|
26
|
-
a.urn.apply(urn => {
|
|
26
|
+
a.urn.apply((urn) => {
|
|
27
27
|
console.log(`A.URN: ${urn}`);
|
|
28
28
|
assert.strictEqual(urn, "test:index:ResourceA::resourceA");
|
|
29
29
|
});
|
|
30
|
-
a.id.apply(id => {
|
|
30
|
+
a.id.apply((id) => {
|
|
31
31
|
if (id) {
|
|
32
32
|
console.log(`A.ID: ${id}`);
|
|
33
33
|
assert.strictEqual(id, "resourceA");
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
|
-
a.inprop.apply(prop => {
|
|
36
|
+
a.inprop.apply((prop) => {
|
|
37
37
|
if (prop) {
|
|
38
38
|
console.log(`A.InProp: ${prop}`);
|
|
39
39
|
assert.strictEqual(prop, 777);
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
|
-
a.outprop.apply(prop => {
|
|
42
|
+
a.outprop.apply((prop) => {
|
|
43
43
|
if (prop) {
|
|
44
44
|
console.log(`A.OutProp: ${prop}`);
|
|
45
45
|
assert.strictEqual(prop, "output yeah");
|
|
@@ -48,26 +48,25 @@ a.outprop.apply(prop => {
|
|
|
48
48
|
|
|
49
49
|
// Next, create and validate another resource B which depends upon resource A.
|
|
50
50
|
let b = new ResourceB("resourceB", a);
|
|
51
|
-
b.urn.apply(urn => {
|
|
51
|
+
b.urn.apply((urn) => {
|
|
52
52
|
console.log(`B.URN: ${urn}`);
|
|
53
53
|
assert.strictEqual(urn, "test:index:ResourceB::resourceB");
|
|
54
54
|
});
|
|
55
|
-
b.id.apply(id => {
|
|
55
|
+
b.id.apply((id) => {
|
|
56
56
|
if (id) {
|
|
57
57
|
console.log(`B.ID: ${id}`);
|
|
58
58
|
assert.strictEqual(id, "resourceB");
|
|
59
59
|
}
|
|
60
60
|
});
|
|
61
|
-
b.otherIn.apply(prop => {
|
|
61
|
+
b.otherIn.apply((prop) => {
|
|
62
62
|
if (prop) {
|
|
63
63
|
console.log(`B.OtherIn: ${prop}`);
|
|
64
64
|
assert.strictEqual(prop, 777);
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
|
-
b.otherOut.apply(prop => {
|
|
67
|
+
b.otherOut.apply((prop) => {
|
|
68
68
|
if (prop) {
|
|
69
69
|
console.log(`B.OtherOut: ${prop}`);
|
|
70
70
|
assert.strictEqual(prop, "output yeah");
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
|
-
|
|
@@ -5,10 +5,9 @@ let pulumi = require("../../../../../");
|
|
|
5
5
|
class FileResource extends pulumi.CustomResource {
|
|
6
6
|
constructor(name, data) {
|
|
7
7
|
super("test:index:FileResource", name, {
|
|
8
|
-
|
|
8
|
+
data: data,
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
new FileResource("file1", new pulumi.asset.FileAsset("./testdata.txt"));
|
|
14
|
-
|
|
@@ -6,7 +6,7 @@ let fs = require("fs");
|
|
|
6
6
|
class FileResource extends pulumi.CustomResource {
|
|
7
7
|
constructor(name, data) {
|
|
8
8
|
super("test:index:FileResource", name, {
|
|
9
|
-
|
|
9
|
+
data: data,
|
|
10
10
|
});
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -21,6 +21,5 @@ new FileResource(
|
|
|
21
21
|
resolve(data.toString("utf-8"));
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
-
})
|
|
24
|
+
}),
|
|
25
25
|
);
|
|
26
|
-
|
|
@@ -23,16 +23,24 @@ for (let i = 0; i < 10; i++) {
|
|
|
23
23
|
// - Promise<Output<Resource>[]>
|
|
24
24
|
// - Output<Promise<Resource>[]>
|
|
25
25
|
// - Output<Output<Resource>[]>
|
|
26
|
-
let r0 = new MyResource("testResource" + i*10, { dependsOn: last });
|
|
27
|
-
let r1 = new MyResource("testResource" + i*10+1, { dependsOn: all });
|
|
28
|
-
let r2 = new MyResource("testResource" + i*10+2, { dependsOn: Promise.resolve(last) });
|
|
29
|
-
let r3 = new MyResource("testResource" + i*10+3, { dependsOn: pulumi.Output.create(last) });
|
|
30
|
-
let r4 = new MyResource("testResource" + i*10+4, { dependsOn: Promise.resolve(all) });
|
|
31
|
-
let r5 = new MyResource("testResource" + i*10+5, { dependsOn: pulumi.Output.create(all) });
|
|
32
|
-
let r6 = new MyResource("testResource" + i*10+6, {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
let
|
|
36
|
-
|
|
26
|
+
let r0 = new MyResource("testResource" + i * 10, { dependsOn: last });
|
|
27
|
+
let r1 = new MyResource("testResource" + i * 10 + 1, { dependsOn: all });
|
|
28
|
+
let r2 = new MyResource("testResource" + i * 10 + 2, { dependsOn: Promise.resolve(last) });
|
|
29
|
+
let r3 = new MyResource("testResource" + i * 10 + 3, { dependsOn: pulumi.Output.create(last) });
|
|
30
|
+
let r4 = new MyResource("testResource" + i * 10 + 4, { dependsOn: Promise.resolve(all) });
|
|
31
|
+
let r5 = new MyResource("testResource" + i * 10 + 5, { dependsOn: pulumi.Output.create(all) });
|
|
32
|
+
let r6 = new MyResource("testResource" + i * 10 + 6, {
|
|
33
|
+
dependsOn: Promise.resolve(all.map((a) => Promise.resolve(a))),
|
|
34
|
+
});
|
|
35
|
+
let r7 = new MyResource("testResource" + i * 10 + 7, {
|
|
36
|
+
dependsOn: Promise.resolve(all.map((a) => pulumi.Output.create(a))),
|
|
37
|
+
});
|
|
38
|
+
let r8 = new MyResource("testResource" + i * 10 + 8, {
|
|
39
|
+
dependsOn: pulumi.Output.create(all).apply((a) => Promise.resolve(a)),
|
|
40
|
+
});
|
|
41
|
+
let r9 = new MyResource("testResource" + i * 10 + 9, {
|
|
42
|
+
dependsOn: pulumi.Output.create(all).apply((a) => pulumi.Output.create(a)),
|
|
43
|
+
});
|
|
44
|
+
all = all.concat([r0, r1, r2, r3, r4, r5, r6, r7, r8, r9]);
|
|
37
45
|
last = r0;
|
|
38
46
|
}
|
|
@@ -5,17 +5,19 @@ let pulumi = require("../../../../../");
|
|
|
5
5
|
class MyResource extends pulumi.CustomResource {
|
|
6
6
|
constructor(name) {
|
|
7
7
|
let archive = new pulumi.asset.AssetArchive({
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
asset: new pulumi.asset.StringAsset("foo"),
|
|
9
|
+
archive: new pulumi.asset.AssetArchive({}),
|
|
10
10
|
});
|
|
11
|
-
let archiveP = Promise.resolve(
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
let archiveP = Promise.resolve(
|
|
12
|
+
new pulumi.asset.AssetArchive({
|
|
13
|
+
foo: new pulumi.asset.StringAsset("bar"),
|
|
14
|
+
}),
|
|
15
|
+
);
|
|
14
16
|
let assetP = Promise.resolve(new pulumi.asset.StringAsset("baz"));
|
|
15
17
|
super("test:index:MyResource", name, {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
archive: archive,
|
|
19
|
+
archiveP: archiveP,
|
|
20
|
+
assetP: assetP,
|
|
19
21
|
});
|
|
20
22
|
}
|
|
21
23
|
}
|
|
@@ -6,14 +6,14 @@ let pulumi = require("../../../../../");
|
|
|
6
6
|
let inputs = {
|
|
7
7
|
a: "fizzz",
|
|
8
8
|
b: false,
|
|
9
|
-
c: [
|
|
9
|
+
c: [0.73, "x", { zed: 923 }],
|
|
10
10
|
d: undefined,
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
let res = new pulumi.CustomResource("test:read:resource", "foo", inputs, { id: "abc123" });
|
|
14
|
-
res.id.apply(id => assert.strictEqual(id, "abc123"));
|
|
15
|
-
res.urn.apply(urn => assert.strictEqual(urn, "test:read:resource::foo"));
|
|
16
|
-
res.a.apply(a => assert.strictEqual(a, inputs.a)); // same as input
|
|
17
|
-
res.b.apply(b => assert.strictEqual(b, true)); // output changed to true
|
|
18
|
-
res.c.apply(c => assert.deepStrictEqual(c, inputs.c)); // same as input
|
|
19
|
-
res.d.apply(d => assert.strictEqual(d, "and then, out of nowhere ...")); // from the inputs
|
|
14
|
+
res.id.apply((id) => assert.strictEqual(id, "abc123"));
|
|
15
|
+
res.urn.apply((urn) => assert.strictEqual(urn, "test:read:resource::foo"));
|
|
16
|
+
res.a.apply((a) => assert.strictEqual(a, inputs.a)); // same as input
|
|
17
|
+
res.b.apply((b) => assert.strictEqual(b, true)); // output changed to true
|
|
18
|
+
res.c.apply((c) => assert.deepStrictEqual(c, inputs.c)); // same as input
|
|
19
|
+
res.d.apply((d) => assert.strictEqual(d, "and then, out of nowhere ...")); // from the inputs
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
// Subsequent copies of the runtime are able to configure themselves by using environment variables.
|
|
6
6
|
|
|
7
7
|
let assert = require("assert");
|
|
8
|
-
let path = require(
|
|
8
|
+
let path = require("path");
|
|
9
9
|
|
|
10
10
|
const sdkPath = "../../../../../";
|
|
11
11
|
|
|
@@ -14,11 +14,11 @@ let pulumi1 = require(sdkPath);
|
|
|
14
14
|
|
|
15
15
|
// Now delete the entries in the require cache, and load up the second copy:
|
|
16
16
|
const resolvedSdkPath = path.dirname(require.resolve(sdkPath));
|
|
17
|
-
Object.keys(require.cache).forEach(path => {
|
|
17
|
+
Object.keys(require.cache).forEach((path) => {
|
|
18
18
|
if (path.startsWith(resolvedSdkPath)) {
|
|
19
19
|
delete require.cache[path];
|
|
20
20
|
}
|
|
21
|
-
})
|
|
21
|
+
});
|
|
22
22
|
let pulumi2 = require(sdkPath);
|
|
23
23
|
|
|
24
24
|
// Make sure they are different:
|
|
@@ -26,10 +26,26 @@ assert(pulumi1 !== pulumi2, "pulumi1 !== pulumi2");
|
|
|
26
26
|
assert(pulumi1.runtime !== pulumi2.runtime, "pulumi1.runtime !== pulumi2.runtime");
|
|
27
27
|
|
|
28
28
|
// Check that various settings are equal:
|
|
29
|
-
assert.strictEqual(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
assert.strictEqual(
|
|
30
|
+
pulumi1.runtime.isDryRun(),
|
|
31
|
+
pulumi2.runtime.isDryRun(),
|
|
32
|
+
"pulumi1.runtime.isDryRun() !== pulumi2.runtime.isDryRun()",
|
|
33
|
+
);
|
|
34
|
+
assert.strictEqual(
|
|
35
|
+
pulumi1.runtime.getProject(),
|
|
36
|
+
pulumi2.runtime.getProject(),
|
|
37
|
+
"pulumi1.runtime.getProject() !== pulumi2.runtime.getProject()",
|
|
38
|
+
);
|
|
39
|
+
assert.strictEqual(
|
|
40
|
+
pulumi1.runtime.getStack(),
|
|
41
|
+
pulumi2.runtime.getStack(),
|
|
42
|
+
"pulumi1.runtime.getStack() !== pulumi2.runtime.getStack()",
|
|
43
|
+
);
|
|
44
|
+
assert.deepStrictEqual(
|
|
45
|
+
pulumi1.runtime.allConfig(),
|
|
46
|
+
pulumi2.runtime.allConfig(),
|
|
47
|
+
"pulumi1.runtime.allConfig() !== pulumi2.runtime.getStack()",
|
|
48
|
+
);
|
|
33
49
|
|
|
34
50
|
// Check that the two runtimes agree on the stack resource
|
|
35
51
|
let stack1 = pulumi1.runtime.getStackResource();
|
|
@@ -43,27 +59,27 @@ assert.strictEqual(cfg1.get("message"), cfg2.get("message"));
|
|
|
43
59
|
|
|
44
60
|
// Try and set a stack transformation
|
|
45
61
|
function transform1(args) {
|
|
46
|
-
args.props["runtime1"] = 1
|
|
47
|
-
return { props: args.props, opts: args.opts }
|
|
62
|
+
args.props["runtime1"] = 1;
|
|
63
|
+
return { props: args.props, opts: args.opts };
|
|
48
64
|
}
|
|
49
65
|
function transform2(args) {
|
|
50
|
-
args.props["runtime2"] = 2
|
|
51
|
-
return { props: args.props, opts: args.opts }
|
|
66
|
+
args.props["runtime2"] = 2;
|
|
67
|
+
return { props: args.props, opts: args.opts };
|
|
52
68
|
}
|
|
53
69
|
|
|
54
|
-
pulumi1.runtime.registerStackTransformation(transform1)
|
|
55
|
-
pulumi2.runtime.registerStackTransformation(transform2)
|
|
70
|
+
pulumi1.runtime.registerStackTransformation(transform1);
|
|
71
|
+
pulumi2.runtime.registerStackTransformation(transform2);
|
|
56
72
|
|
|
57
73
|
// Now do some useful things that require RPC connections:
|
|
58
74
|
pulumi1.log.info("logging via Pulumi1 works!");
|
|
59
75
|
pulumi2.log.info("logging via Pulumi2 works too!");
|
|
60
76
|
let res1 = new pulumi1.CustomResource("test:x:resource", "p1p1p1");
|
|
61
|
-
res1.urn.apply(urn => assert.strictEqual(urn, "test:x:resource::p1p1p1"));
|
|
77
|
+
res1.urn.apply((urn) => assert.strictEqual(urn, "test:x:resource::p1p1p1"));
|
|
62
78
|
let res2 = new pulumi2.CustomResource("test:y:resource", "p2p2p2");
|
|
63
|
-
res2.urn.apply(urn => assert.strictEqual(urn, "test:y:resource::p2p2p2"));
|
|
79
|
+
res2.urn.apply((urn) => assert.strictEqual(urn, "test:y:resource::p2p2p2"));
|
|
64
80
|
|
|
65
81
|
// Both resources should have the stack transforms applied
|
|
66
|
-
res1.runtime1.apply(value => assert.strictEqual(value, 1));
|
|
67
|
-
res1.runtime2.apply(value => assert.strictEqual(value, 2));
|
|
68
|
-
res2.runtime1.apply(value => assert.strictEqual(value, 1));
|
|
69
|
-
res2.runtime2.apply(value => assert.strictEqual(value, 2));
|
|
82
|
+
res1.runtime1.apply((value) => assert.strictEqual(value, 1));
|
|
83
|
+
res1.runtime2.apply((value) => assert.strictEqual(value, 2));
|
|
84
|
+
res2.runtime1.apply((value) => assert.strictEqual(value, 1));
|
|
85
|
+
res2.runtime2.apply((value) => assert.strictEqual(value, 2));
|
|
@@ -6,56 +6,56 @@ let assert = require("assert");
|
|
|
6
6
|
let pulumi = require("../../../../../");
|
|
7
7
|
|
|
8
8
|
class Provider extends pulumi.ProviderResource {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
constructor(name, opts) {
|
|
10
|
+
super("test", name, {}, opts);
|
|
11
|
+
}
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
class Resource extends pulumi.CustomResource {
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
constructor(name, createChildren, opts) {
|
|
16
|
+
super("test:index:Resource", name, {}, opts);
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
if (createChildren) {
|
|
19
|
+
createChildren(name, this);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
class Component extends pulumi.ComponentResource {
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
constructor(name, createChildren, opts) {
|
|
26
|
+
super("test:index:Component", name, {}, opts);
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
createChildren(name, this);
|
|
29
|
+
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
function createResources(name, createChildren, parent) {
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
// Use all parent defaults
|
|
34
|
+
new Resource(`${name}/r0`, createChildren, { parent: parent });
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
// Override protect
|
|
37
|
+
new Resource(`${name}/r1`, createChildren, { parent: parent, protect: false });
|
|
38
|
+
new Resource(`${name}/r2`, createChildren, { parent: parent, protect: true });
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
// Override provider
|
|
41
|
+
const provider = new Provider(`${name}-p`, { parent });
|
|
42
|
+
const r3 = new Resource(`${name}/r3`, createChildren, { parent, provider });
|
|
43
|
+
assert.strictEqual(r3.getProvider("test:index:Resource"), provider);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
function createComponents(name, createChildren, parent) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
47
|
+
// Use all parent defaults
|
|
48
|
+
new Component(`${name}/c0`, createChildren, { parent: parent });
|
|
49
|
+
|
|
50
|
+
// Override protect.
|
|
51
|
+
new Component(`${name}/c1`, createChildren, { parent: parent, protect: false });
|
|
52
|
+
new Component(`${name}/c2`, createChildren, { parent: parent, protect: true });
|
|
53
|
+
|
|
54
|
+
// Override providers.
|
|
55
|
+
new Component(`${name}/c3`, createChildren, {
|
|
56
|
+
parent: parent,
|
|
57
|
+
providers: { test: new Provider(`${name}-p`, { parent: parent }) },
|
|
58
|
+
});
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
// Create default (unparented) resources
|
|
@@ -63,19 +63,27 @@ createResources("unparented");
|
|
|
63
63
|
|
|
64
64
|
// Create singly-nested resources
|
|
65
65
|
createComponents("single-nest", (name, parent) => {
|
|
66
|
-
|
|
66
|
+
createResources(name, undefined, parent);
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
// Create doubly-nested resources
|
|
70
70
|
createComponents("double-nest", (name, parent) => {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
createComponents(
|
|
72
|
+
name,
|
|
73
|
+
(name, parent) => {
|
|
74
|
+
createResources(name, undefined, parent);
|
|
75
|
+
},
|
|
76
|
+
parent,
|
|
77
|
+
);
|
|
74
78
|
});
|
|
75
79
|
|
|
76
80
|
// Create doubly-nested resources parented to other resources
|
|
77
81
|
createComponents("double-nest-2", (name, parent) => {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
createResources(
|
|
83
|
+
name,
|
|
84
|
+
(name, parent) => {
|
|
85
|
+
createResources(name, undefined, parent);
|
|
86
|
+
},
|
|
87
|
+
parent,
|
|
88
|
+
);
|
|
81
89
|
});
|
|
@@ -4,27 +4,36 @@ let assert = require("assert");
|
|
|
4
4
|
let pulumi = require("../../../../../");
|
|
5
5
|
|
|
6
6
|
class MyResource extends pulumi.CustomResource {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
constructor(name, args, opts) {
|
|
8
|
+
super(
|
|
9
|
+
"test:index:MyResource",
|
|
10
|
+
name,
|
|
11
|
+
Object.assign(args, {
|
|
12
|
+
outprop: undefined,
|
|
13
|
+
}),
|
|
14
|
+
opts,
|
|
15
|
+
);
|
|
16
|
+
}
|
|
12
17
|
}
|
|
13
18
|
|
|
14
19
|
let resA = new MyResource("resA", {});
|
|
15
|
-
let resB = new MyResource("resB", {}, { dependsOn: [
|
|
20
|
+
let resB = new MyResource("resB", {}, { dependsOn: [resA] });
|
|
16
21
|
let resC = new MyResource("resC", {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
22
|
+
propA: resA.outprop,
|
|
23
|
+
propB: resB.outprop,
|
|
24
|
+
propC: "foo",
|
|
20
25
|
});
|
|
21
|
-
let resD
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
let resD = new MyResource("resD", {
|
|
27
|
+
propA: pulumi.all([resA.outprop, resB.outprop]).apply(([a, b]) => `${a} ${b}`),
|
|
28
|
+
propB: resC.outprop,
|
|
29
|
+
propC: "bar",
|
|
25
30
|
});
|
|
26
|
-
let resE = new MyResource(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
let resE = new MyResource(
|
|
32
|
+
"resE",
|
|
33
|
+
{
|
|
34
|
+
propA: resC.outprop,
|
|
35
|
+
propB: pulumi.all([resA.outprop, resB.outprop]).apply(([a, b]) => `${a} ${b}`),
|
|
36
|
+
propC: "baz",
|
|
37
|
+
},
|
|
38
|
+
{ dependsOn: [resD] },
|
|
39
|
+
);
|
|
@@ -2,9 +2,9 @@ let assert = require("assert");
|
|
|
2
2
|
let pulumi = require("../../../../../");
|
|
3
3
|
|
|
4
4
|
class MyResource extends pulumi.CustomResource {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
constructor(name, args, opts) {
|
|
6
|
+
super("test:index:MyResource", name, args, opts);
|
|
7
|
+
}
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
// cust1
|
|
@@ -2,9 +2,9 @@ let assert = require("assert");
|
|
|
2
2
|
let pulumi = require("../../../../../");
|
|
3
3
|
|
|
4
4
|
class MyResource extends pulumi.CustomResource {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
constructor(name, args, opts) {
|
|
6
|
+
super("test:index:MyResource", name, args, opts);
|
|
7
|
+
}
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
// cust1
|
|
@@ -2,15 +2,15 @@ let assert = require("assert");
|
|
|
2
2
|
let pulumi = require("../../../../../");
|
|
3
3
|
|
|
4
4
|
class MyCustomResource extends pulumi.CustomResource {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
constructor(name, args, opts) {
|
|
6
|
+
super("test:index:MyCustomResource", name, args, opts);
|
|
7
|
+
}
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
class MyComponentResource extends pulumi.ComponentResource {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
constructor(name, args, opts) {
|
|
12
|
+
super("test:index:MyComponentResource", name, args, opts);
|
|
13
|
+
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// comp1
|
|
@@ -2,15 +2,15 @@ let assert = require("assert");
|
|
|
2
2
|
let pulumi = require("../../../../../");
|
|
3
3
|
|
|
4
4
|
class MyCustomResource extends pulumi.CustomResource {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
constructor(name, args, opts) {
|
|
6
|
+
super("test:index:MyCustomResource", name, args, opts);
|
|
7
|
+
}
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
class MyComponentResource extends pulumi.ComponentResource {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
constructor(name, args, opts) {
|
|
12
|
+
super("test:index:MyComponentResource", name, args, opts);
|
|
13
|
+
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// comp1
|
|
@@ -18,5 +18,5 @@ class MyComponentResource extends pulumi.ComponentResource {
|
|
|
18
18
|
// cust1 cust2
|
|
19
19
|
|
|
20
20
|
let comp1 = new MyComponentResource("comp1");
|
|
21
|
-
let cust1 = new MyCustomResource("cust1", {
|
|
22
|
-
let cust2 = new MyCustomResource("cust2", {
|
|
21
|
+
let cust1 = new MyCustomResource("cust1", {}, { parent: comp1 });
|
|
22
|
+
let cust2 = new MyCustomResource("cust2", {}, { parent: comp1 });
|
|
@@ -2,15 +2,15 @@ let assert = require("assert");
|
|
|
2
2
|
let pulumi = require("../../../../../");
|
|
3
3
|
|
|
4
4
|
class MyCustomResource extends pulumi.CustomResource {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
constructor(name, args, opts) {
|
|
6
|
+
super("test:index:MyCustomResource", name, args, opts);
|
|
7
|
+
}
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
class MyComponentResource extends pulumi.ComponentResource {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
constructor(name, args, opts) {
|
|
12
|
+
super("test:index:MyComponentResource", name, args, opts);
|
|
13
|
+
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// comp1
|
|
@@ -18,7 +18,7 @@ class MyComponentResource extends pulumi.ComponentResource {
|
|
|
18
18
|
// cust1 cust2
|
|
19
19
|
|
|
20
20
|
let comp1 = new MyComponentResource("comp1");
|
|
21
|
-
let cust1 = new MyCustomResource("cust1", {
|
|
22
|
-
let cust2 = new MyCustomResource("cust2", {
|
|
21
|
+
let cust1 = new MyCustomResource("cust1", {}, { parent: comp1 });
|
|
22
|
+
let cust2 = new MyCustomResource("cust2", {}, { parent: comp1 });
|
|
23
23
|
|
|
24
|
-
let res1 = new MyCustomResource("res1", {
|
|
24
|
+
let res1 = new MyCustomResource("res1", {}, { dependsOn: comp1 });
|
|
@@ -2,15 +2,15 @@ let assert = require("assert");
|
|
|
2
2
|
let pulumi = require("../../../../../");
|
|
3
3
|
|
|
4
4
|
class MyCustomResource extends pulumi.CustomResource {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
constructor(name, args, opts) {
|
|
6
|
+
super("test:index:MyCustomResource", name, args, opts);
|
|
7
|
+
}
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
class MyComponentResource extends pulumi.ComponentResource {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
constructor(name, args, opts) {
|
|
12
|
+
super("test:index:MyComponentResource", name, args, opts);
|
|
13
|
+
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
// comp1
|
|
@@ -20,10 +20,10 @@ class MyComponentResource extends pulumi.ComponentResource {
|
|
|
20
20
|
// cust2 cust3
|
|
21
21
|
|
|
22
22
|
let comp1 = new MyComponentResource("comp1");
|
|
23
|
-
let cust1 = new MyCustomResource("cust1", {
|
|
23
|
+
let cust1 = new MyCustomResource("cust1", {}, { parent: comp1 });
|
|
24
24
|
|
|
25
|
-
let comp2 = new MyComponentResource("comp2", {
|
|
26
|
-
let cust2 = new MyCustomResource("cust2", {
|
|
27
|
-
let cust3 = new MyCustomResource("cust3", {
|
|
25
|
+
let comp2 = new MyComponentResource("comp2", {}, { parent: comp1 });
|
|
26
|
+
let cust2 = new MyCustomResource("cust2", {}, { parent: comp2 });
|
|
27
|
+
let cust3 = new MyCustomResource("cust3", {}, { parent: comp2 });
|
|
28
28
|
|
|
29
|
-
let res1 = new MyCustomResource("res1", {
|
|
29
|
+
let res1 = new MyCustomResource("res1", {}, { dependsOn: comp1 });
|