Framework/Helpers/SVTMapping.ps1
Set-StrictMode -Version Latest class SVTMapping { static [string] $VirtualNetworkTypeName = "VirtualNetwork"; static [string] $ERvNetTypeName = "ERvNet"; static [string] $LogicAppsTypeName = "LogicApps"; static [string] $APIConnectionTypeName = "APIConnection"; hidden static [hashtable] $SupportedResourceMap = $null; static [string] GetResourceTypeEnumItems() { return ([SVTMapping]::Mapping | Where-Object { -not [string]::IsNullOrEmpty($_.ResourceTypeName) } | ForEach-Object { "$($_.ResourceTypeName.Replace(' ', '')) `r`n" } | Sort-Object); } static [hashtable] GetSupportedResourceMap() { if($null -eq [SVTMapping]::SupportedResourceMap){ $supportedMap = @{} foreach($map in [SVTMapping]::Mapping){ if([string]::IsNullOrWhiteSpace($map.ResourceType) -or [string]::IsNullOrWhiteSpace($map.ResourceTypeName)){ continue; } if($supportedMap.ContainsKey($map.ResourceType)) {continue;} $supportedMap.Add($map.ResourceType.ToLower(), $map.ResourceTypeName) } [SVTMapping]::SupportedResourceMap = $supportedMap } return [SVTMapping]::SupportedResourceMap } static [ResourceTypeMapping[]] $Mapping = ( [ResourceTypeMapping]@{ ResourceType = "Microsoft.Logic/Workflows"; JsonFileName = "LogicApps.json"; ClassName = "LogicApps"; ResourceTypeName = [SVTMapping]::LogicAppsTypeName; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Compute/virtualMachines"; JsonFileName = "VirtualMachine.json"; ClassName = "VirtualMachine"; ResourceTypeName = "VirtualMachine"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.DataLakeStore/accounts"; JsonFileName = "DataLakeStore.json"; ClassName = "DataLakeStore"; ResourceTypeName = "DataLakeStore"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.DataLakeAnalytics/accounts"; JsonFileName = "DataLakeAnalytics.json"; ClassName = "DataLakeAnalytics"; ResourceTypeName = "DataLakeAnalytics"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.KeyVault/vaults"; JsonFileName = "KeyVault.json"; ClassName = "KeyVault"; ResourceTypeName = "KeyVault"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Sql/servers"; JsonFileName = "SQLDatabase.json"; ClassName = "SQLDatabase"; FixClassName = "SQLDatabaseFix"; FixFileName = "SQLDatabaseFix.ps1"; ResourceTypeName = "SQLDatabase"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Web/sites"; JsonFileName = "AppService.json"; ClassName = "AppService"; FixClassName = "AppServiceFix"; FixFileName = "AppServiceFix.ps1"; ResourceTypeName = "AppService"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.DataFactory/dataFactories"; JsonFileName = "DataFactory.json"; ClassName = "DataFactory"; ResourceTypeName = "DataFactory"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.DataFactory/factories"; JsonFileName = "DataFactoryV2.json"; ClassName = "DataFactoryV2"; ResourceTypeName = "DataFactoryV2"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Storage/storageAccounts"; JsonFileName = "Storage.json"; ClassName = "Storage"; ResourceTypeName = "Storage"; FixClassName = "StorageFix"; FixFileName = "StorageFix.ps1"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.NotificationHubs/namespaces/notificationHubs"; JsonFileName = "NotificationHub.json"; ClassName = "NotificationHub"; ResourceTypeName = "NotificationHub"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Cdn/profiles"; JsonFileName = "CDN.json"; ClassName = "CDN"; ResourceTypeName = "CDN"; FixClassName = "CDNFix"; FixFileName = "CDNFix.ps1"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Network/virtualNetworks"; JsonFileName = "VirtualNetwork.json"; ClassName = "VirtualNetwork"; ResourceTypeName = [SVTMapping]::VirtualNetworkTypeName; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Network/virtualNetworks"; JsonFileName = "ERvNet.json"; ClassName = "ERvNet"; ResourceTypeName = [SVTMapping]::ERvNetTypeName; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.AnalysisServices/servers"; JsonFileName = "AnalysisServices.json"; ClassName = "AnalysisServices"; ResourceTypeName = "AnalysisServices"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Search/searchServices"; JsonFileName = "Search.json"; ClassName = "Search"; ResourceTypeName = "Search"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Batch/batchAccounts"; JsonFileName = "Batch.json"; ClassName = "Batch"; ResourceTypeName = "Batch"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.ClassicCompute/domainNames"; JsonFileName = "CloudService.json"; ClassName = "CloudService"; ResourceTypeName = "CloudService"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.ServiceBus/namespaces"; JsonFileName = "ServiceBus.json"; ClassName = "ServiceBus"; ResourceTypeName = "ServiceBus"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Eventhub/namespaces"; JsonFileName = "EventHub.json"; ClassName = "EventHub"; ResourceTypeName = "EventHub"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Cache/Redis"; JsonFileName = "RedisCache.json"; ClassName = "RedisCache"; ResourceTypeName = "RedisCache"; FixClassName = "RedisCacheFix"; FixFileName = "RedisCacheFix.ps1"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.ServiceFabric/clusters"; JsonFileName = "ServiceFabric.json"; ClassName = "ServiceFabric"; ResourceTypeName = "ServiceFabric"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Web/connectionGateways"; JsonFileName = "ODG.json"; ClassName = "ODG"; ResourceTypeName = "ODG"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Network/trafficmanagerprofiles"; JsonFileName = "TrafficManager.json"; ClassName = "TrafficManager"; ResourceTypeName = "TrafficManager"; FixClassName = "TrafficManagerFix"; FixFileName = "TrafficManagerFix.ps1"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.StreamAnalytics/streamingjobs"; JsonFileName = "StreamAnalytics.json"; ClassName = "StreamAnalytics"; ResourceTypeName = "StreamAnalytics"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.DocumentDb/databaseAccounts"; JsonFileName = "CosmosDB.json"; ClassName = "CosmosDb"; ResourceTypeName = "CosmosDB"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Automation/automationAccounts"; JsonFileName = "Automation.json"; ClassName = "Automation"; ResourceTypeName = "Automation"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Network/loadBalancers"; JsonFileName = "LoadBalancer.json"; ClassName = "LoadBalancer"; ResourceTypeName = "LoadBalancer"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Web/connections"; JsonFileName = "APIConnection.json"; ClassName = "APIConnection"; ResourceTypeName = [SVTMapping]::APIConnectionTypeName; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.BotService/botServices"; JsonFileName = "BotService.json"; ClassName = "BotService"; ResourceTypeName = "BotService"; }, [ResourceTypeMapping]@{ ResourceType = "AzSKCfg"; ClassName = "AzSKCfg"; JsonFileName = "AzSKCfg.json"; ResourceTypeName = "AzSKCfg"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.ContainerInstance/containerGroups"; ClassName = "ContainerInstances"; JsonFileName = "ContainerInstances.json"; ResourceTypeName = "ContainerInstances"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.ContainerRegistry/registries"; ClassName = "ContainerRegistry"; JsonFileName = "ContainerRegistry.json"; ResourceTypeName = "ContainerRegistry"; FixClassName = "ContainerRegistryFix"; FixFileName = "ContainerRegistryFix.ps1"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.Databricks/workspaces"; ClassName = "Databricks"; JsonFileName = "Databricks.json"; ResourceTypeName = "Databricks"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.HDInsight/clusters"; ClassName = "HDInsight"; JsonFileName = "HDInsight.json"; ResourceTypeName = "HDInsight"; }, [ResourceTypeMapping]@{ ResourceType = ""; ClassName = ""; JsonFileName = "ApplicationProxy.json"; ResourceTypeName = ""; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.ApiManagement/service"; ClassName = "APIManagement"; JsonFileName = "APIManagement.json"; ResourceTypeName = "APIManagement"; }, [ResourceTypeMapping]@{ ResourceType = "Microsoft.ContainerService/ManagedClusters"; ClassName = "KubernetesService"; JsonFileName = "KubernetesService.json"; ResourceTypeName = "KubernetesService"; } ); static [ResourceTypeMapping[]] $AzSKDevOpsResourceMapping = ( [ResourceTypeMapping]@{ ResourceType = "AzureDevOps.Organization"; JsonFileName = "AzureDevOps.Organization.json"; ClassName = "Organization"; ResourceTypeName = "Organization"; }, [ResourceTypeMapping]@{ ResourceType = "AzureDevOps.Project"; ClassName = "Project"; JsonFileName = "AzureDevOps.Project.json"; ResourceTypeName = "Project"; }, [ResourceTypeMapping]@{ ResourceType = "AzureDevOps.User"; ClassName = "User"; JsonFileName = "AzureDevOps.User.json"; ResourceTypeName = "User"; }, [ResourceTypeMapping]@{ ResourceType = "AzureDevOps.Build"; ClassName = "Build"; JsonFileName = "AzureDevOps.Build.json"; ResourceTypeName = "Build"; }, [ResourceTypeMapping]@{ ResourceType = "AzureDevOps.Release"; ClassName = "Release"; JsonFileName = "AzureDevOps.Release.json"; ResourceTypeName = "Release"; }, [ResourceTypeMapping]@{ ResourceType = "AzureDevOps.ServiceConnection"; ClassName = "ServiceConnection"; JsonFileName = "AzureDevOps.ServiceConnection.json"; ResourceTypeName = "ServiceConnection"; } ) static [ResourceTypeMapping[]] $AADResourceMapping = ( [ResourceTypeMapping]@{ ResourceType = "AAD.Tenant"; ClassName = "Tenant"; JsonFileName = "AAD.Tenant.json"; ResourceTypeName = "Tenant"; }, [ResourceTypeMapping]@{ ResourceType = "AAD.AppRegistration"; ClassName = "AppRegistration"; JsonFileName = "AAD.AppRegistration.json"; ResourceTypeName = "App"; }, [ResourceTypeMapping]@{ ResourceType = "AAD.EnterpriseApplication"; ClassName = "EnterpriseApplication"; JsonFileName = "AAD.EnterpriseApplication.json"; ResourceTypeName = "SPN"; }, [ResourceTypeMapping]@{ ResourceType = "AAD.Device"; ClassName = "Device"; JsonFileName = "AAD.Device.json"; ResourceTypeName = "Device"; }, [ResourceTypeMapping]@{ ResourceType = "AAD.User"; ClassName = "User"; JsonFileName = "AAD.User.json"; ResourceTypeName = "User"; }, [ResourceTypeMapping]@{ ResourceType = "AAD.Group"; ClassName = "Group"; JsonFileName = "AAD.Group.json"; ResourceTypeName = "Group"; } ) static [SubscriptionMapping] $SubscriptionMapping = @{ ClassName = "SubscriptionCore"; JsonFileName = "SubscriptionCore.json"; FixClassName = "SubscriptionCoreFix"; FixFileName = "SubscriptionCoreFix.ps1"; }; } Invoke-Expression "enum ResourceTypeName { `r`n All `r`n $([SVTMapping]::GetResourceTypeEnumItems()) }"; |