From 735a7116f0dcfed83ddaee986cc2c9ac96fec894 Mon Sep 17 00:00:00 2001 From: CyrusNajmabadi Date: Wed, 6 Mar 2019 15:26:23 -0800 Subject: [PATCH] Use the new 0.17 api (#239) --- aws-js-containers/index.js | 3 +- aws-js-webserver-component/index.js | 4 +- aws-ts-airflow/index.ts | 6 +- aws-ts-containers/index.ts | 3 +- aws-ts-eks-hello-world/index.ts | 6 +- aws-ts-resources/index.ts | 2 +- aws-ts-ruby-on-rails/index.ts | 5 +- aws-ts-serverless-raw/index.ts | 14 ++-- aws-ts-static-website/index.ts | 22 +++--- aws-ts-url-shortener-cache-http/index.ts | 3 +- azure-ts-appservice/index.ts | 12 +-- azure-ts-arm-template/index.ts | 2 +- cloud-js-containers/index.js | 3 +- cloud-ts-url-shortener-cache-http/cache.ts | 2 +- cloud-ts-url-shortener-cache-http/index.ts | 3 +- cloud-ts-url-shortener-cache/cache.ts | 2 +- cloud-ts-voting-app/index.ts | 12 +-- .../f5bigip-ec2-instance/index.ts | 2 +- gcp-js-webserver/index.js | 2 +- gcp-ts-gke-hello-world/index.ts | 6 +- .../infra/index.ts | 6 +- kubernetes-ts-configmap-rollout/index.ts | 4 +- kubernetes-ts-exposed-deployment/index.ts | 4 +- kubernetes-ts-guestbook/components/k8sjs.ts | 4 +- kubernetes-ts-guestbook/simple/index.ts | 14 ++-- kubernetes-ts-nginx/index.ts | 2 +- kubernetes-ts-s3-rollout/index.ts | 4 +- kubernetes-ts-s3-rollout/s3Helpers.ts | 2 +- kubernetes-ts-sock-shop/index.ts | 78 +++++++++---------- .../index.ts | 4 +- twilio-ts-component/twilio.ts | 16 ++-- 31 files changed, 129 insertions(+), 123 deletions(-) diff --git a/aws-js-containers/index.js b/aws-js-containers/index.js index 2766f73d2..39cce460b 100644 --- a/aws-js-containers/index.js +++ b/aws-js-containers/index.js @@ -1,3 +1,4 @@ +const pulumi = require("@pulumi/pulumi"); const awsx = require("@pulumi/awsx"); let cluster = new awsx.ecs.Cluster("example", { }); @@ -17,4 +18,4 @@ let service = new awsx.ecs.FargateService("nginx", { }); // export just the hostname property of the container frontend -exports.hostname = listener.endpoint.apply(e => `http://${e.hostname}`); +exports.hostname = pulumi.interpolate `http://${listener.endpoint.hostname}`; diff --git a/aws-js-webserver-component/index.js b/aws-js-webserver-component/index.js index 57c59db6b..78877b034 100644 --- a/aws-js-webserver-component/index.js +++ b/aws-js-webserver-component/index.js @@ -1,6 +1,8 @@ +const pulumi = require("@pulumi/pulumi"); + const webserver = require("./webserver.js"); let webInstance = webserver.createInstance("web-server-www", "t2.nano"); let appInstance = webserver.createInstance("web-server-app", "t2.micro"); -exports.webUrl = webInstance.publicDns.apply(dns => `http://${dns}`); // apply transformation to output property +exports.webUrl = pulumi.interpolate `http://${webInstance.publicDns}`; diff --git a/aws-ts-airflow/index.ts b/aws-ts-airflow/index.ts index 45d3fc56c..e57b8bdd1 100644 --- a/aws-ts-airflow/index.ts +++ b/aws-ts-airflow/index.ts @@ -55,7 +55,7 @@ let cacheCluster = new aws.elasticache.Cluster("cachecluster", { securityGroupIds: securityGroupIds, }); -let hosts = pulumi.all([db.endpoint.apply(e => e.split(":")[0]), cacheCluster.cacheNodes.apply(n => n[0].address)]); +let hosts = pulumi.all([db.endpoint.apply(e => e.split(":")[0]), cacheCluster.cacheNodes[0].address]); let environment = hosts.apply(([postgresHost, redisHost]) => [ { name: "POSTGRES_HOST", value: postgresHost }, { name: "POSTGRES_PASSWORD", value: dbPassword }, @@ -130,5 +130,5 @@ let airflowWorkers = new awsx.ecs.EC2Service("airflowworkers", { }, }); -export let airflowEndpoint = airflowControllerListener.endpoint().apply(e => e.hostname); -export let flowerEndpoint = airflowerListener.endpoint().apply(e => e.hostname); +export let airflowEndpoint = airflowControllerListener.endpoint().hostname; +export let flowerEndpoint = airflowerListener.endpoint().hostname; diff --git a/aws-ts-containers/index.ts b/aws-ts-containers/index.ts index b45785488..9fa9b7c18 100644 --- a/aws-ts-containers/index.ts +++ b/aws-ts-containers/index.ts @@ -1,3 +1,4 @@ +import * as pulumi from "@pulumi/pulumi"; import * as awsx from "@pulumi/awsx"; // Create an elastic network listener to listen for requests and route them to the container. @@ -21,4 +22,4 @@ let service = new awsx.ecs.FargateService("nginx", { }); // export just the hostname property of the container frontend -export const hostname = listener.endpoint().apply(e => `http://${e.hostname}`); +export const hostname = pulumi.interpolate `http://${listener.endpoint.hostname}`; diff --git a/aws-ts-eks-hello-world/index.ts b/aws-ts-eks-hello-world/index.ts index 87d0e7d7c..0b8d93848 100644 --- a/aws-ts-eks-hello-world/index.ts +++ b/aws-ts-eks-hello-world/index.ts @@ -25,7 +25,7 @@ export const kubeconfig = cluster.kubeconfig const ns = new k8s.core.v1.Namespace(name, {}, { provider: cluster.provider }); // Export the Namespace name -export const namespaceName = ns.metadata.apply(m => m.name); +export const namespaceName = ns.metadata.name; // Create a NGINX Deployment const appLabels = { appClass: name }; @@ -60,7 +60,7 @@ const deployment = new k8s.apps.v1.Deployment(name, ); // Export the Deployment name -export const deploymentName = deployment.metadata.apply(m => m.name); +export const deploymentName = deployment.metadata.name; // Create a LoadBalancer Service for the NGINX Deployment const service = new k8s.core.v1.Service(name, @@ -81,5 +81,5 @@ const service = new k8s.core.v1.Service(name, ); // Export the Service name and public LoadBalancer Endpoint -export const serviceName = service.metadata.apply(m => m.name); +export const serviceName = service.metadata.name; export const serviceHostname = service.status.apply(s => s.loadBalancer.ingress[0].hostname) diff --git a/aws-ts-resources/index.ts b/aws-ts-resources/index.ts index 703a071d3..1d1f98baf 100644 --- a/aws-ts-resources/index.ts +++ b/aws-ts-resources/index.ts @@ -10,7 +10,7 @@ const database = new aws.athena.Database("mydatabase", { const namedQuery = new aws.athena.NamedQuery("mynamedquery", { database: database.id, - query: database.id.apply(n => `SELECT * FROM ${n} limit 10;`) + query: pulumi.interpolate `SELECT * FROM ${database.id} limit 10;`, }); // CloudWatch diff --git a/aws-ts-ruby-on-rails/index.ts b/aws-ts-ruby-on-rails/index.ts index 3ab8109f4..e2d215010 100644 --- a/aws-ts-ruby-on-rails/index.ts +++ b/aws-ts-ruby-on-rails/index.ts @@ -1,3 +1,4 @@ +import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; import * as config from "./config"; import { getLinuxAmi } from "pawsami"; @@ -50,7 +51,7 @@ const webServer = new aws.ec2.Instance("webServer", { }, }, services: { - "sysvinit": { + "sysvinit": { "mysqld": { enabled: true, ensureRunning: true }, }, }, @@ -114,4 +115,4 @@ const webServer = new aws.ec2.Instance("webServer", { export let vmIP = webServer.publicIp; // Export the URL for our newly created Rails application. -export let websiteURL = webServer.publicDns.apply(url => `http://${url}/notes`); +export let websiteURL = pulumi.interpolate `http://${webServer.publicDns}/notes`; diff --git a/aws-ts-serverless-raw/index.ts b/aws-ts-serverless-raw/index.ts index 40cca1f54..6a5059ba9 100644 --- a/aws-ts-serverless-raw/index.ts +++ b/aws-ts-serverless-raw/index.ts @@ -1,9 +1,9 @@ // Copyright 2016-2018, Pulumi Corporation. All rights reserved. -import * as aws from "@pulumi/aws"; import * as pulumi from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; -// The location of the built dotnet2.0 application to deploy +// The location of the built dotnet2.0 application to deploy let dotNetApplicationPublishFolder = "./app/bin/Debug/netcoreapp2.0/publish"; let dotNetApplicationEntryPoint = "app::app.Functions::GetAsync"; // The stage name to use for the API Gateway URL @@ -58,7 +58,7 @@ let lambda = new aws.lambda.Function("mylambda", { timeout: 300, handler: dotNetApplicationEntryPoint, role: role.arn, - environment: { + environment: { variables: { "COUNTER_TABLE": counterTable.name } @@ -105,11 +105,11 @@ let restApi = new aws.apigateway.RestApi("api", { let deployment = new aws.apigateway.Deployment("api-deployment", { restApi: restApi, // Note: Set to empty to avoid creating an implicit stage, we'll create it explicitly below instead. - stageName: "", + stageName: "", }); // Create a stage, which is an addressable instance of the Rest API. Set it to point at the latest deployment. -let stage = new aws.apigateway.Stage("api-stage", { +let stage = new aws.apigateway.Stage("api-stage", { restApi: restApi, deployment: deployment, stageName: stageName @@ -120,8 +120,8 @@ let invokePermission = new aws.lambda.Permission("api-lambda-permission", { action: "lambda:invokeFunction", function: lambda, principal: "apigateway.amazonaws.com", - sourceArn: deployment.executionArn.apply(arn => arn + "*/*"), + sourceArn: pulumi.interpolate `${deployment.executionArn}*/*`, }); // Export the https endpoint of the running Rest API -export let endpoint = deployment.invokeUrl.apply(url => url + stageName); +export let endpoint = pulumi.interpolate `${deployment.invokeUrl}${stageName}`; diff --git a/aws-ts-static-website/index.ts b/aws-ts-static-website/index.ts index 16374024f..e706efec5 100644 --- a/aws-ts-static-website/index.ts +++ b/aws-ts-static-website/index.ts @@ -1,5 +1,5 @@ -import * as aws from "@pulumi/aws"; import * as pulumi from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; import * as fs from "fs"; import * as mime from "mime"; @@ -84,7 +84,7 @@ let certificateArn: pulumi.Input = config.certificateArn!; * Only provision a certificate (and related resources) if a certificateArn is _not_ provided via configuration. */ if (config.certificateArn === undefined) { - + const eastRegion = new aws.Provider("east", { region: "us-east-1", // Per AWS, ACM certificate must be in the us-east-1 region. }); @@ -102,18 +102,18 @@ if (config.certificateArn === undefined) { * See https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-validate-dns.html for more info. */ const certificateValidationDomain = new aws.route53.Record(`${config.targetDomain}-validation`, { - name: certificate.domainValidationOptions.apply(d => d[0].resourceRecordName), + name: certificate.domainValidationOptions[0].resourceRecordName, zoneId: hostedZoneId, - type: certificate.domainValidationOptions.apply(d => d[0].resourceRecordType), - records: [certificate.domainValidationOptions.apply(d => d[0].resourceRecordValue)], + type: certificate.domainValidationOptions[0].resourceRecordType, + records: [certificate.domainValidationOptions[0].resourceRecordValue], ttl: tenMinutes, }); /** - * This is a _special_ resource that waits for ACM to complete validation via the DNS record - * checking for a status of "ISSUED" on the certificate itself. No actual resources are - * created (or updated or deleted). - * + * This is a _special_ resource that waits for ACM to complete validation via the DNS record + * checking for a status of "ISSUED" on the certificate itself. No actual resources are + * created (or updated or deleted). + * * See https://www.terraform.io/docs/providers/aws/r/acm_certificate_validation.html for slightly more detail * and https://github.com/terraform-providers/terraform-provider-aws/blob/master/aws/resource_aws_acm_certificate_validation.go * for the actual implementation. @@ -132,7 +132,7 @@ if (config.certificateArn === undefined) { const distributionArgs: aws.cloudfront.DistributionArgs = { enabled: true, // Alternate aliases the CloudFront distribution can be reached at, in addition to https://xxxx.cloudfront.net. - // Required if you want to access the distribution via config.targetDomain as well. + // Required if you want to access the distribution via config.targetDomain as well. aliases: [ config.targetDomain ], // We only specify one origin for this distribution, the S3 content bucket. @@ -248,7 +248,7 @@ const aRecord = createAliasRecord(config.targetDomain, cdn); // Export properties from this stack. This prints them at the end of `pulumi up` and // makes them easier to access from the pulumi.com. -export const contentBucketUri = contentBucket.bucket.apply(b => `s3://${b}`); +export const contentBucketUri = pulumi.interpolate `s3://${contentBucket.bucket}`; export const contentBucketWebsiteEndpoint = contentBucket.websiteEndpoint; export const cloudFrontDomain = cdn.domainName; export const targetDomainEndpoint = `https://${config.targetDomain}/`; diff --git a/aws-ts-url-shortener-cache-http/index.ts b/aws-ts-url-shortener-cache-http/index.ts index 392150bbb..bc05eeacd 100644 --- a/aws-ts-url-shortener-cache-http/index.ts +++ b/aws-ts-url-shortener-cache-http/index.ts @@ -1,5 +1,6 @@ // Copyright 2016-2018, Pulumi Corporation. All rights reserved. +import * as pulumi from "@pulumi/pulumi"; import * as aws from "@pulumi/aws"; import * as awsx from "@pulumi/awsx"; import * as cloud from "@pulumi/cloud-aws"; @@ -104,4 +105,4 @@ let httpServer = new cloud.HttpServer("urlshortener", () => { return app; }); -export let endpointUrl = httpServer.url.apply(u => u + "index.html"); +export let endpointUrl = pulumi.interpolate `${httpServer.url}index.html`; diff --git a/azure-ts-appservice/index.ts b/azure-ts-appservice/index.ts index 79ade7193..8cdbadad0 100644 --- a/azure-ts-appservice/index.ts +++ b/azure-ts-appservice/index.ts @@ -63,14 +63,14 @@ const username = "pulumi"; // Get the password to use for SQL from config. const config = new pulumi.Config(); -const pwd = config.require("sqlPassword"); +const pwd = config.require("sqlPassword"); const sqlServer = new azure.sql.SqlServer(`${prefix}-sql`, { ...resourceGroupArgs, administratorLogin: username, administratorLoginPassword: pwd, - version: "12.0", + version: "12.0", }); const database = new azure.sql.Database(`${prefix}-db`, { @@ -93,11 +93,11 @@ const app = new azure.appservice.AppService(`${prefix}-as`, { connectionStrings: [{ name: "db", - value: - pulumi.all([sqlServer.name, database.name]).apply(([server, db]) => + value: + pulumi.all([sqlServer.name, database.name]).apply(([server, db]) => `Server=tcp:${server}.database.windows.net;initial catalog=${db};user ID=${username};password=${pwd};Min Pool Size=0;Max Pool Size=30;Persist Security Info=true;`), type: "SQLAzure" - }] + }] }); -exports.endpoint = app.defaultSiteHostname.apply(n => `https://${n}`); +exports.endpoint = pulumi.interpolate `https://${app.defaultSiteHostname}`; diff --git a/azure-ts-arm-template/index.ts b/azure-ts-arm-template/index.ts index 5ebe89351..9acb65e85 100644 --- a/azure-ts-arm-template/index.ts +++ b/azure-ts-arm-template/index.ts @@ -71,4 +71,4 @@ const armDeployment = new azure.core.TemplateDeployment("test-dep", { }); // Finally, export the allocated storage account name. -export const storageAccountName = armDeployment.outputs.apply(outs => outs["storageAccountName"]); +export const storageAccountName = armDeployment.outputs["storageAccountName"]; diff --git a/cloud-js-containers/index.js b/cloud-js-containers/index.js index 03c2dc56d..5214c63b5 100644 --- a/cloud-js-containers/index.js +++ b/cloud-js-containers/index.js @@ -1,3 +1,4 @@ +const pulumi = require("@pulumi/pulumi"); const cloud = require("@pulumi/cloud-aws"); let service = new cloud.Service("pulumi-nginx", { @@ -12,4 +13,4 @@ let service = new cloud.Service("pulumi-nginx", { }); // export just the hostname property of the container frontend -exports.hostname = service.defaultEndpoint.apply(e => `http://${e.hostname}`); +exports.hostname = pulumi.interpolate `http://${service.defaultEndpoint.hostname}`; diff --git a/cloud-ts-url-shortener-cache-http/cache.ts b/cloud-ts-url-shortener-cache-http/cache.ts index fb973f8a3..daa21de51 100644 --- a/cloud-ts-url-shortener-cache-http/cache.ts +++ b/cloud-ts-url-shortener-cache-http/cache.ts @@ -22,7 +22,7 @@ export class Cache { }, }); - this.endpoint = this.redis.endpoints.apply(endpoints => endpoints.redis[6379]); + this.endpoint = this.redis.endpoints.redis[6379]; } public get(key: string): Promise { diff --git a/cloud-ts-url-shortener-cache-http/index.ts b/cloud-ts-url-shortener-cache-http/index.ts index 1e0580570..5e754b2dd 100644 --- a/cloud-ts-url-shortener-cache-http/index.ts +++ b/cloud-ts-url-shortener-cache-http/index.ts @@ -1,5 +1,6 @@ // Copyright 2016-2018, Pulumi Corporation. All rights reserved. +import * as pulumi from "@pulumi/pulumi"; import * as cloud from "@pulumi/cloud"; import * as cache from "./cache"; import * as express from "express"; @@ -131,4 +132,4 @@ function staticRoutes(app: express.Express, path: string, root: string) { } } -export let endpointUrl = endpoint.url.apply(u => u + "index.html"); +export let endpointUrl = pulumi.interpolate `${endpoint.url}index.html`; diff --git a/cloud-ts-url-shortener-cache/cache.ts b/cloud-ts-url-shortener-cache/cache.ts index 21628df0d..1cfdc9920 100644 --- a/cloud-ts-url-shortener-cache/cache.ts +++ b/cloud-ts-url-shortener-cache/cache.ts @@ -23,7 +23,7 @@ export class Cache { }, }); - let endpoint = this.redis.endpoints.apply(endpoints => endpoints.redis[6379]); + let endpoint = this.redis.endpoints.redis[6379]; this.get = async (key: string) => { let ep = (await endpoint).get(); console.log(`Getting key '${key}' on Redis@${ep.hostname}:${ep.port}`); diff --git a/cloud-ts-voting-app/index.ts b/cloud-ts-voting-app/index.ts index 7232c396e..80bd70ec3 100644 --- a/cloud-ts-voting-app/index.ts +++ b/cloud-ts-voting-app/index.ts @@ -5,7 +5,7 @@ import * as cloud from "@pulumi/cloud"; // Get the password to use for Redis from config. let config = new pulumi.Config(); -let redisPassword = config.require("redisPassword"); +let redisPassword = config.require("redisPassword"); let redisPort = 6379; // The data layer for the application @@ -21,7 +21,7 @@ let redisCache = new cloud.Service("voting-app-cache", { }, }); -let redisEndpoint = redisCache.endpoints.apply(endpoints => endpoints.redis[redisPort]); +let redisEndpoint = redisCache.endpoints.redis[redisPort]; // A custom container for the frontend, which is a Python Flask app // Use the 'build' property to specify a folder that contains a Dockerfile. @@ -31,10 +31,10 @@ let frontend = new cloud.Service("voting-app-frontend", { votingAppFrontend: { build: "./frontend", // path to the folder containing the Dockerfile memory: 512, - ports: [{ port: 80 }], - environment: { + ports: [{ port: 80 }], + environment: { // pass the Redis container info in environment variables - "REDIS": redisEndpoint.apply(e => e.hostname), + "REDIS": redisEndpoint.hostname, "REDIS_PORT": redisEndpoint.apply(e => e.port.toString()), "REDIS_PWD": redisPassword } @@ -43,4 +43,4 @@ let frontend = new cloud.Service("voting-app-frontend", { }); // Export a variable that will be displayed during 'pulumi up' -export let frontendURL = frontend.endpoints.apply(e => e["votingAppFrontend"][80].hostname); +export let frontendURL = frontend.endpoints["votingAppFrontend"][80].hostname; diff --git a/f5bigip-ts-ltm-pool/f5bigip-ec2-instance/index.ts b/f5bigip-ts-ltm-pool/f5bigip-ec2-instance/index.ts index 8979c36dc..7b0e07464 100644 --- a/f5bigip-ts-ltm-pool/f5bigip-ec2-instance/index.ts +++ b/f5bigip-ts-ltm-pool/f5bigip-ec2-instance/index.ts @@ -81,5 +81,5 @@ const f5BigIpInstance = new aws.ec2.Instance("bigIp", { vpcSecurityGroupIds: [firewall.id], }); -export const f5Address = f5BigIpInstance.publicIp.apply(x => `https://${x}:8443`); +export const f5Address = pulumi.interpolate `https://${f5BigIpInstance.publicIp}:8443`; export const f5PrivateIp = f5BigIpInstance.privateIp; diff --git a/gcp-js-webserver/index.js b/gcp-js-webserver/index.js index b22375ea6..6a322fed5 100644 --- a/gcp-js-webserver/index.js +++ b/gcp-js-webserver/index.js @@ -35,4 +35,4 @@ const computeInstance = new gcp.compute.Instance("instance", { }, { dependsOn: [computeFirewall] }); exports.instanceName = computeInstance.name; -exports.instanceIP = computeInstance.networkInterfaces.apply(ni => ni[0].accessConfigs[0].natIp); +exports.instanceIP = computeInstance.networkInterfaces[0].accessConfigs[0].natIp; diff --git a/gcp-ts-gke-hello-world/index.ts b/gcp-ts-gke-hello-world/index.ts index 6f1239fef..d67c08371 100644 --- a/gcp-ts-gke-hello-world/index.ts +++ b/gcp-ts-gke-hello-world/index.ts @@ -67,7 +67,7 @@ const clusterProvider = new k8s.Provider(name, { const ns = new k8s.core.v1.Namespace(name, {}, { provider: clusterProvider }); // Export the Namespace name -export const namespaceName = ns.metadata.apply(m => m.name); +export const namespaceName = ns.metadata.name; // Create a NGINX Deployment const appLabels = { appClass: name }; @@ -102,7 +102,7 @@ const deployment = new k8s.apps.v1.Deployment(name, ); // Export the Deployment name -export const deploymentName = deployment.metadata.apply(m => m.name); +export const deploymentName = deployment.metadata.name; // Create a LoadBalancer Service for the NGINX Deployment const service = new k8s.core.v1.Service(name, @@ -123,5 +123,5 @@ const service = new k8s.core.v1.Service(name, ); // Export the Service name and public LoadBalancer endpoint -export const serviceName = service.metadata.apply(m => m.name); +export const serviceName = service.metadata.name; export const servicePublicIP = service.status.apply(s => s.loadBalancer.ingress[0].ip) diff --git a/gcp-ts-k8s-ruby-on-rails-postgresql/infra/index.ts b/gcp-ts-k8s-ruby-on-rails-postgresql/infra/index.ts index f61bf775b..22517c34b 100644 --- a/gcp-ts-k8s-ruby-on-rails-postgresql/infra/index.ts +++ b/gcp-ts-k8s-ruby-on-rails-postgresql/infra/index.ts @@ -43,16 +43,16 @@ const appDeployment = new k8s.apps.v1.Deployment("rails-deployment", { }, }, { provider: cluster.provider }); const appService = new k8s.core.v1.Service("rails-service", { - metadata: { labels: appDeployment.metadata.apply(m => m.labels) }, + metadata: { labels: appDeployment.metadata.labels }, spec: { type: "LoadBalancer", ports: [{ port: appPort, targetPort: appPort }], - selector: appDeployment.spec.apply(spec => spec.template.metadata.labels), + selector: appDeployment.spec.template.metadata.labels, }, }, { provider: cluster.provider }); // Export the app deployment name so we can easily access it. -export let appName = appDeployment.metadata.apply(m => m.name); +export let appName = appDeployment.metadata.name; // Export the service's IP address. export let appAddress = appService.status.apply(s => `http://${s.loadBalancer.ingress[0].ip}:${appPort}`); diff --git a/kubernetes-ts-configmap-rollout/index.ts b/kubernetes-ts-configmap-rollout/index.ts index 2b1220083..e330417d0 100644 --- a/kubernetes-ts-configmap-rollout/index.ts +++ b/kubernetes-ts-configmap-rollout/index.ts @@ -42,7 +42,7 @@ const nginx = new k8s.apps.v1beta1.Deployment(appName, { // Expose proxy to the public Internet. const frontend = new k8s.core.v1.Service(appName, { - metadata: { labels: nginx.spec.apply(spec => spec.template.metadata.labels) }, + metadata: { labels: nginx.spec.template.metadata.labels }, spec: { type: isMinikube === "true" ? "ClusterIP" : "LoadBalancer", ports: [{ port: 80, targetPort: 80, protocol: "TCP" }], @@ -53,7 +53,7 @@ const frontend = new k8s.core.v1.Service(appName, { // Export the frontend IP. export let frontendIp: pulumi.Output; if (isMinikube === "true") { - frontendIp = frontend.spec.apply(spec => spec.clusterIP); + frontendIp = frontend.spec.clusterIP; } else { frontendIp = frontend.status.apply(status => status.loadBalancer.ingress[0].ip); } diff --git a/kubernetes-ts-exposed-deployment/index.ts b/kubernetes-ts-exposed-deployment/index.ts index 5e9ce1b68..8ca72839a 100644 --- a/kubernetes-ts-exposed-deployment/index.ts +++ b/kubernetes-ts-exposed-deployment/index.ts @@ -22,7 +22,7 @@ const nginx = new k8s.apps.v1beta1.Deployment(appName, { // Allocate an IP to the nginx Deployment. const frontend = new k8s.core.v1.Service(appName, { - metadata: { labels: nginx.spec.apply(spec => spec.template.metadata.labels) }, + metadata: { labels: nginx.spec.template.metadata.labels }, spec: { type: isMinikube === "true" ? "ClusterIP" : "LoadBalancer", ports: [{ port: 80, targetPort: 80, protocol: "TCP" }], @@ -33,7 +33,7 @@ const frontend = new k8s.core.v1.Service(appName, { // When "done", this will print the public IP. export let frontendIp: pulumi.Output; if (isMinikube === "true") { - frontendIp = frontend.spec.apply(spec => spec.clusterIP); + frontendIp = frontend.spec.clusterIP; } else { frontendIp = frontend.status.apply(status => status.loadBalancer.ingress[0].ip); } diff --git a/kubernetes-ts-guestbook/components/k8sjs.ts b/kubernetes-ts-guestbook/components/k8sjs.ts index f5d24cec9..fb427000f 100644 --- a/kubernetes-ts-guestbook/components/k8sjs.ts +++ b/kubernetes-ts-guestbook/components/k8sjs.ts @@ -35,11 +35,11 @@ export class ServiceDeployment extends pulumi.ComponentResource { this.service = new k8s.core.v1.Service(name, { metadata: { - labels: this.deployment.metadata.apply(meta => meta.labels), + labels: this.deployment.metadata.labels, }, spec: { ports: args.ports && args.ports.map(p => ({ port: p, targetPort: p })), - selector: this.deployment.spec.apply(spec => spec.template.metadata.labels), + selector: this.deployment.spec.template.metadata.labels, // Minikube does not implement services of type `LoadBalancer`; require the user to specify if we're // running on minikube, and if so, create only services of type ClusterIP. type: args.allocateIpAddress ? (args.isMinikube ? "ClusterIP" : "LoadBalancer") : undefined, diff --git a/kubernetes-ts-guestbook/simple/index.ts b/kubernetes-ts-guestbook/simple/index.ts index 8fa2bf20b..e4311cdbe 100644 --- a/kubernetes-ts-guestbook/simple/index.ts +++ b/kubernetes-ts-guestbook/simple/index.ts @@ -33,11 +33,11 @@ let redisMasterDeployment = new k8s.apps.v1.Deployment("redis-master", { }); let redisMasterService = new k8s.core.v1.Service("redis-master", { metadata: { - labels: redisMasterDeployment.metadata.apply(meta => meta.labels) + labels: redisMasterDeployment.metadata.labels }, spec: { ports: [{ port: 6379, targetPort: 6379 }], - selector: redisMasterDeployment.spec.apply(spec => spec.template.metadata.labels) + selector: redisMasterDeployment.spec.template.metadata.labels, } }); @@ -68,10 +68,10 @@ let redisReplicaDeployment = new k8s.apps.v1.Deployment("redis-replica", { } }); let redisReplicaService = new k8s.core.v1.Service("redis-replica", { - metadata: { labels: redisReplicaDeployment.metadata.apply(meta => meta.labels) }, + metadata: { labels: redisReplicaDeployment.metadata.labels }, spec: { ports: [{ port: 6379, targetPort: 6379 }], - selector: redisReplicaDeployment.spec.apply(spec => spec.template.metadata.labels) + selector: redisReplicaDeployment.spec.template.metadata.labels, } }); @@ -103,18 +103,18 @@ let frontendDeployment = new k8s.apps.v1.Deployment("frontend", { } }); let frontendService = new k8s.core.v1.Service("frontend", { - metadata: { labels: frontendDeployment.metadata.apply(meta => meta.labels) }, + metadata: { labels: frontendDeployment.metadata.labels }, spec: { type: isMinikube ? "ClusterIP" : "LoadBalancer", ports: [{ port: 80 }], - selector: frontendDeployment.spec.apply(spec => spec.template.metadata.labels) + selector: frontendDeployment.spec.template.metadata.labels, } }); // Export the frontend IP. export let frontendIp: pulumi.Output; if (isMinikube) { - frontendIp = frontendService.spec.apply(spec => spec.clusterIP); + frontendIp = frontendService.spec.clusterIP; } else { frontendIp = frontendService.status.apply(status => status.loadBalancer.ingress[0].ip); } diff --git a/kubernetes-ts-nginx/index.ts b/kubernetes-ts-nginx/index.ts index 2dc281d5a..7a47e3aba 100644 --- a/kubernetes-ts-nginx/index.ts +++ b/kubernetes-ts-nginx/index.ts @@ -23,4 +23,4 @@ let nginxDeployment = new k8s.apps.v1.Deployment("nginx-deployment", { }, }); -export let nginx = nginxDeployment.metadata.apply(md => md.name); +export let nginx = nginxDeployment.metadata.name; diff --git a/kubernetes-ts-s3-rollout/index.ts b/kubernetes-ts-s3-rollout/index.ts index 26c912660..5d022ed8d 100644 --- a/kubernetes-ts-s3-rollout/index.ts +++ b/kubernetes-ts-s3-rollout/index.ts @@ -44,11 +44,11 @@ const nginx = new k8s.apps.v1beta1.Deployment("nginx", { // Expose proxy to the public Internet. const frontend = new k8s.core.v1.Service("nginx", { - metadata: { labels: nginx.spec.apply(spec => spec.template.metadata.labels) }, + metadata: { labels: nginx.spec.template.metadata.labels }, spec: { type: "LoadBalancer", ports: [{ port: 80, targetPort: 80, protocol: "TCP" }], - selector: nginx.spec.apply(spec => spec.template.metadata.labels) + selector: nginx.spec.template.metadata.labels, } }); diff --git a/kubernetes-ts-s3-rollout/s3Helpers.ts b/kubernetes-ts-s3-rollout/s3Helpers.ts index 292ada176..866ed57da 100644 --- a/kubernetes-ts-s3-rollout/s3Helpers.ts +++ b/kubernetes-ts-s3-rollout/s3Helpers.ts @@ -47,7 +47,7 @@ export class FileBucket { .update(this.fileContents[fileName]) .digest("hex") .slice(0, 6); - return this.bucket.bucket.apply(bucketName => `${bucketName}-${digest}`); + return pulumi.interpolate `${this.bucket.bucket}-${digest}`; } getUrlForFile(file: string): pulumi.Output { diff --git a/kubernetes-ts-sock-shop/index.ts b/kubernetes-ts-sock-shop/index.ts index 551a0a094..4108898eb 100644 --- a/kubernetes-ts-sock-shop/index.ts +++ b/kubernetes-ts-sock-shop/index.ts @@ -22,7 +22,7 @@ const cartsDb = new k8s.apps.v1beta1.Deployment("carts-db", { labels: { name: "carts-db" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -80,7 +80,7 @@ const cartsDbService = new k8s.core.v1.Service("carts-db", { labels: { name: "carts-db" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -89,7 +89,7 @@ const cartsDbService = new k8s.core.v1.Service("carts-db", { targetPort: 27017 } ], - selector: cartsDb.spec.apply(s => s.template.metadata.labels) + selector: cartsDb.spec.template.metadata.labels } }); @@ -99,7 +99,7 @@ const carts = new k8s.apps.v1beta1.Deployment("carts", { labels: { name: "carts" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -169,7 +169,7 @@ const cartsService = new k8s.core.v1.Service("carts", { labels: { name: "carts" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -178,7 +178,7 @@ const cartsService = new k8s.core.v1.Service("carts", { targetPort: 80 } ], - selector: carts.spec.apply(s => s.template.metadata.labels) + selector: carts.spec.template.metadata.labels } }); @@ -192,7 +192,7 @@ const catalogDb = new k8s.apps.v1beta1.Deployment("catalog-db", { labels: { name: "catalogue-db" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -239,7 +239,7 @@ const catalogDbService = new k8s.core.v1.Service("catalog-db", { labels: { name: "catalogue-db" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -248,7 +248,7 @@ const catalogDbService = new k8s.core.v1.Service("catalog-db", { targetPort: 3306 } ], - selector: catalogDb.spec.apply(s => s.template.metadata.labels) + selector: catalogDb.spec.template.metadata.labels } }); @@ -258,7 +258,7 @@ const catalog = new k8s.apps.v1beta1.Deployment("catalog", { labels: { name: "catalogue" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -303,7 +303,7 @@ const catalogService = new k8s.core.v1.Service("catalog", { labels: { name: "catalogue" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -312,7 +312,7 @@ const catalogService = new k8s.core.v1.Service("catalog", { targetPort: 80 } ], - selector: catalog.spec.apply(s => s.template.metadata.labels) + selector: catalog.spec.template.metadata.labels } }); @@ -323,7 +323,7 @@ const catalogService = new k8s.core.v1.Service("catalog", { const frontend = new k8s.apps.v1beta1.Deployment("front-end", { metadata: { name: "front-end", - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -373,7 +373,7 @@ const frontendService = new k8s.core.v1.Service("front-end", { labels: { name: "front-end" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { type: "NodePort", @@ -384,7 +384,7 @@ const frontendService = new k8s.core.v1.Service("front-end", { nodePort: 30001 } ], - selector: frontend.spec.apply(s => s.template.metadata.labels) + selector: frontend.spec.template.metadata.labels } }); @@ -398,7 +398,7 @@ const ordersDb = new k8s.apps.v1beta1.Deployment("orders-db", { labels: { name: "orders-db" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -456,7 +456,7 @@ const ordersDbService = new k8s.core.v1.Service("orders-db", { labels: { name: "orders-db" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -465,7 +465,7 @@ const ordersDbService = new k8s.core.v1.Service("orders-db", { targetPort: 27017 } ], - selector: ordersDb.spec.apply(s => s.template.metadata.labels) + selector: ordersDb.spec.template.metadata.labels } }); @@ -475,7 +475,7 @@ const orders = new k8s.apps.v1beta1.Deployment("orders", { labels: { name: "orders" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -545,7 +545,7 @@ const ordersService = new k8s.core.v1.Service("orders", { labels: { name: "orders" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -554,7 +554,7 @@ const ordersService = new k8s.core.v1.Service("orders", { targetPort: 80 } ], - selector: orders.spec.apply(s => s.template.metadata.labels) + selector: orders.spec.template.metadata.labels } }); @@ -568,7 +568,7 @@ const payment = new k8s.apps.v1beta1.Deployment("payment", { labels: { name: "payment" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -613,7 +613,7 @@ const paymentService = new k8s.core.v1.Service("payment", { labels: { name: "payment" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -622,7 +622,7 @@ const paymentService = new k8s.core.v1.Service("payment", { targetPort: 80 } ], - selector: payment.spec.apply(s => s.template.metadata.labels) + selector: payment.spec.template.metadata.labels } }); @@ -636,7 +636,7 @@ const queueMaster = new k8s.apps.v1beta1.Deployment("queue-master", { labels: { name: "queue-master" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -675,7 +675,7 @@ const queueMasterService = new k8s.core.v1.Service("queue-master", { annotations: { "prometheus.io/path": "/prometheus" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -684,7 +684,7 @@ const queueMasterService = new k8s.core.v1.Service("queue-master", { targetPort: 80 } ], - selector: queueMaster.spec.apply(s => s.template.metadata.labels) + selector: queueMaster.spec.template.metadata.labels } }); @@ -694,7 +694,7 @@ const rabbitmq = new k8s.apps.v1beta1.Deployment("rabbitmq", { labels: { name: "rabbitmq" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -737,7 +737,7 @@ const rabbitmqService = new k8s.core.v1.Service("rabbitmq", { labels: { name: "rabbitmq" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -746,7 +746,7 @@ const rabbitmqService = new k8s.core.v1.Service("rabbitmq", { targetPort: 5672 } ], - selector: rabbitmq.spec.apply(s => s.template.metadata.labels) + selector: rabbitmq.spec.template.metadata.labels } }); @@ -760,7 +760,7 @@ const shipping = new k8s.apps.v1beta1.Deployment("shipping", { labels: { name: "shipping" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -830,7 +830,7 @@ const shippingService = new k8s.core.v1.Service("shipping", { labels: { name: "shipping" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -839,7 +839,7 @@ const shippingService = new k8s.core.v1.Service("shipping", { targetPort: 80 } ], - selector: shipping.spec.apply(s => s.template.metadata.labels) + selector: shipping.spec.template.metadata.labels } }); @@ -853,7 +853,7 @@ const userDb = new k8s.apps.v1beta1.Deployment("user-db", { labels: { name: "user-db" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -911,7 +911,7 @@ const userDbService = new k8s.core.v1.Service("user-db", { labels: { name: "user-db" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -920,7 +920,7 @@ const userDbService = new k8s.core.v1.Service("user-db", { targetPort: 27017 } ], - selector: userDb.spec.apply(s => s.template.metadata.labels) + selector: userDb.spec.template.metadata.labels } }); @@ -930,7 +930,7 @@ const user = new k8s.apps.v1beta1.Deployment("user", { labels: { name: "user" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { replicas: 1, @@ -981,7 +981,7 @@ const userService = new k8s.core.v1.Service("user", { labels: { name: "user" }, - namespace: sockShopNs.metadata.apply(m => m.name) + namespace: sockShopNs.metadata.name }, spec: { ports: [ @@ -990,6 +990,6 @@ const userService = new k8s.core.v1.Service("user", { targetPort: 80 } ], - selector: user.spec.apply(s => s.template.metadata.labels) + selector: user.spec.template.metadata.labels } }); diff --git a/kubernetes-ts-staged-rollout-with-prometheus/index.ts b/kubernetes-ts-staged-rollout-with-prometheus/index.ts index 0717cd326..42b706f01 100644 --- a/kubernetes-ts-staged-rollout-with-prometheus/index.ts +++ b/kubernetes-ts-staged-rollout-with-prometheus/index.ts @@ -65,6 +65,4 @@ const staging = new k8s.apps.v1beta1.Deployment("staging-example-app", { spec: { replicas: 1, template: instrumentedPod } }); -export const p90ResponseTime = staging.metadata.apply( - meta => meta.annotations["example.com/p90ResponseTime"] -); +export const p90ResponseTime = staging.metadata.annotations["example.com/p90ResponseTime"]; diff --git a/twilio-ts-component/twilio.ts b/twilio-ts-component/twilio.ts index 5449884a4..3202c28f2 100644 --- a/twilio-ts-component/twilio.ts +++ b/twilio-ts-component/twilio.ts @@ -13,7 +13,7 @@ export class IncomingPhoneNumber extends pulumi.ComponentResource { constructor(name: string, args: IncomingPhoneNumberArgs, opts? : pulumi.ResourceOptions) { super("twilio:rest:IncomingPhoneNumber", name, {}, opts); - + const apiArgs : APIArgs = { routes: [{ path: "/sms", @@ -37,7 +37,7 @@ export class IncomingPhoneNumber extends pulumi.ComponentResource { const payload: SmsPayload = { MessageSid: params.MessageSid, AcountSid: params.AccountSid, - MessagingServiceSid: params.MessagingServiceSid, + MessagingServiceSid: params.MessagingServiceSid, From: params.From, To: params.To, Body: params.Body, @@ -46,13 +46,13 @@ export class IncomingPhoneNumber extends pulumi.ComponentResource { City: params.FromCity, State: params.FromState, Zip: params.FromZip, - Country: params.FromCountry, + Country: params.FromCountry, }, ToLocation: { City: params.ToCity, State: params.ToState, Zip: params.ToZip, - Country: params.ToCountry, + Country: params.ToCountry, } } @@ -63,12 +63,12 @@ export class IncomingPhoneNumber extends pulumi.ComponentResource { }; const api = new serverless.apigateway.API(`${name}-api`, apiArgs, { parent: this }); - this.smsUrl = api.url.apply(url => `${url}sms`); + this.smsUrl = pulumi.interpolate `${api.url}sms`; // Use the twilio SDK to update the handler for the SMS webhook to what we just created. const twilio = require("twilio") const client = new twilio(accountSid, authToken); - + this.smsUrl.apply(url =>{ client.incomingPhoneNumbers(args.phoneNumberSid).update({ smsMethod: "POST", @@ -79,7 +79,7 @@ export class IncomingPhoneNumber extends pulumi.ComponentResource { // Register the smsUrl as an output of the component itself. super.registerOutputs({ smsUrl: this.smsUrl - }); + }); } } @@ -93,7 +93,7 @@ export interface IncomingPhoneNumberArgs { export interface SmsPayload { MessageSid: string, AcountSid: string, - MessagingServiceSid: string, + MessagingServiceSid: string, From: string, To: string, Body: string,