Skip to content
Open
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
115 changes: 115 additions & 0 deletions examples/Qumulo.Storage_fileSystems@2024-06-19/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
terraform {
required_providers {
azapi = {
source = "Azure/azapi"
}
}
}

provider "azapi" {
skip_provider_registration = false
}

variable "resource_name" {
type = string
default = "acctest0001"
}

variable "location" {
type = string
default = "westeurope"
}

variable "qumulo_password" {
type = string
default = ")^X#ZX#JRyIY}t9"
sensitive = true
}

resource "azapi_resource" "resourceGroup" {
type = "Microsoft.Resources/resourceGroups@2020-06-01"
name = var.resource_name
location = var.location
}

resource "azapi_resource" "vnet" {
type = "Microsoft.Network/virtualNetworks@2024-05-01"
name = var.resource_name
location = var.location
parent_id = azapi_resource.resourceGroup.id

body = {
properties = {
addressSpace = {
addressPrefixes = ["10.0.0.0/16"]
}
privateEndpointVNetPolicies = "Disabled"
subnets = []
}
}

schema_validation_enabled = false
response_export_values = ["*"]
lifecycle {
# This is to avoid vnet change to overwrite the subnets
ignore_changes = [body.properties.subnets]
}
}

resource "azapi_resource" "subnet" {
type = "Microsoft.Network/virtualNetworks/subnets@2024-05-01"
name = var.resource_name
location = var.location
parent_id = azapi_resource.vnet.id

body = {
properties = {
addressPrefix = "10.0.1.0/24"
defaultOutboundAccess = true
delegations = [{
name = "delegation"
properties = {
actions = ["Microsoft.Network/virtualNetworks/subnets/join/action"]
serviceName = "Qumulo.Storage/fileSystems"
}
}]
privateEndpointNetworkPolicies = "Disabled"
privateLinkServiceNetworkPolicies = "Enabled"
}
}

schema_validation_enabled = false
response_export_values = ["*"]
}

resource "azapi_resource" "qumuloFileSystem" {
type = "Qumulo.Storage/fileSystems@2024-06-19"
name = var.resource_name
location = var.location
parent_id = azapi_resource.resourceGroup.id

body = {
properties = {
adminPassword = var.qumulo_password
availabilityZone = "1"
delegatedSubnetId = azapi_resource.subnet.id
marketplaceDetails = {
offerId = "qumulo-saas-mpp"
planId = "azure-native-qumulo-v3"
publisherId = "qumulo1584033880660"
}
storageSku = "Cold_LRS"
userDetails = {
email = "test@test.com"
}
}
}

tags = {
environment = "terraform-acctests"
some_key = "some-value"
}

schema_validation_enabled = false
response_export_values = ["*"]
}
26 changes: 26 additions & 0 deletions examples/Qumulo.Storage_fileSystems@2024-06-19/readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Qumulo.Storage/fileSystems@2024-06-19 — Armstrong test artifacts

