From 1bd99dc777d1598084aa1e97818ba1ada9241e9f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 10 Aug 2026 17:04:03 +0000 Subject: [PATCH 1/5] Initial plan From ad9a50a225ad953e9a8e8d6a73684ba960064045 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 10 Aug 2026 17:15:15 +0000 Subject: [PATCH 2/5] Add placement top-level fallback property for Az resources Co-authored-by: anthony-c-martin <38542602+anthony-c-martin@users.noreply.github.com> --- .../Scenarios/TopLevelResourcePropertiesTests.cs | 2 ++ .../Providers/Az/AzResourceTypeProvider.cs | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/Bicep.Core.IntegrationTests/Scenarios/TopLevelResourcePropertiesTests.cs b/src/Bicep.Core.IntegrationTests/Scenarios/TopLevelResourcePropertiesTests.cs index c754da15c1e..5da87a5a033 100644 --- a/src/Bicep.Core.IntegrationTests/Scenarios/TopLevelResourcePropertiesTests.cs +++ b/src/Bicep.Core.IntegrationTests/Scenarios/TopLevelResourcePropertiesTests.cs @@ -32,6 +32,7 @@ public static IEnumerable ResourceFallbackProperties yield return new object[] { "managedByExtended", "[]" }; yield return new object[] { "extendedLocation", "{'type': 'NotSpecified'}" }; yield return new object[] { "zones", "[]" }; + yield return new object[] { "placement", "{'zonePlacementPolicy': 'Any'}" }; yield return new object[] { "plan", "{}" }; yield return new object[] { "eTag", "''" }; yield return new object[] { "scale", "{'capacity': 1}" }; @@ -49,6 +50,7 @@ public static IEnumerable ModuleFallbackProperties yield return new object[] { "managedByExtended", "[]" }; yield return new object[] { "extendedLocation", "{'type': 'NotSpecified'}" }; yield return new object[] { "zones", "[]" }; + yield return new object[] { "placement", "{'zonePlacementPolicy': 'Any'}" }; yield return new object[] { "plan", "{}" }; yield return new object[] { "eTag", "''" }; yield return new object[] { "scale", "{'capacity': 1}" }; diff --git a/src/Bicep.Core/TypeSystem/Providers/Az/AzResourceTypeProvider.cs b/src/Bicep.Core/TypeSystem/Providers/Az/AzResourceTypeProvider.cs index 096c43d0922..0695ddd0f4c 100644 --- a/src/Bicep.Core/TypeSystem/Providers/Az/AzResourceTypeProvider.cs +++ b/src/Bicep.Core/TypeSystem/Providers/Az/AzResourceTypeProvider.cs @@ -67,6 +67,7 @@ public static readonly ImmutableSortedSet ReadWriteDeployTimeConstantPro "managedBy", "extendedLocation", "zones", + "placement", "plan", ResourceSkuPropertyName, "identity", @@ -162,6 +163,20 @@ public static IEnumerable KnownTopLevelResourceProperties() yield return new NamedTypeProperty("zones", stringArray); + var zonePlacementPolicyType = TypeHelper.CreateTypeUnion( + TypeFactory.CreateStringLiteralType("NotSpecified"), + TypeFactory.CreateStringLiteralType("Any"), + TypeFactory.CreateStringLiteralType("None"), + TypeFactory.CreateStringLiteralType("Auto"), + LanguageConstants.String); + + yield return new NamedTypeProperty("placement", new ObjectType("placement", TypeSymbolValidationFlags.Default, new[] + { + new NamedTypeProperty("zonePlacementPolicy", zonePlacementPolicyType, TypePropertyFlags.Required), + new NamedTypeProperty("includeZones", stringArray), + new NamedTypeProperty("excludeZones", stringArray), + }, null)); + yield return new NamedTypeProperty("plan", LanguageConstants.Object); yield return new NamedTypeProperty("eTag", LanguageConstants.String); From 94b920cc4f49a14a3f3ce1105e5800e11a7d22bc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 10 Aug 2026 17:52:15 +0000 Subject: [PATCH 3/5] Add VMSS scenario test for placement property Co-authored-by: anthony-c-martin <38542602+anthony-c-martin@users.noreply.github.com> --- .../TopLevelResourcePropertiesTests.cs | 27 +++++++++++ .../Utils/BuiltInTestTypes.cs | 45 +++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/src/Bicep.Core.IntegrationTests/Scenarios/TopLevelResourcePropertiesTests.cs b/src/Bicep.Core.IntegrationTests/Scenarios/TopLevelResourcePropertiesTests.cs index 5da87a5a033..5c025400202 100644 --- a/src/Bicep.Core.IntegrationTests/Scenarios/TopLevelResourcePropertiesTests.cs +++ b/src/Bicep.Core.IntegrationTests/Scenarios/TopLevelResourcePropertiesTests.cs @@ -559,5 +559,32 @@ public void Test_Issue5960_case9() ("BCP036", DiagnosticLevel.Warning, "The property \"kind\" expected a value of type \"'val1' | 'val2'\" but the provided value is of type \"'otherValue'\". If this is a resource type definition inaccuracy, report it using https://aka.ms/bicep-type-issues.") }); } + + // https://github.com/Azure/bicep/issues/20171 + [TestMethod] + public void Placement_property_can_be_used_to_author_a_virtual_machine_scale_set_without_generating_diagnostics() + { + var compilation = Services.BuildCompilation(@" +resource vmss 'Test.Compute/virtualMachineScaleSets@2020-01-01' = { + name: 'vmss' + location: resourceGroup().location + sku: { + name: 'Standard_D2s_v3' + tier: 'Standard' + capacity: 3 + } + placement: { + zonePlacementPolicy: 'Any' + } + properties: { + overprovision: true + upgradePolicy: { + mode: 'Manual' + } + } +} +"); + compilation.Should().NotHaveAnyDiagnostics(); + } } } diff --git a/src/Bicep.Core.UnitTests/Utils/BuiltInTestTypes.cs b/src/Bicep.Core.UnitTests/Utils/BuiltInTestTypes.cs index f57d1c2c109..dbe6f900f65 100644 --- a/src/Bicep.Core.UnitTests/Utils/BuiltInTestTypes.cs +++ b/src/Bicep.Core.UnitTests/Utils/BuiltInTestTypes.cs @@ -196,6 +196,50 @@ private static ResourceTypeComponents FallbackPropertyTestsType() ), null)); } + private static ResourceTypeComponents VirtualMachineScaleSetsTestsType() + { + // Models the shape of Microsoft.Compute/virtualMachineScaleSets, including the "placement" property + // (https://github.com/Azure/bicep/issues/20171), to verify that a realistic resource can be authored + // using the "placement" top-level property without generating any diagnostics. + var resourceType = ResourceTypeReference.Parse("Test.Compute/virtualMachineScaleSets@2020-01-01"); + + var skuType = new ObjectType("Sku", TypeSymbolValidationFlags.Default, new[] { + new NamedTypeProperty("name", LanguageConstants.String, TypePropertyFlags.None, "The sku name."), + new NamedTypeProperty("tier", LanguageConstants.String, TypePropertyFlags.None, "The sku tier."), + new NamedTypeProperty("capacity", LanguageConstants.Int, TypePropertyFlags.None, "The sku capacity."), + }, null); + + var upgradePolicyType = new ObjectType("UpgradePolicy", TypeSymbolValidationFlags.Default, new[] { + new NamedTypeProperty("mode", LanguageConstants.String, TypePropertyFlags.None, "The upgrade mode."), + }, null); + + var propertiesType = new ObjectType("Properties", TypeSymbolValidationFlags.WarnOnPropertyTypeMismatch, new[] { + new NamedTypeProperty("overprovision", LanguageConstants.Bool, TypePropertyFlags.None, "Whether to overprovision the scale set."), + new NamedTypeProperty("upgradePolicy", upgradePolicyType, TypePropertyFlags.None, "The upgrade policy."), + }, null); + + var placementType = new ObjectType("Placement", TypeSymbolValidationFlags.Default, new[] { + new NamedTypeProperty("zonePlacementPolicy", TypeHelper.CreateTypeUnion( + TypeFactory.CreateStringLiteralType("NotSpecified"), + TypeFactory.CreateStringLiteralType("Any"), + TypeFactory.CreateStringLiteralType("None"), + TypeFactory.CreateStringLiteralType("Auto"), + LanguageConstants.String), TypePropertyFlags.Required, "The zone placement policy."), + new NamedTypeProperty("includeZones", new TypedArrayType(LanguageConstants.String, TypeSymbolValidationFlags.Default), TypePropertyFlags.None, "The zones to include."), + new NamedTypeProperty("excludeZones", new TypedArrayType(LanguageConstants.String, TypeSymbolValidationFlags.Default), TypePropertyFlags.None, "The zones to exclude."), + }, null); + + return new ResourceTypeComponents(resourceType, ResourceScope.ResourceGroup, ResourceScope.None, ResourceFlags.None, + new ObjectType(resourceType.FormatName(), TypeSymbolValidationFlags.Default, + AzResourceTypeProvider.GetCommonResourceProperties(resourceType).Concat(new[] { + new NamedTypeProperty("location", LanguageConstants.String, TypePropertyFlags.None, "location property"), + new NamedTypeProperty("sku", skuType, TypePropertyFlags.None, "sku property"), + new NamedTypeProperty("zones", new TypedArrayType(LanguageConstants.String, TypeSymbolValidationFlags.Default), TypePropertyFlags.None, "zones property"), + new NamedTypeProperty("placement", placementType, TypePropertyFlags.None, "placement property"), + new NamedTypeProperty("properties", propertiesType, TypePropertyFlags.Required, "properties property"), + }), null)); + } + private static ResourceTypeComponents ListFunctionsType() { var resourceType = ResourceTypeReference.Parse("Test.Rp/listFuncTests@2020-01-01"); @@ -252,6 +296,7 @@ private static ResourceTypeComponents ListFunctionsType() DiscriminatedPropertiesTestsType2(), FallbackPropertyTestsType(), ListFunctionsType(), + VirtualMachineScaleSetsTestsType(), ]; public static INamespaceProvider Create() From 2222181a4c088748b51f3455cb1af0a5f66f1b26 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 10 Aug 2026 19:08:38 +0000 Subject: [PATCH 4/5] Update baseline diagnostics for placement property Co-authored-by: anthony-c-martin <38542602+anthony-c-martin@users.noreply.github.com> --- .../InvalidResourceDerivedTypes_LF/main.diagnostics.bicep | 2 +- .../baselines/InvalidResources_CRLF/main.diagnostics.bicep | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Bicep.Core.Samples/Files/baselines/InvalidResourceDerivedTypes_LF/main.diagnostics.bicep b/src/Bicep.Core.Samples/Files/baselines/InvalidResourceDerivedTypes_LF/main.diagnostics.bicep index c462c5cf0d6..4846b1bd78a 100644 --- a/src/Bicep.Core.Samples/Files/baselines/InvalidResourceDerivedTypes_LF/main.diagnostics.bicep +++ b/src/Bicep.Core.Samples/Files/baselines/InvalidResourceDerivedTypes_LF/main.diagnostics.bicep @@ -66,7 +66,7 @@ type hello = { type typoInPropertyName = resourceInput<'Microsoft.Storage/storageAccounts@2023-01-01'>.nom //@[005:023) [no-unused-types (Warning)] Type "typoInPropertyName" is declared but never used. (bicep core linter https://aka.ms/bicep/linter-diagnostics#no-unused-types) |typoInPropertyName| -//@[088:091) [BCP053 (Error)] The type "Microsoft.Storage/storageAccounts" does not contain property "nom". Available properties include "apiVersion", "asserts", "dependsOn", "eTag", "extendedLocation", "id", "identity", "kind", "location", "managedBy", "managedByExtended", "name", "plan", "properties", "scale", "sku", "tags", "type", "zones". (bicep https://aka.ms/bicep/core-diagnostics#BCP053) |nom| +//@[088:091) [BCP053 (Error)] The type "Microsoft.Storage/storageAccounts" does not contain property "nom". Available properties include "apiVersion", "asserts", "dependsOn", "eTag", "extendedLocation", "id", "identity", "kind", "location", "managedBy", "managedByExtended", "name", "placement", "plan", "properties", "scale", "sku", "tags", "type", "zones". (bicep https://aka.ms/bicep/core-diagnostics#BCP053) |nom| type typoInPropertyName2 = resourceInput<'Microsoft.KeyVault/vaults@2022-07-01'>.properties.accessPolicies[*].tenatId //@[005:024) [no-unused-types (Warning)] Type "typoInPropertyName2" is declared but never used. (bicep core linter https://aka.ms/bicep/linter-diagnostics#no-unused-types) |typoInPropertyName2| //@[110:117) [BCP083 (Error)] The type "AccessPolicyEntry" does not contain property "tenatId". Did you mean "tenantId"? (bicep https://aka.ms/bicep/core-diagnostics#BCP083) |tenatId| diff --git a/src/Bicep.Core.Samples/Files/baselines/InvalidResources_CRLF/main.diagnostics.bicep b/src/Bicep.Core.Samples/Files/baselines/InvalidResources_CRLF/main.diagnostics.bicep index 3f5ef6c963c..4a3ec5c3924 100644 --- a/src/Bicep.Core.Samples/Files/baselines/InvalidResources_CRLF/main.diagnostics.bicep +++ b/src/Bicep.Core.Samples/Files/baselines/InvalidResources_CRLF/main.diagnostics.bicep @@ -1025,7 +1025,7 @@ resource incorrectPropertiesKey 'Microsoft.Resources/deploymentScripts@2020-10-0 var mock = incorrectPropertiesKey.p //@[004:008) [no-unused-vars (Warning)] Variable "mock" is declared but never used. (bicep core linter https://aka.ms/bicep/linter-diagnostics#no-unused-vars) |mock| -//@[034:035) [BCP053 (Error)] The type "AzureCLI" does not contain property "p". Available properties include "apiVersion", "asserts", "eTag", "extendedLocation", "id", "identity", "kind", "location", "managedBy", "managedByExtended", "name", "plan", "properties", "scale", "sku", "systemData", "tags", "type", "zones". (bicep https://aka.ms/bicep/core-diagnostics#BCP053) |p| +//@[034:035) [BCP053 (Error)] The type "AzureCLI" does not contain property "p". Available properties include "apiVersion", "asserts", "eTag", "extendedLocation", "id", "identity", "kind", "location", "managedBy", "managedByExtended", "name", "placement", "plan", "properties", "scale", "sku", "systemData", "tags", "type", "zones". (bicep https://aka.ms/bicep/core-diagnostics#BCP053) |p| resource incorrectPropertiesKey2 'Microsoft.Resources/deploymentScripts@2020-10-01' = { kind: 'AzureCLI' @@ -2189,7 +2189,7 @@ resource issue3000stg 'Microsoft.Storage/storageAccounts@2021-04-01' = { var issue3000stgMadeUpProperty = issue3000stg.madeUpProperty //@[004:030) [no-unused-vars (Warning)] Variable "issue3000stgMadeUpProperty" is declared but never used. (bicep core linter https://aka.ms/bicep/linter-diagnostics#no-unused-vars) |issue3000stgMadeUpProperty| -//@[046:060) [BCP053 (Error)] The type "Microsoft.Storage/storageAccounts" does not contain property "madeUpProperty". Available properties include "apiVersion", "asserts", "eTag", "extendedLocation", "id", "identity", "kind", "location", "managedBy", "managedByExtended", "name", "plan", "properties", "scale", "sku", "tags", "type", "zones". (bicep https://aka.ms/bicep/core-diagnostics#BCP053) |madeUpProperty| +//@[046:060) [BCP053 (Error)] The type "Microsoft.Storage/storageAccounts" does not contain property "madeUpProperty". Available properties include "apiVersion", "asserts", "eTag", "extendedLocation", "id", "identity", "kind", "location", "managedBy", "managedByExtended", "name", "placement", "plan", "properties", "scale", "sku", "tags", "type", "zones". (bicep https://aka.ms/bicep/core-diagnostics#BCP053) |madeUpProperty| var issue3000stgManagedBy = issue3000stg.managedBy //@[004:025) [no-unused-vars (Warning)] Variable "issue3000stgManagedBy" is declared but never used. (bicep core linter https://aka.ms/bicep/linter-diagnostics#no-unused-vars) |issue3000stgManagedBy| //@[041:050) [BCP187 (Warning)] The property "managedBy" does not exist in the resource or type definition, although it might still be valid. If this is a resource type definition inaccuracy, report it using https://aka.ms/bicep-type-issues. (bicep https://aka.ms/bicep/core-diagnostics#BCP187) |managedBy| From 6d1ebce5cdb3aab46176522dd71846ea67c38812 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 11 Aug 2026 02:08:01 +0000 Subject: [PATCH 5/5] Fix LangServer.IntegrationTests fixtures to include placement property Co-authored-by: anthony-c-martin <38542602+anthony-c-martin@users.noreply.github.com> --- .../ExpressionAndTypeExtractorTests.cs | 5 +++++ .../TypeStringifierTests.cs | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Bicep.LangServer.IntegrationTests/ExpressionAndTypeExtractorTests.cs b/src/Bicep.LangServer.IntegrationTests/ExpressionAndTypeExtractorTests.cs index b29d30b0ed1..6a7c409697a 100644 --- a/src/Bicep.LangServer.IntegrationTests/ExpressionAndTypeExtractorTests.cs +++ b/src/Bicep.LangServer.IntegrationTests/ExpressionAndTypeExtractorTests.cs @@ -2655,6 +2655,11 @@ param newParameter { managedByExtended: string[] name: string parent: object? /* Microsoft.Compute/virtualMachines */ + placement: { + excludeZones: string[] + includeZones: string[] + zonePlacementPolicy: string /* 'Any' | 'Auto' | 'None' | 'NotSpecified' | string */ + } plan: object properties: { autoUpgradeMinorVersion: bool? diff --git a/src/Bicep.LangServer.IntegrationTests/TypeStringifierTests.cs b/src/Bicep.LangServer.IntegrationTests/TypeStringifierTests.cs index 834355164d0..a8805c47ddc 100644 --- a/src/Bicep.LangServer.IntegrationTests/TypeStringifierTests.cs +++ b/src/Bicep.LangServer.IntegrationTests/TypeStringifierTests.cs @@ -785,8 +785,8 @@ public void NullableTypes(string typeDeclaration, string expectedLooseSyntax, st """, "parent", "type loose = object", - "type medium = { asserts: object, dependsOn: (object /* module[] | (resource | module) | resource[] */)[], eTag: string, extendedLocation: { name: string?, type: (string /* 'EdgeZone' | string */)? }?, identity: { type: ('None' | 'SystemAssigned' | 'SystemAssigned, UserAssigned' | 'UserAssigned')?, userAssignedIdentities: object? }?, kind: string, location: string, managedBy: string, managedByExtended: string[], name: string, plan: { name: string?, product: string?, promotionCode: string?, publisher: string? }?, properties: { additionalCapabilities: { ultraSSDEnabled: bool? }?, availabilitySet: { id: string? }?, billingProfile: { maxPrice: int? }?, diagnosticsProfile: { bootDiagnostics: { enabled: bool?, storageUri: string? }? }?, evictionPolicy: (string /* 'Deallocate' | 'Delete' | string */)?, extensionsTimeBudget: string?, hardwareProfile: { vmSize: (string /* 'Basic_A0' | 'Basic_A1' | 'Basic_A2' | 'Basic_A3' | 'Basic_A4' | 'Standard_A0' | 'Standard_A1' | 'Standard_A10' | 'Standard_A11' | 'Standard_A1_v2' | 'Standard_A2' | 'Standard_A2_v2' | 'Standard_A2m_v2' | 'Standard_A3' | 'Standard_A4' | 'Standard_A4_v2' | 'Standard_A4m_v2' | 'Standard_A5' | 'Standard_A6' | 'Standard_A7' | 'Standard_A8' | 'Standard_A8_v2' | 'Standard_A8m_v2' | 'Standard_A9' | 'Standard_B1ms' | 'Standard_B1s' | 'Standard_B2ms' | 'Standard_B2s' | 'Standard_B4ms' | 'Standard_B8ms' | 'Standard_D1' | 'Standard_D11' | 'Standard_D11_v2' | 'Standard_D12' | 'Standard_D12_v2' | 'Standard_D13' | 'Standard_D13_v2' | 'Standard_D14' | 'Standard_D14_v2' | 'Standard_D15_v2' | 'Standard_D16_v3' | 'Standard_D16s_v3' | 'Standard_D1_v2' | 'Standard_D2' | 'Standard_D2_v2' | 'Standard_D2_v3' | 'Standard_D2s_v3' | 'Standard_D3' | 'Standard_D32_v3' | 'Standard_D32s_v3' | 'Standard_D3_v2' | 'Standard_D4' | 'Standard_D4_v2' | 'Standard_D4_v3' | 'Standard_D4s_v3' | 'Standard_D5_v2' | 'Standard_D64_v3' | 'Standard_D64s_v3' | 'Standard_D8_v3' | 'Standard_D8s_v3' | 'Standard_DS1' | 'Standard_DS11' | 'Standard_DS11_v2' | 'Standard_DS12' | 'Standard_DS12_v2' | 'Standard_DS13' | 'Standard_DS13-2_v2' | 'Standard_DS13-4_v2' | 'Standard_DS13_v2' | 'Standard_DS14' | 'Standard_DS14-4_v2' | 'Standard_DS14-8_v2' | 'Standard_DS14_v2' | 'Standard_DS15_v2' | 'Standard_DS1_v2' | 'Standard_DS2' | 'Standard_DS2_v2' | 'Standard_DS3' | 'Standard_DS3_v2' | 'Standard_DS4' | 'Standard_DS4_v2' | 'Standard_DS5_v2' | 'Standard_E16_v3' | 'Standard_E16s_v3' | 'Standard_E2_v3' | 'Standard_E2s_v3' | 'Standard_E32-16_v3' | 'Standard_E32-8s_v3' | 'Standard_E32_v3' | 'Standard_E32s_v3' | 'Standard_E4_v3' | 'Standard_E4s_v3' | 'Standard_E64-16s_v3' | 'Standard_E64-32s_v3' | 'Standard_E64_v3' | 'Standard_E64s_v3' | 'Standard_E8_v3' | 'Standard_E8s_v3' | 'Standard_F1' | 'Standard_F16' | 'Standard_F16s' | 'Standard_F16s_v2' | 'Standard_F1s' | 'Standard_F2' | 'Standard_F2s' | 'Standard_F2s_v2' | 'Standard_F32s_v2' | 'Standard_F4' | 'Standard_F4s' | 'Standard_F4s_v2' | 'Standard_F64s_v2' | 'Standard_F72s_v2' | 'Standard_F8' | 'Standard_F8s' | 'Standard_F8s_v2' | 'Standard_G1' | 'Standard_G2' | 'Standard_G3' | 'Standard_G4' | 'Standard_G5' | 'Standard_GS1' | 'Standard_GS2' | 'Standard_GS3' | 'Standard_GS4' | 'Standard_GS4-4' | 'Standard_GS4-8' | 'Standard_GS5' | 'Standard_GS5-16' | 'Standard_GS5-8' | 'Standard_H16' | 'Standard_H16m' | 'Standard_H16mr' | 'Standard_H16r' | 'Standard_H8' | 'Standard_H8m' | 'Standard_L16s' | 'Standard_L32s' | 'Standard_L4s' | 'Standard_L8s' | 'Standard_M128-32ms' | 'Standard_M128-64ms' | 'Standard_M128ms' | 'Standard_M128s' | 'Standard_M64-16ms' | 'Standard_M64-32ms' | 'Standard_M64ms' | 'Standard_M64s' | 'Standard_NC12' | 'Standard_NC12s_v2' | 'Standard_NC12s_v3' | 'Standard_NC24' | 'Standard_NC24r' | 'Standard_NC24rs_v2' | 'Standard_NC24rs_v3' | 'Standard_NC24s_v2' | 'Standard_NC24s_v3' | 'Standard_NC6' | 'Standard_NC6s_v2' | 'Standard_NC6s_v3' | 'Standard_ND12s' | 'Standard_ND24rs' | 'Standard_ND24s' | 'Standard_ND6s' | 'Standard_NV12' | 'Standard_NV24' | 'Standard_NV6' | string */)? }?, host: { id: string? }?, hostGroup: { id: string? }?, licenseType: string?, networkProfile: { networkInterfaces: { id: string?, properties: { primary: bool? }? }[]? }?, osProfile: { adminPassword: string?, adminUsername: string?, allowExtensionOperations: bool?, computerName: string?, customData: string?, linuxConfiguration: { disablePasswordAuthentication: bool?, patchSettings: { patchMode: (string /* 'AutomaticByPlatform' | 'ImageDefault' | string */)? }?, provisionVMAgent: bool?, ssh: { publicKeys: { keyData: string?, path: string? }[]? }? }?, requireGuestProvisionSignal: bool?, secrets: { sourceVault: { id: string? }?, vaultCertificates: { certificateStore: string?, certificateUrl: string? }[]? }[]?, windowsConfiguration: { additionalUnattendContent: { componentName: string?, content: string?, passName: string?, settingName: ('AutoLogon' | 'FirstLogonCommands')? }[]?, enableAutomaticUpdates: bool?, patchSettings: { enableHotpatching: bool?, patchMode: (string /* 'AutomaticByOS' | 'AutomaticByPlatform' | 'Manual' | string */)? }?, provisionVMAgent: bool?, timeZone: string?, winRM: { listeners: { certificateUrl: string?, protocol: ('Http' | 'Https')? }[]? }? }? }?, platformFaultDomain: int?, priority: (string /* 'Low' | 'Regular' | 'Spot' | string */)?, proximityPlacementGroup: { id: string? }?, securityProfile: { encryptionAtHost: bool?, securityType: (string /* 'TrustedLaunch' | string */)?, uefiSettings: { secureBootEnabled: bool?, vTpmEnabled: bool? }? }?, storageProfile: { dataDisks: { caching: ('None' | 'ReadOnly' | 'ReadWrite')?, createOption: string /* 'Attach' | 'Empty' | 'FromImage' | string */, detachOption: (string /* 'ForceDetach' | string */)?, diskSizeGB: int?, image: { uri: string? }?, lun: int, managedDisk: { diskEncryptionSet: { id: string? }?, id: string?, storageAccountType: (string /* 'Premium_LRS' | 'Premium_ZRS' | 'StandardSSD_LRS' | 'StandardSSD_ZRS' | 'Standard_LRS' | 'UltraSSD_LRS' | string */)? }?, name: string?, toBeDetached: bool?, vhd: { uri: string? }?, writeAcceleratorEnabled: bool? }[]?, imageReference: { id: string?, offer: string?, publisher: string?, sku: string?, version: string? }?, osDisk: { caching: ('None' | 'ReadOnly' | 'ReadWrite')?, createOption: string /* 'Attach' | 'Empty' | 'FromImage' | string */, diffDiskSettings: { option: (string /* 'Local' | string */)?, placement: (string /* 'CacheDisk' | 'ResourceDisk' | string */)? }?, diskSizeGB: int?, encryptionSettings: { diskEncryptionKey: { secretUrl: string, sourceVault: { id: string? } }?, enabled: bool?, keyEncryptionKey: { keyUrl: string, sourceVault: { id: string? } }? }?, image: { uri: string? }?, managedDisk: { diskEncryptionSet: { id: string? }?, id: string?, storageAccountType: (string /* 'Premium_LRS' | 'Premium_ZRS' | 'StandardSSD_LRS' | 'StandardSSD_ZRS' | 'Standard_LRS' | 'UltraSSD_LRS' | string */)? }?, name: string?, osType: ('Linux' | 'Windows')?, vhd: { uri: string? }?, writeAcceleratorEnabled: bool? }? }?, virtualMachineScaleSet: { id: string? }? }?, scale: { capacity: int, maximum: int, minimum: int }, sku: { capacity: int, family: string, model: string, name: string, size: string, tier: string }, tags: object?, zones: string[]? }", - "type strict = { asserts: object, dependsOn: (object /* module[] | (resource | module) | resource[] */)[], eTag: string, extendedLocation: { name: string?, type: (string /* 'EdgeZone' | string */)? }?, identity: { type: ('None' | 'SystemAssigned' | 'SystemAssigned, UserAssigned' | 'UserAssigned')?, userAssignedIdentities: object? }?, kind: string, location: string, managedBy: string, managedByExtended: string[], name: string, plan: { name: string?, product: string?, promotionCode: string?, publisher: string? }?, properties: { additionalCapabilities: { ultraSSDEnabled: bool? }?, availabilitySet: { id: string? }?, billingProfile: { maxPrice: int? }?, diagnosticsProfile: { bootDiagnostics: { enabled: bool?, storageUri: string? }? }?, evictionPolicy: (string /* 'Deallocate' | 'Delete' | string */)?, extensionsTimeBudget: string?, hardwareProfile: { vmSize: (string /* 'Basic_A0' | 'Basic_A1' | 'Basic_A2' | 'Basic_A3' | 'Basic_A4' | 'Standard_A0' | 'Standard_A1' | 'Standard_A10' | 'Standard_A11' | 'Standard_A1_v2' | 'Standard_A2' | 'Standard_A2_v2' | 'Standard_A2m_v2' | 'Standard_A3' | 'Standard_A4' | 'Standard_A4_v2' | 'Standard_A4m_v2' | 'Standard_A5' | 'Standard_A6' | 'Standard_A7' | 'Standard_A8' | 'Standard_A8_v2' | 'Standard_A8m_v2' | 'Standard_A9' | 'Standard_B1ms' | 'Standard_B1s' | 'Standard_B2ms' | 'Standard_B2s' | 'Standard_B4ms' | 'Standard_B8ms' | 'Standard_D1' | 'Standard_D11' | 'Standard_D11_v2' | 'Standard_D12' | 'Standard_D12_v2' | 'Standard_D13' | 'Standard_D13_v2' | 'Standard_D14' | 'Standard_D14_v2' | 'Standard_D15_v2' | 'Standard_D16_v3' | 'Standard_D16s_v3' | 'Standard_D1_v2' | 'Standard_D2' | 'Standard_D2_v2' | 'Standard_D2_v3' | 'Standard_D2s_v3' | 'Standard_D3' | 'Standard_D32_v3' | 'Standard_D32s_v3' | 'Standard_D3_v2' | 'Standard_D4' | 'Standard_D4_v2' | 'Standard_D4_v3' | 'Standard_D4s_v3' | 'Standard_D5_v2' | 'Standard_D64_v3' | 'Standard_D64s_v3' | 'Standard_D8_v3' | 'Standard_D8s_v3' | 'Standard_DS1' | 'Standard_DS11' | 'Standard_DS11_v2' | 'Standard_DS12' | 'Standard_DS12_v2' | 'Standard_DS13' | 'Standard_DS13-2_v2' | 'Standard_DS13-4_v2' | 'Standard_DS13_v2' | 'Standard_DS14' | 'Standard_DS14-4_v2' | 'Standard_DS14-8_v2' | 'Standard_DS14_v2' | 'Standard_DS15_v2' | 'Standard_DS1_v2' | 'Standard_DS2' | 'Standard_DS2_v2' | 'Standard_DS3' | 'Standard_DS3_v2' | 'Standard_DS4' | 'Standard_DS4_v2' | 'Standard_DS5_v2' | 'Standard_E16_v3' | 'Standard_E16s_v3' | 'Standard_E2_v3' | 'Standard_E2s_v3' | 'Standard_E32-16_v3' | 'Standard_E32-8s_v3' | 'Standard_E32_v3' | 'Standard_E32s_v3' | 'Standard_E4_v3' | 'Standard_E4s_v3' | 'Standard_E64-16s_v3' | 'Standard_E64-32s_v3' | 'Standard_E64_v3' | 'Standard_E64s_v3' | 'Standard_E8_v3' | 'Standard_E8s_v3' | 'Standard_F1' | 'Standard_F16' | 'Standard_F16s' | 'Standard_F16s_v2' | 'Standard_F1s' | 'Standard_F2' | 'Standard_F2s' | 'Standard_F2s_v2' | 'Standard_F32s_v2' | 'Standard_F4' | 'Standard_F4s' | 'Standard_F4s_v2' | 'Standard_F64s_v2' | 'Standard_F72s_v2' | 'Standard_F8' | 'Standard_F8s' | 'Standard_F8s_v2' | 'Standard_G1' | 'Standard_G2' | 'Standard_G3' | 'Standard_G4' | 'Standard_G5' | 'Standard_GS1' | 'Standard_GS2' | 'Standard_GS3' | 'Standard_GS4' | 'Standard_GS4-4' | 'Standard_GS4-8' | 'Standard_GS5' | 'Standard_GS5-16' | 'Standard_GS5-8' | 'Standard_H16' | 'Standard_H16m' | 'Standard_H16mr' | 'Standard_H16r' | 'Standard_H8' | 'Standard_H8m' | 'Standard_L16s' | 'Standard_L32s' | 'Standard_L4s' | 'Standard_L8s' | 'Standard_M128-32ms' | 'Standard_M128-64ms' | 'Standard_M128ms' | 'Standard_M128s' | 'Standard_M64-16ms' | 'Standard_M64-32ms' | 'Standard_M64ms' | 'Standard_M64s' | 'Standard_NC12' | 'Standard_NC12s_v2' | 'Standard_NC12s_v3' | 'Standard_NC24' | 'Standard_NC24r' | 'Standard_NC24rs_v2' | 'Standard_NC24rs_v3' | 'Standard_NC24s_v2' | 'Standard_NC24s_v3' | 'Standard_NC6' | 'Standard_NC6s_v2' | 'Standard_NC6s_v3' | 'Standard_ND12s' | 'Standard_ND24rs' | 'Standard_ND24s' | 'Standard_ND6s' | 'Standard_NV12' | 'Standard_NV24' | 'Standard_NV6' | string */)? }?, host: { id: string? }?, hostGroup: { id: string? }?, licenseType: string?, networkProfile: { networkInterfaces: { id: string?, properties: { primary: bool? }? }[]? }?, osProfile: { adminPassword: string?, adminUsername: string?, allowExtensionOperations: bool?, computerName: string?, customData: string?, linuxConfiguration: { disablePasswordAuthentication: bool?, patchSettings: { patchMode: (string /* 'AutomaticByPlatform' | 'ImageDefault' | string */)? }?, provisionVMAgent: bool?, ssh: { publicKeys: { keyData: string?, path: string? }[]? }? }?, requireGuestProvisionSignal: bool?, secrets: { sourceVault: { id: string? }?, vaultCertificates: { certificateStore: string?, certificateUrl: string? }[]? }[]?, windowsConfiguration: { additionalUnattendContent: { componentName: 'Microsoft-Windows-Shell-Setup'?, content: string?, passName: 'OobeSystem'?, settingName: ('AutoLogon' | 'FirstLogonCommands')? }[]?, enableAutomaticUpdates: bool?, patchSettings: { enableHotpatching: bool?, patchMode: (string /* 'AutomaticByOS' | 'AutomaticByPlatform' | 'Manual' | string */)? }?, provisionVMAgent: bool?, timeZone: string?, winRM: { listeners: { certificateUrl: string?, protocol: ('Http' | 'Https')? }[]? }? }? }?, platformFaultDomain: int?, priority: (string /* 'Low' | 'Regular' | 'Spot' | string */)?, proximityPlacementGroup: { id: string? }?, securityProfile: { encryptionAtHost: bool?, securityType: (string /* 'TrustedLaunch' | string */)?, uefiSettings: { secureBootEnabled: bool?, vTpmEnabled: bool? }? }?, storageProfile: { dataDisks: { caching: ('None' | 'ReadOnly' | 'ReadWrite')?, createOption: string /* 'Attach' | 'Empty' | 'FromImage' | string */, detachOption: (string /* 'ForceDetach' | string */)?, diskSizeGB: int?, image: { uri: string? }?, lun: int, managedDisk: { diskEncryptionSet: { id: string? }?, id: string?, storageAccountType: (string /* 'Premium_LRS' | 'Premium_ZRS' | 'StandardSSD_LRS' | 'StandardSSD_ZRS' | 'Standard_LRS' | 'UltraSSD_LRS' | string */)? }?, name: string?, toBeDetached: bool?, vhd: { uri: string? }?, writeAcceleratorEnabled: bool? }[]?, imageReference: { id: string?, offer: string?, publisher: string?, sku: string?, version: string? }?, osDisk: { caching: ('None' | 'ReadOnly' | 'ReadWrite')?, createOption: string /* 'Attach' | 'Empty' | 'FromImage' | string */, diffDiskSettings: { option: (string /* 'Local' | string */)?, placement: (string /* 'CacheDisk' | 'ResourceDisk' | string */)? }?, diskSizeGB: int?, encryptionSettings: { diskEncryptionKey: { secretUrl: string, sourceVault: { id: string? } }?, enabled: bool?, keyEncryptionKey: { keyUrl: string, sourceVault: { id: string? } }? }?, image: { uri: string? }?, managedDisk: { diskEncryptionSet: { id: string? }?, id: string?, storageAccountType: (string /* 'Premium_LRS' | 'Premium_ZRS' | 'StandardSSD_LRS' | 'StandardSSD_ZRS' | 'Standard_LRS' | 'UltraSSD_LRS' | string */)? }?, name: string?, osType: ('Linux' | 'Windows')?, vhd: { uri: string? }?, writeAcceleratorEnabled: bool? }? }?, virtualMachineScaleSet: { id: string? }? }?, scale: { capacity: int, maximum: int, minimum: int }, sku: { capacity: int, family: string, model: string, name: string, size: string, tier: string }, tags: object?, zones: string[]? }", + "type medium = { asserts: object, dependsOn: (object /* module[] | (resource | module) | resource[] */)[], eTag: string, extendedLocation: { name: string?, type: (string /* 'EdgeZone' | string */)? }?, identity: { type: ('None' | 'SystemAssigned' | 'SystemAssigned, UserAssigned' | 'UserAssigned')?, userAssignedIdentities: object? }?, kind: string, location: string, managedBy: string, managedByExtended: string[], name: string, placement: { excludeZones: string[], includeZones: string[], zonePlacementPolicy: string /* 'Any' | 'Auto' | 'None' | 'NotSpecified' | string */ }, plan: { name: string?, product: string?, promotionCode: string?, publisher: string? }?, properties: { additionalCapabilities: { ultraSSDEnabled: bool? }?, availabilitySet: { id: string? }?, billingProfile: { maxPrice: int? }?, diagnosticsProfile: { bootDiagnostics: { enabled: bool?, storageUri: string? }? }?, evictionPolicy: (string /* 'Deallocate' | 'Delete' | string */)?, extensionsTimeBudget: string?, hardwareProfile: { vmSize: (string /* 'Basic_A0' | 'Basic_A1' | 'Basic_A2' | 'Basic_A3' | 'Basic_A4' | 'Standard_A0' | 'Standard_A1' | 'Standard_A10' | 'Standard_A11' | 'Standard_A1_v2' | 'Standard_A2' | 'Standard_A2_v2' | 'Standard_A2m_v2' | 'Standard_A3' | 'Standard_A4' | 'Standard_A4_v2' | 'Standard_A4m_v2' | 'Standard_A5' | 'Standard_A6' | 'Standard_A7' | 'Standard_A8' | 'Standard_A8_v2' | 'Standard_A8m_v2' | 'Standard_A9' | 'Standard_B1ms' | 'Standard_B1s' | 'Standard_B2ms' | 'Standard_B2s' | 'Standard_B4ms' | 'Standard_B8ms' | 'Standard_D1' | 'Standard_D11' | 'Standard_D11_v2' | 'Standard_D12' | 'Standard_D12_v2' | 'Standard_D13' | 'Standard_D13_v2' | 'Standard_D14' | 'Standard_D14_v2' | 'Standard_D15_v2' | 'Standard_D16_v3' | 'Standard_D16s_v3' | 'Standard_D1_v2' | 'Standard_D2' | 'Standard_D2_v2' | 'Standard_D2_v3' | 'Standard_D2s_v3' | 'Standard_D3' | 'Standard_D32_v3' | 'Standard_D32s_v3' | 'Standard_D3_v2' | 'Standard_D4' | 'Standard_D4_v2' | 'Standard_D4_v3' | 'Standard_D4s_v3' | 'Standard_D5_v2' | 'Standard_D64_v3' | 'Standard_D64s_v3' | 'Standard_D8_v3' | 'Standard_D8s_v3' | 'Standard_DS1' | 'Standard_DS11' | 'Standard_DS11_v2' | 'Standard_DS12' | 'Standard_DS12_v2' | 'Standard_DS13' | 'Standard_DS13-2_v2' | 'Standard_DS13-4_v2' | 'Standard_DS13_v2' | 'Standard_DS14' | 'Standard_DS14-4_v2' | 'Standard_DS14-8_v2' | 'Standard_DS14_v2' | 'Standard_DS15_v2' | 'Standard_DS1_v2' | 'Standard_DS2' | 'Standard_DS2_v2' | 'Standard_DS3' | 'Standard_DS3_v2' | 'Standard_DS4' | 'Standard_DS4_v2' | 'Standard_DS5_v2' | 'Standard_E16_v3' | 'Standard_E16s_v3' | 'Standard_E2_v3' | 'Standard_E2s_v3' | 'Standard_E32-16_v3' | 'Standard_E32-8s_v3' | 'Standard_E32_v3' | 'Standard_E32s_v3' | 'Standard_E4_v3' | 'Standard_E4s_v3' | 'Standard_E64-16s_v3' | 'Standard_E64-32s_v3' | 'Standard_E64_v3' | 'Standard_E64s_v3' | 'Standard_E8_v3' | 'Standard_E8s_v3' | 'Standard_F1' | 'Standard_F16' | 'Standard_F16s' | 'Standard_F16s_v2' | 'Standard_F1s' | 'Standard_F2' | 'Standard_F2s' | 'Standard_F2s_v2' | 'Standard_F32s_v2' | 'Standard_F4' | 'Standard_F4s' | 'Standard_F4s_v2' | 'Standard_F64s_v2' | 'Standard_F72s_v2' | 'Standard_F8' | 'Standard_F8s' | 'Standard_F8s_v2' | 'Standard_G1' | 'Standard_G2' | 'Standard_G3' | 'Standard_G4' | 'Standard_G5' | 'Standard_GS1' | 'Standard_GS2' | 'Standard_GS3' | 'Standard_GS4' | 'Standard_GS4-4' | 'Standard_GS4-8' | 'Standard_GS5' | 'Standard_GS5-16' | 'Standard_GS5-8' | 'Standard_H16' | 'Standard_H16m' | 'Standard_H16mr' | 'Standard_H16r' | 'Standard_H8' | 'Standard_H8m' | 'Standard_L16s' | 'Standard_L32s' | 'Standard_L4s' | 'Standard_L8s' | 'Standard_M128-32ms' | 'Standard_M128-64ms' | 'Standard_M128ms' | 'Standard_M128s' | 'Standard_M64-16ms' | 'Standard_M64-32ms' | 'Standard_M64ms' | 'Standard_M64s' | 'Standard_NC12' | 'Standard_NC12s_v2' | 'Standard_NC12s_v3' | 'Standard_NC24' | 'Standard_NC24r' | 'Standard_NC24rs_v2' | 'Standard_NC24rs_v3' | 'Standard_NC24s_v2' | 'Standard_NC24s_v3' | 'Standard_NC6' | 'Standard_NC6s_v2' | 'Standard_NC6s_v3' | 'Standard_ND12s' | 'Standard_ND24rs' | 'Standard_ND24s' | 'Standard_ND6s' | 'Standard_NV12' | 'Standard_NV24' | 'Standard_NV6' | string */)? }?, host: { id: string? }?, hostGroup: { id: string? }?, licenseType: string?, networkProfile: { networkInterfaces: { id: string?, properties: { primary: bool? }? }[]? }?, osProfile: { adminPassword: string?, adminUsername: string?, allowExtensionOperations: bool?, computerName: string?, customData: string?, linuxConfiguration: { disablePasswordAuthentication: bool?, patchSettings: { patchMode: (string /* 'AutomaticByPlatform' | 'ImageDefault' | string */)? }?, provisionVMAgent: bool?, ssh: { publicKeys: { keyData: string?, path: string? }[]? }? }?, requireGuestProvisionSignal: bool?, secrets: { sourceVault: { id: string? }?, vaultCertificates: { certificateStore: string?, certificateUrl: string? }[]? }[]?, windowsConfiguration: { additionalUnattendContent: { componentName: string?, content: string?, passName: string?, settingName: ('AutoLogon' | 'FirstLogonCommands')? }[]?, enableAutomaticUpdates: bool?, patchSettings: { enableHotpatching: bool?, patchMode: (string /* 'AutomaticByOS' | 'AutomaticByPlatform' | 'Manual' | string */)? }?, provisionVMAgent: bool?, timeZone: string?, winRM: { listeners: { certificateUrl: string?, protocol: ('Http' | 'Https')? }[]? }? }? }?, platformFaultDomain: int?, priority: (string /* 'Low' | 'Regular' | 'Spot' | string */)?, proximityPlacementGroup: { id: string? }?, securityProfile: { encryptionAtHost: bool?, securityType: (string /* 'TrustedLaunch' | string */)?, uefiSettings: { secureBootEnabled: bool?, vTpmEnabled: bool? }? }?, storageProfile: { dataDisks: { caching: ('None' | 'ReadOnly' | 'ReadWrite')?, createOption: string /* 'Attach' | 'Empty' | 'FromImage' | string */, detachOption: (string /* 'ForceDetach' | string */)?, diskSizeGB: int?, image: { uri: string? }?, lun: int, managedDisk: { diskEncryptionSet: { id: string? }?, id: string?, storageAccountType: (string /* 'Premium_LRS' | 'Premium_ZRS' | 'StandardSSD_LRS' | 'StandardSSD_ZRS' | 'Standard_LRS' | 'UltraSSD_LRS' | string */)? }?, name: string?, toBeDetached: bool?, vhd: { uri: string? }?, writeAcceleratorEnabled: bool? }[]?, imageReference: { id: string?, offer: string?, publisher: string?, sku: string?, version: string? }?, osDisk: { caching: ('None' | 'ReadOnly' | 'ReadWrite')?, createOption: string /* 'Attach' | 'Empty' | 'FromImage' | string */, diffDiskSettings: { option: (string /* 'Local' | string */)?, placement: (string /* 'CacheDisk' | 'ResourceDisk' | string */)? }?, diskSizeGB: int?, encryptionSettings: { diskEncryptionKey: { secretUrl: string, sourceVault: { id: string? } }?, enabled: bool?, keyEncryptionKey: { keyUrl: string, sourceVault: { id: string? } }? }?, image: { uri: string? }?, managedDisk: { diskEncryptionSet: { id: string? }?, id: string?, storageAccountType: (string /* 'Premium_LRS' | 'Premium_ZRS' | 'StandardSSD_LRS' | 'StandardSSD_ZRS' | 'Standard_LRS' | 'UltraSSD_LRS' | string */)? }?, name: string?, osType: ('Linux' | 'Windows')?, vhd: { uri: string? }?, writeAcceleratorEnabled: bool? }? }?, virtualMachineScaleSet: { id: string? }? }?, scale: { capacity: int, maximum: int, minimum: int }, sku: { capacity: int, family: string, model: string, name: string, size: string, tier: string }, tags: object?, zones: string[]? }", + "type strict = { asserts: object, dependsOn: (object /* module[] | (resource | module) | resource[] */)[], eTag: string, extendedLocation: { name: string?, type: (string /* 'EdgeZone' | string */)? }?, identity: { type: ('None' | 'SystemAssigned' | 'SystemAssigned, UserAssigned' | 'UserAssigned')?, userAssignedIdentities: object? }?, kind: string, location: string, managedBy: string, managedByExtended: string[], name: string, placement: { excludeZones: string[], includeZones: string[], zonePlacementPolicy: string /* 'Any' | 'Auto' | 'None' | 'NotSpecified' | string */ }, plan: { name: string?, product: string?, promotionCode: string?, publisher: string? }?, properties: { additionalCapabilities: { ultraSSDEnabled: bool? }?, availabilitySet: { id: string? }?, billingProfile: { maxPrice: int? }?, diagnosticsProfile: { bootDiagnostics: { enabled: bool?, storageUri: string? }? }?, evictionPolicy: (string /* 'Deallocate' | 'Delete' | string */)?, extensionsTimeBudget: string?, hardwareProfile: { vmSize: (string /* 'Basic_A0' | 'Basic_A1' | 'Basic_A2' | 'Basic_A3' | 'Basic_A4' | 'Standard_A0' | 'Standard_A1' | 'Standard_A10' | 'Standard_A11' | 'Standard_A1_v2' | 'Standard_A2' | 'Standard_A2_v2' | 'Standard_A2m_v2' | 'Standard_A3' | 'Standard_A4' | 'Standard_A4_v2' | 'Standard_A4m_v2' | 'Standard_A5' | 'Standard_A6' | 'Standard_A7' | 'Standard_A8' | 'Standard_A8_v2' | 'Standard_A8m_v2' | 'Standard_A9' | 'Standard_B1ms' | 'Standard_B1s' | 'Standard_B2ms' | 'Standard_B2s' | 'Standard_B4ms' | 'Standard_B8ms' | 'Standard_D1' | 'Standard_D11' | 'Standard_D11_v2' | 'Standard_D12' | 'Standard_D12_v2' | 'Standard_D13' | 'Standard_D13_v2' | 'Standard_D14' | 'Standard_D14_v2' | 'Standard_D15_v2' | 'Standard_D16_v3' | 'Standard_D16s_v3' | 'Standard_D1_v2' | 'Standard_D2' | 'Standard_D2_v2' | 'Standard_D2_v3' | 'Standard_D2s_v3' | 'Standard_D3' | 'Standard_D32_v3' | 'Standard_D32s_v3' | 'Standard_D3_v2' | 'Standard_D4' | 'Standard_D4_v2' | 'Standard_D4_v3' | 'Standard_D4s_v3' | 'Standard_D5_v2' | 'Standard_D64_v3' | 'Standard_D64s_v3' | 'Standard_D8_v3' | 'Standard_D8s_v3' | 'Standard_DS1' | 'Standard_DS11' | 'Standard_DS11_v2' | 'Standard_DS12' | 'Standard_DS12_v2' | 'Standard_DS13' | 'Standard_DS13-2_v2' | 'Standard_DS13-4_v2' | 'Standard_DS13_v2' | 'Standard_DS14' | 'Standard_DS14-4_v2' | 'Standard_DS14-8_v2' | 'Standard_DS14_v2' | 'Standard_DS15_v2' | 'Standard_DS1_v2' | 'Standard_DS2' | 'Standard_DS2_v2' | 'Standard_DS3' | 'Standard_DS3_v2' | 'Standard_DS4' | 'Standard_DS4_v2' | 'Standard_DS5_v2' | 'Standard_E16_v3' | 'Standard_E16s_v3' | 'Standard_E2_v3' | 'Standard_E2s_v3' | 'Standard_E32-16_v3' | 'Standard_E32-8s_v3' | 'Standard_E32_v3' | 'Standard_E32s_v3' | 'Standard_E4_v3' | 'Standard_E4s_v3' | 'Standard_E64-16s_v3' | 'Standard_E64-32s_v3' | 'Standard_E64_v3' | 'Standard_E64s_v3' | 'Standard_E8_v3' | 'Standard_E8s_v3' | 'Standard_F1' | 'Standard_F16' | 'Standard_F16s' | 'Standard_F16s_v2' | 'Standard_F1s' | 'Standard_F2' | 'Standard_F2s' | 'Standard_F2s_v2' | 'Standard_F32s_v2' | 'Standard_F4' | 'Standard_F4s' | 'Standard_F4s_v2' | 'Standard_F64s_v2' | 'Standard_F72s_v2' | 'Standard_F8' | 'Standard_F8s' | 'Standard_F8s_v2' | 'Standard_G1' | 'Standard_G2' | 'Standard_G3' | 'Standard_G4' | 'Standard_G5' | 'Standard_GS1' | 'Standard_GS2' | 'Standard_GS3' | 'Standard_GS4' | 'Standard_GS4-4' | 'Standard_GS4-8' | 'Standard_GS5' | 'Standard_GS5-16' | 'Standard_GS5-8' | 'Standard_H16' | 'Standard_H16m' | 'Standard_H16mr' | 'Standard_H16r' | 'Standard_H8' | 'Standard_H8m' | 'Standard_L16s' | 'Standard_L32s' | 'Standard_L4s' | 'Standard_L8s' | 'Standard_M128-32ms' | 'Standard_M128-64ms' | 'Standard_M128ms' | 'Standard_M128s' | 'Standard_M64-16ms' | 'Standard_M64-32ms' | 'Standard_M64ms' | 'Standard_M64s' | 'Standard_NC12' | 'Standard_NC12s_v2' | 'Standard_NC12s_v3' | 'Standard_NC24' | 'Standard_NC24r' | 'Standard_NC24rs_v2' | 'Standard_NC24rs_v3' | 'Standard_NC24s_v2' | 'Standard_NC24s_v3' | 'Standard_NC6' | 'Standard_NC6s_v2' | 'Standard_NC6s_v3' | 'Standard_ND12s' | 'Standard_ND24rs' | 'Standard_ND24s' | 'Standard_ND6s' | 'Standard_NV12' | 'Standard_NV24' | 'Standard_NV6' | string */)? }?, host: { id: string? }?, hostGroup: { id: string? }?, licenseType: string?, networkProfile: { networkInterfaces: { id: string?, properties: { primary: bool? }? }[]? }?, osProfile: { adminPassword: string?, adminUsername: string?, allowExtensionOperations: bool?, computerName: string?, customData: string?, linuxConfiguration: { disablePasswordAuthentication: bool?, patchSettings: { patchMode: (string /* 'AutomaticByPlatform' | 'ImageDefault' | string */)? }?, provisionVMAgent: bool?, ssh: { publicKeys: { keyData: string?, path: string? }[]? }? }?, requireGuestProvisionSignal: bool?, secrets: { sourceVault: { id: string? }?, vaultCertificates: { certificateStore: string?, certificateUrl: string? }[]? }[]?, windowsConfiguration: { additionalUnattendContent: { componentName: 'Microsoft-Windows-Shell-Setup'?, content: string?, passName: 'OobeSystem'?, settingName: ('AutoLogon' | 'FirstLogonCommands')? }[]?, enableAutomaticUpdates: bool?, patchSettings: { enableHotpatching: bool?, patchMode: (string /* 'AutomaticByOS' | 'AutomaticByPlatform' | 'Manual' | string */)? }?, provisionVMAgent: bool?, timeZone: string?, winRM: { listeners: { certificateUrl: string?, protocol: ('Http' | 'Https')? }[]? }? }? }?, platformFaultDomain: int?, priority: (string /* 'Low' | 'Regular' | 'Spot' | string */)?, proximityPlacementGroup: { id: string? }?, securityProfile: { encryptionAtHost: bool?, securityType: (string /* 'TrustedLaunch' | string */)?, uefiSettings: { secureBootEnabled: bool?, vTpmEnabled: bool? }? }?, storageProfile: { dataDisks: { caching: ('None' | 'ReadOnly' | 'ReadWrite')?, createOption: string /* 'Attach' | 'Empty' | 'FromImage' | string */, detachOption: (string /* 'ForceDetach' | string */)?, diskSizeGB: int?, image: { uri: string? }?, lun: int, managedDisk: { diskEncryptionSet: { id: string? }?, id: string?, storageAccountType: (string /* 'Premium_LRS' | 'Premium_ZRS' | 'StandardSSD_LRS' | 'StandardSSD_ZRS' | 'Standard_LRS' | 'UltraSSD_LRS' | string */)? }?, name: string?, toBeDetached: bool?, vhd: { uri: string? }?, writeAcceleratorEnabled: bool? }[]?, imageReference: { id: string?, offer: string?, publisher: string?, sku: string?, version: string? }?, osDisk: { caching: ('None' | 'ReadOnly' | 'ReadWrite')?, createOption: string /* 'Attach' | 'Empty' | 'FromImage' | string */, diffDiskSettings: { option: (string /* 'Local' | string */)?, placement: (string /* 'CacheDisk' | 'ResourceDisk' | string */)? }?, diskSizeGB: int?, encryptionSettings: { diskEncryptionKey: { secretUrl: string, sourceVault: { id: string? } }?, enabled: bool?, keyEncryptionKey: { keyUrl: string, sourceVault: { id: string? } }? }?, image: { uri: string? }?, managedDisk: { diskEncryptionSet: { id: string? }?, id: string?, storageAccountType: (string /* 'Premium_LRS' | 'Premium_ZRS' | 'StandardSSD_LRS' | 'StandardSSD_ZRS' | 'Standard_LRS' | 'UltraSSD_LRS' | string */)? }?, name: string?, osType: ('Linux' | 'Windows')?, vhd: { uri: string? }?, writeAcceleratorEnabled: bool? }? }?, virtualMachineScaleSet: { id: string? }? }?, scale: { capacity: int, maximum: int, minimum: int }, sku: { capacity: int, family: string, model: string, name: string, size: string, tier: string }, tags: object?, zones: string[]? }", null, DisplayName = "virtual machine extension's 'parent' property")] [DataRow(