From 7481294a8c68489dc4d034e071661e2e67397e61 Mon Sep 17 00:00:00 2001 From: Sujay Pillai Date: Tue, 17 Aug 2021 17:23:01 +0800 Subject: [PATCH] Adding support for azure storage Signed-off-by: Sujay Pillai --- docs/reference/universe/README.md | 1 + docs/reference/universe/azure/storage.md | 43 ++++++++++++++++++++ stdlib/azure/storage/st.cue | 52 ++++++++++++++++++++++++ stdlib/azure/storage/tests/st.cue | 28 +++++++++++++ stdlib/universe.bats | 5 +++ 5 files changed, 129 insertions(+) create mode 100644 docs/reference/universe/azure/storage.md create mode 100644 stdlib/azure/storage/st.cue create mode 100644 stdlib/azure/storage/tests/st.cue diff --git a/docs/reference/universe/README.md b/docs/reference/universe/README.md index f6657b91..7d3223a2 100644 --- a/docs/reference/universe/README.md +++ b/docs/reference/universe/README.md @@ -11,6 +11,7 @@ - [aws/s3](./aws/s3.md) - AWS Simple Storage Service - [azure](./azure/README.md) - Azure base package - [azure/resourcegroup](./azure/resourcegroup.md) - - +- [azure/storage](./azure/storage.md) - - - [dagger](./dagger/README.md) - Dagger core types - [dagger/op](./dagger/op.md) - op: low-level operations for Dagger processing pipelines - [docker](./docker/README.md) - Docker container operations diff --git a/docs/reference/universe/azure/storage.md b/docs/reference/universe/azure/storage.md new file mode 100644 index 00000000..2dde70c0 --- /dev/null +++ b/docs/reference/universe/azure/storage.md @@ -0,0 +1,43 @@ +--- +sidebar_label: storage +--- + +# alpha.dagger.io/azure/storage + +```cue +import "alpha.dagger.io/azure/storage" +``` + +## storage.#StorageAccount + +Create a storage account + +### storage.#StorageAccount Inputs + +| Name | Type | Description | +| ------------- |:-------------: |:-------------: | +|*config.tenantId* | `dagger.#Secret` |AZURE tenant id | +|*config.subscriptionId* | `dagger.#Secret` |AZURE subscription id | +|*config.appId* | `dagger.#Secret` |AZURE app id for the service principal used | +|*config.password* | `dagger.#Secret` |AZURE password for the service principal used | +|*rgName* | `string` |ResourceGroup name | +|*stLocation* | `string` |StorageAccount location | +|*stName* | `string` |StorageAccount name | +|*ctr.image.config.tenantId* | `dagger.#Secret` |AZURE tenant id | +|*ctr.image.config.subscriptionId* | `dagger.#Secret` |AZURE subscription id | +|*ctr.image.config.appId* | `dagger.#Secret` |AZURE app id for the service principal used | +|*ctr.image.config.password* | `dagger.#Secret` |AZURE password for the service principal used | +|*ctr.image.image.from* | `"mcr.microsoft.com/azure-cli:2.27.1@sha256:1e117183100c9fce099ebdc189d73e506e7b02d2b73d767d3fc07caee72f9fb1"` |Remote ref (example: "index.docker.io/alpine:latest") | +|*ctr.image.secret."/run/secrets/appId"* | `dagger.#Secret` |- | +|*ctr.image.secret."/run/secrets/password"* | `dagger.#Secret` |- | +|*ctr.image.secret."/run/secrets/tenantId"* | `dagger.#Secret` |- | +|*ctr.image.secret."/run/secrets/subscriptionId"* | `dagger.#Secret` |- | +|*ctr.env.AZURE_DEFAULTS_GROUP* | `string` |- | +|*ctr.env.AZURE_DEFAULTS_LOCATION* | `string` |- | +|*ctr.env.AZURE_STORAGE_ACCOUNT* | `string` |- | + +### storage.#StorageAccount Outputs + +| Name | Type | Description | +| ------------- |:-------------: |:-------------: | +|*id* | `string` |StorageAccount Id | diff --git a/stdlib/azure/storage/st.cue b/stdlib/azure/storage/st.cue new file mode 100644 index 00000000..40e3ee2e --- /dev/null +++ b/stdlib/azure/storage/st.cue @@ -0,0 +1,52 @@ +package storage + +import ( + "alpha.dagger.io/azure" + "alpha.dagger.io/os" + "alpha.dagger.io/dagger" +) + +// Create a storage account +#StorageAccount: { + // Azure Config + config: azure.#Config + + // ResourceGroup name + rgName: string & dagger.#Input + + // StorageAccount location + stLocation: string & dagger.#Input + + // StorageAccount name + stName: string & dagger.#Input + + // StorageAccount Id + id: string & dagger.#Output + + // Container image + ctr: os.#Container & { + image: azure.#CLI & { + "config": config + } + always: true + + command: """ + az storage account create -n "$AZURE_STORAGE_ACCOUNT" -g "$AZURE_DEFAULTS_GROUP" -l "$AZURE_DEFAULTS_LOCATION" + az storage account show -n "$AZURE_STORAGE_ACCOUNT" -g "$AZURE_DEFAULTS_GROUP" --query "id" -o json | jq -r . | tr -d "\n" > /storageAccountId + """ + + env: { + AZURE_DEFAULTS_GROUP: rgName + AZURE_DEFAULTS_LOCATION: stLocation + AZURE_STORAGE_ACCOUNT: stName + } + } + + // StorageAccount Id + id: ({ + os.#File & { + from: ctr + path: "/storageAccountId" + } + }).contents +} diff --git a/stdlib/azure/storage/tests/st.cue b/stdlib/azure/storage/tests/st.cue new file mode 100644 index 00000000..4c1b2480 --- /dev/null +++ b/stdlib/azure/storage/tests/st.cue @@ -0,0 +1,28 @@ +package storage + +import ( + "alpha.dagger.io/azure" + "alpha.dagger.io/azure/resourcegroup" + "alpha.dagger.io/azure/storage" + "alpha.dagger.io/random" +) + +TestConfig: azureConfig: azure.#Config & { +} + +TestSuffix: random.#String & { + seed: "azst" +} + +TestRG: resourcegroup.#ResourceGroup & { + config: TestConfig.azureConfig + rgName: "rg-test-\(TestSuffix.out)" + rgLocation: "eastus2" +} + +TestStorage: storage.#StorageAccount & { + config: TestConfig.azureConfig + rgName: "rg-test-ahkkzwyoaucw" + stLocation: "eastus2" + stName: "st\(TestSuffix.out)001" +} diff --git a/stdlib/universe.bats b/stdlib/universe.bats index 02760c06..c43df8cb 100644 --- a/stdlib/universe.bats +++ b/stdlib/universe.bats @@ -188,4 +188,9 @@ setup() { @test "azure-resourcegroup" { skip "Azure CI infra not implemented yet - manually tested and working" #dagger -e azure-resourcegroup up +} + +@test "azure-storage" { + skip "Azure CI infra not implemented yet - manually tested and working" + #dagger -e azure-storage up } \ No newline at end of file