Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clean up Node.js examples #155

Merged
merged 3 commits into from
Sep 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,6 @@ Navigate to one of the `examples` and run Pulumi:

```
$ cd ./exampes/simple
$ yarn link @pulumi/azurerm
$ pulumi up
```
46 changes: 27 additions & 19 deletions examples/appservice/index.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
import * as pulumi from "@pulumi/pulumi";
import * as azurerm from "../../sdk/nodejs";
import * as random from "@pulumi/random";

const resourceGroup = new azurerm.resources.latest.ResourceGroup("rg", {
resourceGroupName: "azurerm-appservice",
import * as insights from "@pulumi/azurerm/insights/latest";
import * as resources from "@pulumi/azurerm/resources/latest";
import * as sql from "@pulumi/azurerm/sql/latest";
import * as storage from "@pulumi/azurerm/storage/latest";
import * as web from "@pulumi/azurerm/web/latest";

const randomString = new random.RandomString("random", {
length: 12,
special: false,
upper: false,
});

const resourceGroup = new resources.ResourceGroup("rg", {
resourceGroupName: randomString.result,
location: "westus2",
tags: {
Owner: "mikhailshilkov",
Env: "prod2",
},
});

const storageAccount = new azurerm.storage.latest.StorageAccount("sa", {
const storageAccount = new storage.StorageAccount("sa", {
resourceGroupName: resourceGroup.name,
accountName: "pulumiassa",
accountName: randomString.result,
location: "westus2",
sku: {
name: "Standard_LRS",
Expand All @@ -21,9 +29,9 @@ const storageAccount = new azurerm.storage.latest.StorageAccount("sa", {
kind: "StorageV2",
});

const appServicePlan = new azurerm.web.latest.AppServicePlan("asp", {
const appServicePlan = new web.AppServicePlan("asp", {
resourceGroupName: resourceGroup.name,
name: "appservice-plan",
name: randomString.result,
location: "westus2",
kind: "App",
sku: {
Expand All @@ -32,7 +40,7 @@ const appServicePlan = new azurerm.web.latest.AppServicePlan("asp", {
},
});

const storageContainer = new azurerm.storage.latest.BlobContainer("c", {
const storageContainer = new storage.BlobContainer("c", {
resourceGroupName: resourceGroup.name,
accountName: storageAccount.name,
containerName: "files",
Expand All @@ -51,38 +59,38 @@ const storageContainer = new azurerm.storage.latest.BlobContainer("c", {
// TODO: invokes are not supported yet
// const codeBlobUrl = azure.storage.signedBlobReadUrl(blob, storageAccount);

const appInsights = new azurerm.insights.latest.Component("ai", {
const appInsights = new insights.Component("ai", {
resourceGroupName: resourceGroup.name,
location: "westus2",
resourceName: "pulumi-as-ai",
resourceName: randomString.result,
kind: "web",
applicationType: "web",
});

const username = "pulumi";
const pwd = "Not2S3cure!?";

const sqlServer = new azurerm.sql.latest.Server("sql", {
const sqlServer = new sql.Server("sql", {
resourceGroupName: resourceGroup.name,
location: "westus2",
serverName: "pulumi-as-sql",
serverName: randomString.result,
administratorLogin: username,
administratorLoginPassword: pwd,
version: "12.0",
});

const database = new azurerm.sql.latest.Database("db", {
const database = new sql.Database("db", {
resourceGroupName: resourceGroup.name,
location: "westus2",
serverName: sqlServer.name,
databaseName: "db",
requestedServiceObjectiveName: "S0",
});

const app = new azurerm.web.latest.WebApp("as", {
const app = new web.WebApp("as", {
resourceGroupName: resourceGroup.name,
location: "westus2",
name: "pulumi-rm-as",
name: randomString.result,

serverFarmId: appServicePlan.id,
siteConfig: {
Expand Down
6 changes: 2 additions & 4 deletions examples/appservice/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@
"@types/node": "latest"
},
"dependencies": {
"@pulumi/pulumi": "latest"
},
"peerDependencies": {
"@pulumi/azurerm": "latest"
"@pulumi/pulumi": "^2.0.0",
"@pulumi/random": "^2.0.0"
}
}
13 changes: 8 additions & 5 deletions examples/cosmosdb/component.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import * as azurerm from "../../sdk/nodejs";
import * as pulumi from "@pulumi/pulumi";

import * as documentdb from "@pulumi/azurerm/documentdb/latest";
import * as resources from "@pulumi/azurerm/resources/latest";
import { documentdb as documentdbInputs } from "@pulumi/azurerm/types/input";

export type Location =
"eastasia" |
"southeastasia" |
Expand Down Expand Up @@ -66,7 +69,7 @@ type MultipleLocations = {
type Locationable = SingleLocation | MultipleLocations;

interface MyDatabaseAccountArgs {
resourceGroup: azurerm.resources.latest.ResourceGroup;
resourceGroup: resources.ResourceGroup;
api: Api;
consisencyPolicy: ConsistencyPolicy;
location: Locationable;
Expand All @@ -75,10 +78,10 @@ interface MyDatabaseAccountArgs {
export class DatabaseAccount {
public id: pulumi.Output<string>;

constructor(name: string, args: MyDatabaseAccountArgs) {
constructor(name: pulumi.Output<string>, args: MyDatabaseAccountArgs) {

let kind = "GlobalDocumentDB";
let capabilities: azurerm.types.input.documentdb.latest.Capability[] = [];
let capabilities: documentdbInputs.latest.Capability[] | undefined = undefined;
if (args.api === "MongoDB") {
kind = "MongoDB";
} else if (args.api === "Cassandra") {
Expand All @@ -93,7 +96,7 @@ export class DatabaseAccount {
const enableMultipleWriteLocations = args.location.type === "single" ? false : args.location.enableMultipleWriteLocations;
const enableAutomaticFailover = args.location.type === "single" ? false : args.location.enableAutomaticFailover;

const cosmosdbAccount = new azurerm.documentdb.latest.DatabaseAccount(name, {
const cosmosdbAccount = new documentdb.DatabaseAccount("dbaccount", {
resourceGroupName: args.resourceGroup.name,
accountName: name,
location: locations[0],
Expand Down
48 changes: 13 additions & 35 deletions examples/cosmosdb/index.ts
Original file line number Diff line number Diff line change
@@ -1,46 +1,24 @@
import * as pulumi from "@pulumi/pulumi";
import * as azurerm from "../../sdk/nodejs";
import * as random from "@pulumi/random";
import * as resources from "@pulumi/azurerm/resources/latest";
import * as cosmosdb from "./component";

const resourceGroup = new azurerm.resources.latest.ResourceGroup("rg", {
resourceGroupName: "azurerm-cosmos",
const randomString = new random.RandomString("random", {
length: 12,
special: false,
upper: false,
});

const resourceGroup = new resources.ResourceGroup("rg", {
resourceGroupName: randomString.result,
location: "westeurope",
tags: {
Owner: "mikhailshilkov",
},
});

export const cosmosdbAccount = new cosmosdb.DatabaseAccount("pulumicosmosdb", {
export const cosmosdbAccount = new cosmosdb.DatabaseAccount(randomString.result, {
resourceGroup,
api: "Sql",
consisencyPolicy: { defaultConsistencyLevel: "Session" },
location: {
type: "multiple",
regions: ["westeurope", "northeurope"],
enableMultipleWriteLocations: true,
enableAutomaticFailover: true,
type: "single",
region: "westeurope",
},
});

// const cosmosdbAccount2 = new azurerm.documentdb.latest.DatabaseAccount("pulumicosmosdb", {
// resourceGroupName: resourceGroup.name,
// accountName: "pulumicosmosdb",
// location: resourceGroup.location,
// kind: "GlobalDocumentDB",
// consistencyPolicy: {
// defaultConsistencyLevel: "Session",
// },
// locations: [{
// locationName: "westeurope",
// failoverPriority: 0,
// isZoneRedundant: false
// }, {
// locationName: "northeurope",
// failoverPriority: 1,
// isZoneRedundant: false
// }],
// databaseAccountOfferType: "Standard",
// enableAutomaticFailover: true,
// capabilities: [],
// enableMultipleWriteLocations: true,
// });
6 changes: 2 additions & 4 deletions examples/cosmosdb/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,11 @@
"@types/node": "latest"
},
"dependencies": {
"@pulumi/pulumi": "latest",
"@pulumi/pulumi": "^2.0.0",
"@pulumi/random": "^2.0.0",
"@types/node": "^10.3.3",
"@types/mocha": "^5.2.7",
"mocha": "^7.0.0",
"ts-node": "^8.6.2"
},
"peerDependencies": {
"@pulumi/azurerm": "latest"
}
}
3 changes: 1 addition & 2 deletions examples/cosmosdb/unittests.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
// Copyright 2016-2020, Pulumi Corporation. All rights reserved.

import * as azurerm from "../../sdk/nodejs";
import * as pulumi from "../../sdk/nodejs/node_modules/@pulumi/pulumi";
import * as pulumi from "@pulumi/pulumi";
import "mocha";
import { distanceBetweenRegions } from "./distance";

Expand Down
18 changes: 18 additions & 0 deletions examples/examples_nodejs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,24 @@ import (
"github.com/pulumi/pulumi/pkg/v2/testing/integration"
)

func TestAccAppServiceTs(t *testing.T) {
test := getJSBaseOptions(t).
With(integration.ProgramTestOptions{
Dir: filepath.Join(getCwd(t), "appservice"),
})

integration.ProgramTest(t, &test)
}

func TestAccCosmosDBTs(t *testing.T) {
test := getJSBaseOptions(t).
With(integration.ProgramTestOptions{
Dir: filepath.Join(getCwd(t), "cosmosdb"),
})

integration.ProgramTest(t, &test)
}

func TestAccSimpleTs(t *testing.T) {
test := getJSBaseOptions(t).
With(integration.ProgramTestOptions{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,49 +1,56 @@
// Copyright 2020, Pulumi Corporation. All rights reserved.

import * as azurerm from "@pulumi/azurerm";
import * as pulumi from "@pulumi/pulumi";
import * as random from "@pulumi/random";

import * as hdinsight from "@pulumi/azurerm/hdinsight/v20180601preview";
import * as resources from "@pulumi/azurerm/resources/latest";
import * as storage from "@pulumi/azurerm/storage/latest";

const config = new pulumi.Config();
const location = config.require("location");
const username = config.require("username");
const password = config.require("password");

const randomString = new random.RandomString("random", {
length: 12,
special: false,
upper: false,
});

// Create an Azure Resource Group
const resourceGroup = new azurerm.resources.latest.ResourceGroup("spark-rg", {
resourceGroupName: "azurerm",
const resourceGroup = new resources.ResourceGroup("spark-rg", {
resourceGroupName: randomString.result,
location: location,
tags: {
Owner: "azurerm-test",
},
});

// Create a storage account and a container for Spark
const storageAccount = new azurerm.storage.latest.StorageAccount("sparksa", {
const storageAccount = new storage.StorageAccount("sparksa", {
resourceGroupName: resourceGroup.name,
sku: {
name: "Standard_LRS",
tier: "Standard",
},
accountName: "sparksa12345",
accountName: randomString.result,
location: location,
kind: "StorageV2",
});

const storageContainer = new azurerm.storage.latest.BlobContainer("spark", {
containerName: "spark-sc12345",
const storageContainer = new storage.BlobContainer("spark", {
containerName: randomString.result,
accountName: storageAccount.name,
resourceGroupName: resourceGroup.name,
});

const storageAccountKeys = pulumi.all([resourceGroup.name, storageAccount.name, storageAccount.id]).apply(
([resourceGroupName, accountName]) =>
azurerm.storage.latest.listStorageAccountKeys({ resourceGroupName, accountName }));
storage.listStorageAccountKeys({ resourceGroupName, accountName }));

const primaryStorageKey = storageAccountKeys.keys[0].value;

// Create a Spark cluster in HDInsight
const sparkCluster = new azurerm.hdinsight.preview.Cluster("myspark", {
clusterName: "spark-cluster12345",
const sparkCluster = new hdinsight.Cluster("myspark", {
clusterName: randomString.result,
resourceGroupName: resourceGroup.name,
location: location,
properties: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "azure-ts-hdinsight-spark",
"name": "arm-hdinsight-spark",
"version": "0.1.0",
"devDependencies": {
"@types/node": "latest"
Expand All @@ -8,4 +8,4 @@
"@pulumi/pulumi": "^2.0.0",
"@pulumi/random": "^2.0.0"
}
}
}
Loading