sparse-intern-71089
02/25/2019, 6:57 PMbetter-rainbow-14549
02/25/2019, 6:57 PMbetter-rainbow-14549
02/25/2019, 6:58 PMcreamy-potato-29402
02/25/2019, 6:58 PMbetter-rainbow-14549
02/25/2019, 6:58 PMlemon-spoon-91807
02/25/2019, 6:59 PMlemon-spoon-91807
02/25/2019, 6:59 PMlemon-spoon-91807
02/25/2019, 7:00 PMbetter-rainbow-14549
02/25/2019, 7:00 PMlemon-spoon-91807
02/25/2019, 7:00 PMbetter-rainbow-14549
02/25/2019, 7:00 PMlemon-spoon-91807
02/25/2019, 7:00 PMlemon-spoon-91807
02/25/2019, 7:00 PMlemon-spoon-91807
02/25/2019, 7:01 PMlemon-spoon-91807
02/25/2019, 7:01 PMpulumi.output(yourArrayThatHasDeepOutputsInIt).apply(unwrapped => whateverYouWant(... unwrapped ...))
lemon-spoon-91807
02/25/2019, 7:02 PMOutput<string[]>
.lemon-spoon-91807
02/25/2019, 7:02 PMpulumi.output(dataThatHasDeepOutputInIt).apply(u => JSON.stringify(u))
better-rainbow-14549
02/25/2019, 7:02 PMbetter-rainbow-14549
02/25/2019, 7:02 PMbetter-rainbow-14549
02/25/2019, 7:03 PMlemon-spoon-91807
02/25/2019, 7:03 PMlemon-spoon-91807
02/25/2019, 7:03 PMlemon-spoon-91807
02/25/2019, 7:04 PMbetter-rainbow-14549
02/25/2019, 7:04 PMlemon-spoon-91807
02/25/2019, 7:05 PMlemon-spoon-91807
02/25/2019, 7:06 PMPromise.all([promiseOfString, promiseOfNumber])
and get Promise<[string, number]>
lemon-spoon-91807
02/25/2019, 7:06 PMlemon-spoon-91807
02/25/2019, 7:07 PMlemon-spoon-91807
02/25/2019, 7:08 PMpulumi.all([outputOfString, outputOfNumber])
gives you Output<[string, number]>
lemon-spoon-91807
02/25/2019, 7:08 PMbetter-rainbow-14549
02/25/2019, 7:08 PMexport const appsettings = pulumi.all([
sqlServer.fullyQualifiedDomainName,
db.name,
keyVault.vaultUri
]).apply(([
sqlServerUri,
sqlDb,
keyVaultUri
]) =>
lemon-spoon-91807
02/25/2019, 7:09 PMpulumi.all([outputOfString, outputOfNumber])
and you get back an Output<[string, number]>
that Output will track all of the dependencies of outputOfString
and outputOfNumber
🙂better-rainbow-14549
02/25/2019, 7:09 PMlemon-spoon-91807
02/25/2019, 7:09 PMbetter-rainbow-14549
02/25/2019, 7:09 PMexport const hostMappings = pulumi.all([
service.metadata.apply(x => x.name),
namespace.metadata.apply(x => x.name)
]).apply(([
better-rainbow-14549
02/25/2019, 7:10 PMlemon-spoon-91807
02/25/2019, 7:10 PMpulumi.output(...)
functionlemon-spoon-91807
02/25/2019, 7:10 PMbetter-rainbow-14549
02/25/2019, 7:11 PMbetter-rainbow-14549
02/25/2019, 7:11 PMlemon-spoon-91807
02/25/2019, 7:11 PMbetter-rainbow-14549
02/25/2019, 7:12 PMlemon-spoon-91807
02/25/2019, 7:12 PMexport const hostMappings = pulumi.all([
service.metadata,
namespace.metadata
]).apply(([serviceMD, nsMD]) => /* can use serviceMD.name here, and it will be a string */
lemon-spoon-91807
02/25/2019, 7:12 PMbetter-rainbow-14549
02/25/2019, 7:12 PMbetter-rainbow-14549
02/25/2019, 7:12 PMlemon-spoon-91807
02/25/2019, 7:13 PMlemon-spoon-91807
02/25/2019, 7:13 PMbetter-rainbow-14549
02/25/2019, 7:14 PMlemon-spoon-91807
02/25/2019, 7:14 PMlemon-spoon-91807
02/25/2019, 7:14 PMservice.metadata.apply(x => x.name)
lemon-spoon-91807
02/25/2019, 7:14 PMlemon-spoon-91807
02/25/2019, 7:15 PMservice.metadata.name
and that will already be the right Output<string>
.lemon-spoon-91807
02/25/2019, 7:15 PMservice.metadata.apply(x => x.name)
lemon-spoon-91807
02/25/2019, 7:15 PMbetter-rainbow-14549
02/25/2019, 7:15 PMlemon-spoon-91807
02/25/2019, 7:15 PMbetter-rainbow-14549
02/25/2019, 7:16 PMlemon-spoon-91807
02/25/2019, 7:16 PMlemon-spoon-91807
02/25/2019, 7:16 PMlemon-spoon-91807
02/25/2019, 7:16 PMlemon-spoon-91807
02/25/2019, 7:16 PMpulumi.output(...)
and pulumi.all(...)
are functions that take in some data, and return what we call `Unwrap`ed data.lemon-spoon-91807
02/25/2019, 7:17 PMpulumi.output(...)
for now. It takes in data of type T, and gives you Output<Unwrap<T>> back. So what does that mean?lemon-spoon-91807
02/25/2019, 7:18 PMlemon-spoon-91807
02/25/2019, 7:18 PM{ a: [Promise.resolve(1)] }
. That would normally be the type { : Promise<number>[] }
lemon-spoon-91807
02/25/2019, 7:19 PM{ a: [1] }
.better-rainbow-14549
02/25/2019, 7:19 PMlemon-spoon-91807
02/25/2019, 7:19 PMlemon-spoon-91807
02/25/2019, 7:20 PMlemon-spoon-91807
02/25/2019, 7:20 PMlemon-spoon-91807
02/25/2019, 7:20 PMlemon-spoon-91807
02/25/2019, 7:20 PM{ a: [1] }
is a new objectbetter-rainbow-14549
02/25/2019, 7:20 PMlemon-spoon-91807
02/25/2019, 7:20 PMbetter-rainbow-14549
02/25/2019, 7:20 PMlemon-spoon-91807
02/25/2019, 7:21 PMlemon-spoon-91807
02/25/2019, 7:21 PMlemon-spoon-91807
02/25/2019, 7:21 PMbetter-rainbow-14549
02/25/2019, 7:21 PMbetter-rainbow-14549
02/25/2019, 7:21 PMbetter-rainbow-14549
02/25/2019, 7:21 PMimport * as kubernetes from "@pulumi/kubernetes";
import * as pulumi from "@pulumi/pulumi";
export interface App {
service: kubernetes.core.v1.Service;
}
export type AppList = { [name: string]: App };
function createAService(): kubernetes.core.v1.Service {
return <kubernetes.core.v1.Service>{};
}
var list: AppList = {
"A": { service: createAService() },
"B": { service: createAService() },
"C": { service: createAService() },
}
let t = pulumi
.output(list)
.apply(x => {
let results: pulumi.Output<string>[] = [];
for (let y in x) {
results.push(x[y].service.metadata.apply(z => z.name));
}
return results;
});
lemon-spoon-91807
02/25/2019, 7:21 PMbetter-rainbow-14549
02/25/2019, 7:21 PMbetter-rainbow-14549
02/25/2019, 7:22 PMlemon-spoon-91807
02/25/2019, 7:22 PMbetter-rainbow-14549
02/25/2019, 7:22 PMlemon-spoon-91807
02/25/2019, 7:22 PMbetter-rainbow-14549
02/25/2019, 7:22 PMbetter-rainbow-14549
02/25/2019, 7:22 PMlemon-spoon-91807
02/25/2019, 7:22 PMlemon-spoon-91807
02/25/2019, 7:23 PMlemon-spoon-91807
02/25/2019, 7:23 PMbetter-rainbow-14549
02/25/2019, 7:23 PMbetter-rainbow-14549
02/25/2019, 7:23 PMlemon-spoon-91807
02/25/2019, 7:24 PMlemon-spoon-91807
02/25/2019, 7:24 PMlemon-spoon-91807
02/25/2019, 7:24 PM.apply(JSON.stringify)
better-rainbow-14549
02/25/2019, 7:25 PMlemon-spoon-91807
02/25/2019, 7:25 PMlemon-spoon-91807
02/25/2019, 7:26 PMlemon-spoon-91807
02/25/2019, 7:26 PMreturn pulumi.all(results).apply(JSON.stringify)
(i believe)better-rainbow-14549
02/25/2019, 7:27 PMlemon-spoon-91807
02/25/2019, 7:28 PMreturn pulumi.all(Object.values(x).map(s => s.metadata.apply(m => m.name))).apply(JSON.stringify)
lemon-spoon-91807
02/25/2019, 7:28 PMlemon-spoon-91807
02/25/2019, 7:28 PMreturn pulumi.all(Object.values(x).map(s => s.metadata.name)).apply(JSON.stringify)
lemon-spoon-91807
02/25/2019, 7:29 PMlemon-spoon-91807
02/25/2019, 7:29 PMbetter-rainbow-14549
02/25/2019, 7:29 PMbetter-rainbow-14549
02/25/2019, 7:29 PMbetter-rainbow-14549
02/25/2019, 7:44 PM