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