This directory contains the Terraform configuration and Armstrong reports produced
while testing the `Qumulo.Storage/fileSystems@2024-06-19` ARM API with
[Armstrong](https://github.com/Azure/armstrong).

## Contents

| File | Description |
|------|-------------|
| `main.tf` | azapi Terraform configuration: resource group, virtual network, delegated subnet, and the `Qumulo.Storage/fileSystems@2024-06-19` testing resource. |
| `reports/validate_plan.txt` | Output of `armstrong validate` (`terraform init` + `plan`). |
| `reports/cleanup_report.txt` | Output of `armstrong cleanup` (`terraform destroy`). |

## Steps performed

1. **Install Armstrong** — built from source (`go build -o armstrong.exe .`), version `0.16.1`.
2. **Generate / prepare** the Terraform file for the resource under test (`main.tf`).
3. **Validate** — `armstrong validate -working-dir .`
Result: `Plan: 4 to add, 0 to change, 0 to destroy` (resource group, vnet, subnet, Qumulo file system).
4. **Cleanup** — `armstrong cleanup -working-dir .` (produces the cleanup report).

> Note: `armstrong test` (which provisions live Azure resources) was not run here; the
> paid Qumulo marketplace offer is not purchasable on the internal test subscription.
> Re-run `armstrong test` on a purchase-enabled subscription to generate the
> `all_passed`/`partial_passed` test reports.
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
time="2026-07-15T21:33:09+05:30" level=info msg="cleaning up resources..."
time="2026-07-15T21:33:11+05:30" level=warning msg="new pass report from state: state is nil"
time="2026-07-15T21:33:11+05:30" level=warning msg="new id address mapping from state: state is nil"
time="2026-07-15T21:33:11+05:30" level=info msg="running terraform init..."
time="2026-07-15T21:33:13+05:30" level=info msg="running terraform destroy..."
time="2026-07-15T21:33:14+05:30" level=info msg="all resources are cleaned up"
time="2026-07-15T21:33:14+05:30" level=info msg="---------------- Summary ----------------"
time="2026-07-15T21:33:14+05:30" level=info msg="0 resources passed the cleanup tests."
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
time="2026-07-15T21:32:06+05:30" level=info msg="running terraform init..."
time="2026-07-15T21:32:06+05:30" level=info msg="[INFO] running Terraform command: C:\\Users\\kaurnavjot\\AppData\\Local\\Microsoft\\WinGet\\Packages\\Hashicorp.Terraform_Microsoft.Winget.Source_8wekyb3d8bbwe\\terraform.exe version -json"
{
"terraform_version": "1.15.8",
"platform": "windows_amd64",
"provider_selections": {
"registry.terraform.io/azure/azapi": "2.10.0"
},
"terraform_outdated": false
}
time="2026-07-15T21:32:06+05:30" level=info msg="[INFO] running Terraform command: C:\\Users\\kaurnavjot\\AppData\\Local\\Microsoft\\WinGet\\Packages\\Hashicorp.Terraform_Microsoft.Winget.Source_8wekyb3d8bbwe\\terraform.exe init -no-color -force-copy -input=false -backend=true -get=true -upgrade=false"
Initializing the backend...

Initializing provider plugins...
- Reusing previous version of azure/azapi from the dependency lock file
- Using previously-installed azure/azapi v2.10.0


Terraform has been successfully initialized!
time="2026-07-15T21:32:08+05:30" level=info msg="running terraform plan to check the changes..."
time="2026-07-15T21:32:08+05:30" level=info msg="[INFO] running Terraform command: C:\\Users\\kaurnavjot\\AppData\\Local\\Microsoft\\WinGet\\Packages\\Hashicorp.Terraform_Microsoft.Winget.Source_8wekyb3d8bbwe\\terraform.exe plan -no-color -input=false -detailed-exitcode -lock-timeout=0s -out=tfplan -lock=true -parallelism=10 -refresh=true"

Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

# azapi_resource.qumuloFileSystem will be created
+ resource "azapi_resource" "qumuloFileSystem" {
+ body = {
+ properties = {
+ adminPassword = (sensitive value)
+ availabilityZone = "1"
+ delegatedSubnetId = (known after apply)
+ marketplaceDetails = {
+ offerId = "qumulo-saas-mpp"
+ planId = "azure-native-qumulo-v3"
+ publisherId = "qumulo1584033880660"
}
+ storageSku = "Cold_LRS"
+ userDetails = {
+ email = "test@test.com"
}
}
}
+ id = (known after apply)
+ ignore_casing = false
+ ignore_missing_property = true
+ ignore_null_property = false
+ location = "westeurope"
+ name = "acctest0001"
+ output = (known after apply)
+ parent_id = (known after apply)
+ response_export_values = [
+ "*",
]
+ schema_validation_enabled = false
+ sensitive_body = (write-only attribute)
+ tags = {
+ "environment" = "terraform-acctests"
+ "some_key" = "some-value"
}
+ type = "Qumulo.Storage/fileSystems@2024-06-19"
}

# azapi_resource.resourceGroup will be created
+ resource "azapi_resource" "resourceGroup" {
+ id = (known after apply)
+ ignore_casing = false
+ ignore_missing_property = true
+ ignore_null_property = false
+ location = "westeurope"
+ name = "acctest0001"
+ output = (known after apply)
+ parent_id = "/subscriptions/a8b81ef0-9c6a-4ff2-b675-081212bab47b"
+ schema_validation_enabled = true
+ sensitive_body = (write-only attribute)
+ type = "Microsoft.Resources/resourceGroups@2020-06-01"
}

# azapi_resource.subnet will be created
+ resource "azapi_resource" "subnet" {
+ body = {
+ properties = {
+ addressPrefix = "10.0.1.0/24"
+ defaultOutboundAccess = true
+ delegations = [
+ {
+ name = "delegation"
+ properties = {
+ actions = [
+ "Microsoft.Network/virtualNetworks/subnets/join/action",
]
+ serviceName = "Qumulo.Storage/fileSystems"
}
},
]
+ privateEndpointNetworkPolicies = "Disabled"
+ privateLinkServiceNetworkPolicies = "Enabled"
}
}
+ id = (known after apply)
+ ignore_casing = false
+ ignore_missing_property = true
+ ignore_null_property = false
+ location = "westeurope"
+ name = "acctest0001"
+ output = (known after apply)
+ parent_id = (known after apply)
+ response_export_values = [
+ "*",
]
+ schema_validation_enabled = false
+ sensitive_body = (write-only attribute)
+ type = "Microsoft.Network/virtualNetworks/subnets@2024-05-01"
}

# azapi_resource.vnet will be created
+ resource "azapi_resource" "vnet" {
+ body = {
+ properties = {
+ addressSpace = {
+ addressPrefixes = [
+ "10.0.0.0/16",
]
}
+ privateEndpointVNetPolicies = "Disabled"
+ subnets = []
}
}
+ id = (known after apply)
+ ignore_casing = false
+ ignore_missing_property = true
+ ignore_null_property = false
+ location = "westeurope"
+ name = "acctest0001"
+ output = (known after apply)
+ parent_id = (known after apply)
+ response_export_values = [
+ "*",
]
+ schema_validation_enabled = false
+ sensitive_body = (write-only attribute)
+ type = "Microsoft.Network/virtualNetworks@2024-05-01"
}

Plan: 4 to add, 0 to change, 0 to destroy.
Loading