Skip to content
This repository has been archived by the owner on Dec 15, 2022. It is now read-only.

API Group & Kind configuration for Terraformed resources #118

Merged
merged 5 commits into from
Jan 6, 2022

Conversation

ulucinar
Copy link
Collaborator

@ulucinar ulucinar commented Dec 16, 2021

Description of your changes

Fixes #108

API Groups for azurerm resources have been scraped from the terraform import documentation from Terraform registry.

I have:

  • Read and followed Crossplane's contribution process.
  • Run make reviewable test to ensure this PR is ready for review.
Click to see current resource grouping
<base group>:
        ResourceGroup                           -> azurerm_resource_group
        ResourceProviderRegistration            -> azurerm_resource_provider_registration
        Subscription                            -> azurerm_subscription

aad:
        ActiveDirectoryDomainService                    -> azurerm_active_directory_domain_service
        ActiveDirectoryDomainServiceReplicaSet          -> azurerm_active_directory_domain_service_replica_set

aadiam:
        MonitorAADDiagnosticSetting             -> azurerm_monitor_aad_diagnostic_setting

alertsmanagement:
        MonitorActionRuleActionGroup            -> azurerm_monitor_action_rule_action_group
        MonitorActionRuleSuppression            -> azurerm_monitor_action_rule_suppression
        MonitorSmartDetectorAlertRule           -> azurerm_monitor_smart_detector_alert_rule

analysisservices:
        Server          -> azurerm_analysis_services_server

apimanagement:
        API                                     -> azurerm_api_management_api
        APIDiagnostic                           -> azurerm_api_management_api_diagnostic
        APIOperation                            -> azurerm_api_management_api_operation
        APIOperationPolicy                      -> azurerm_api_management_api_operation_policy
        APIOperationTag                         -> azurerm_api_management_api_operation_tag
        APIPolicy                               -> azurerm_api_management_api_policy
        APIRelease                              -> azurerm_api_management_api_release
        APISchema                               -> azurerm_api_management_api_schema
        APIVersionSet                           -> azurerm_api_management_api_version_set
        AuthorizationServer                     -> azurerm_api_management_authorization_server
        Backend                                 -> azurerm_api_management_backend
        Certificate                             -> azurerm_api_management_certificate
        CustomDomain                            -> azurerm_api_management_custom_domain
        Diagnostic                              -> azurerm_api_management_diagnostic
        EmailTemplate                           -> azurerm_api_management_email_template
        Gateway                                 -> azurerm_api_management_gateway
        GatewayAPI                              -> azurerm_api_management_gateway_api
        IdentityProviderAAD                     -> azurerm_api_management_identity_provider_aad
        IdentityProviderAADB2C                  -> azurerm_api_management_identity_provider_aadb2c
        IdentityProviderFacebook                -> azurerm_api_management_identity_provider_facebook
        IdentityProviderGoogle                  -> azurerm_api_management_identity_provider_google
        IdentityProviderMicrosoft               -> azurerm_api_management_identity_provider_microsoft
        IdentityProviderTwitter                 -> azurerm_api_management_identity_provider_twitter
        Logger                                  -> azurerm_api_management_logger
        Management                              -> azurerm_api_management
        NamedValue                              -> azurerm_api_management_named_value
        NotificationRecipientEmail              -> azurerm_api_management_notification_recipient_email
        OpenIDConnectProvider                   -> azurerm_api_management_openid_connect_provider
        Policy                                  -> azurerm_api_management_policy
        Product                                 -> azurerm_api_management_product
        ProductAPI                              -> azurerm_api_management_product_api
        ProductPolicy                           -> azurerm_api_management_product_policy
        Property                                -> azurerm_api_management_property
        RedisCache                              -> azurerm_api_management_redis_cache
        Subscription                            -> azurerm_api_management_subscription
        Tag                                     -> azurerm_api_management_tag
        User                                    -> azurerm_api_management_user

appconfiguration:
        Configuration           -> azurerm_app_configuration
        Key                     -> azurerm_app_configuration_key

appplatform:
        SpringCloudActiveDeployment                     -> azurerm_spring_cloud_active_deployment
        SpringCloudApp                                  -> azurerm_spring_cloud_app
        SpringCloudAppCosmosDBAssociation               -> azurerm_spring_cloud_app_cosmosdb_association
        SpringCloudAppMySQLAssociation                  -> azurerm_spring_cloud_app_mysql_association
        SpringCloudAppRedisAssociation                  -> azurerm_spring_cloud_app_redis_association
        SpringCloudCertificate                          -> azurerm_spring_cloud_certificate
        SpringCloudCustomDomain                         -> azurerm_spring_cloud_custom_domain
        SpringCloudJavaDeployment                       -> azurerm_spring_cloud_java_deployment
        SpringCloudService                              -> azurerm_spring_cloud_service

attestation:
        Provider        -> azurerm_attestation_provider

authorization:
        ManagementGroupPolicyAssignment         -> azurerm_management_group_policy_assignment
        ManagementLock                          -> azurerm_management_lock
        PolicyAssignment                        -> azurerm_policy_assignment
        PolicyDefinition                        -> azurerm_policy_definition
        PolicySetDefinition                     -> azurerm_policy_set_definition
        ResourceGroupPolicyAssignment           -> azurerm_resource_group_policy_assignment
        ResourcePolicyAssignment                -> azurerm_resource_policy_assignment
        RoleAssignment                          -> azurerm_role_assignment
        RoleDefinition                          -> azurerm_role_definition
        SubscriptionPolicyAssignment            -> azurerm_subscription_policy_assignment

automation:
        Account                                 -> azurerm_automation_account
        Certificate                             -> azurerm_automation_certificate
        Connection                              -> azurerm_automation_connection
        ConnectionCertificate                   -> azurerm_automation_connection_certificate
        ConnectionClassicCertificate            -> azurerm_automation_connection_classic_certificate
        ConnectionServicePrincipal              -> azurerm_automation_connection_service_principal
        Credential                              -> azurerm_automation_credential
        DSCNodeConfiguration                    -> azurerm_automation_dsc_nodeconfiguration
        JobSchedule                             -> azurerm_automation_job_schedule
        Module                                  -> azurerm_automation_module
        RunBook                                 -> azurerm_automation_runbook
        Schedule                                -> azurerm_automation_schedule
        VariableBool                            -> azurerm_automation_variable_bool
        VariableDateTime                        -> azurerm_automation_variable_datetime
        VariableInt                             -> azurerm_automation_variable_int
        VariableString                          -> azurerm_automation_variable_string

avs:
        VMwareCluster                           -> azurerm_vmware_cluster
        VMwareExpressRouteAuthorization         -> azurerm_vmware_express_route_authorization
        VMwarePrivateCloud                      -> azurerm_vmware_private_cloud

azurestackhci:
        Cluster         -> azurerm_stack_hci_cluster

batch:
        Account                 -> azurerm_batch_account
        Application             -> azurerm_batch_application
        Certificate             -> azurerm_batch_certificate
        Job                     -> azurerm_batch_job
        Pool                    -> azurerm_batch_pool

blueprint:
        Assignment              -> azurerm_blueprint_assignment

botservice:
        BotChannelAlexa                         -> azurerm_bot_channel_alexa
        BotChannelDirectLine                    -> azurerm_bot_channel_directline
        BotChannelDirectLineSpeech              -> azurerm_bot_channel_direct_line_speech
        BotChannelEmail                         -> azurerm_bot_channel_email
        BotChannelFacebook                      -> azurerm_bot_channel_facebook
        BotChannelLine                          -> azurerm_bot_channel_line
        BotChannelMSTeams                       -> azurerm_bot_channel_ms_teams
        BotChannelSMS                           -> azurerm_bot_channel_sms
        BotChannelSlack                         -> azurerm_bot_channel_slack
        BotChannelWebChat                       -> azurerm_bot_channel_web_chat
        BotChannelsRegistration                 -> azurerm_bot_channels_registration
        BotConnection                           -> azurerm_bot_connection
        BotWebApp                               -> azurerm_bot_web_app

cache:
        RedisCache                      -> azurerm_redis_cache
        RedisEnterpriseCluster          -> azurerm_redis_enterprise_cluster
        RedisEnterpriseDatabase         -> azurerm_redis_enterprise_database
        RedisFirewallRule               -> azurerm_redis_firewall_rule
        RedisLinkedServer               -> azurerm_redis_linked_server

cdn:
        Endpoint                        -> azurerm_cdn_endpoint
        EndpointCustomDomain            -> azurerm_cdn_endpoint_custom_domain
        Profile                         -> azurerm_cdn_profile

certificateregistration:
        AppServiceCertificateOrder              -> azurerm_app_service_certificate_order

cognitiveservices:
        Account                                 -> azurerm_cognitive_account
        AccountCustomerManagedKey               -> azurerm_cognitive_account_customer_managed_key

communication:
        Service         -> azurerm_communication_service

compute:
        AvailabilitySet                                         -> azurerm_availability_set
        DedicatedHost                                           -> azurerm_dedicated_host
        DiskAccess                                              -> azurerm_disk_access
        DiskEncryptionSet                                       -> azurerm_disk_encryption_set
        Image                                                   -> azurerm_image
        LinuxVirtualMachine                                     -> azurerm_linux_virtual_machine
        LinuxVirtualMachineScaleSet                             -> azurerm_linux_virtual_machine_scale_set
        ManagedDisk                                             -> azurerm_managed_disk
        OrchestratedVirtualMachineScaleSet                      -> azurerm_orchestrated_virtual_machine_scale_set
        PolicyVirtualMachineConfigurationAssignment             -> azurerm_policy_virtual_machine_configuration_assignment
        ProximityPlacementGroup                                 -> azurerm_proximity_placement_group
        SSHPublicKey                                            -> azurerm_ssh_public_key
        SharedImage                                             -> azurerm_shared_image
        SharedImageGallery                                      -> azurerm_shared_image_gallery
        SharedImageVersion                                      -> azurerm_shared_image_version
        Snapshot                                                -> azurerm_snapshot
        WindowsVirtualMachine                                   -> azurerm_windows_virtual_machine
        WindowsVirtualMachineScaleSet                           -> azurerm_windows_virtual_machine_scale_set

consumption:
        BudgetResourceGroup             -> azurerm_consumption_budget_resource_group
        BudgetSubscription              -> azurerm_consumption_budget_subscription

containerregistry:
        Registry        -> azurerm_container_registry
        ScopeMap        -> azurerm_container_registry_scope_map
        Token           -> azurerm_container_registry_token
        Webhook         -> azurerm_container_registry_webhook

containerservice:
        KubernetesCluster                       -> azurerm_kubernetes_cluster
        KubernetesClusterNodePool               -> azurerm_kubernetes_cluster_node_pool

cosmosdb:
        Account                         -> azurerm_cosmosdb_account
        CassandraKeySpace               -> azurerm_cosmosdb_cassandra_keyspace
        CassandraTable                  -> azurerm_cosmosdb_cassandra_table
        GremlinDatabase                 -> azurerm_cosmosdb_gremlin_database
        GremlinGraph                    -> azurerm_cosmosdb_gremlin_graph
        MongoCollection                 -> azurerm_cosmosdb_mongo_collection
        MongoDatabase                   -> azurerm_cosmosdb_mongo_database
        NotebookWorkspace               -> azurerm_cosmosdb_notebook_workspace
        SQLContainer                    -> azurerm_cosmosdb_sql_container
        SQLDatabase                     -> azurerm_cosmosdb_sql_database
        SQLFunction                     -> azurerm_cosmosdb_sql_function
        SQLStoredProcedure              -> azurerm_cosmosdb_sql_stored_procedure
        SQLTrigger                      -> azurerm_cosmosdb_sql_trigger
        Table                           -> azurerm_cosmosdb_table

costmanagement:
        ExportResourceGroup             -> azurerm_cost_management_export_resource_group

customproviders:
        CustomProvider          -> azurerm_custom_provider

databoxedge:
        Device          -> azurerm_databox_edge_device
        Order           -> azurerm_databox_edge_order

databricks:
        Workspace                               -> azurerm_databricks_workspace
        WorkspaceCustomerManagedKey             -> azurerm_databricks_workspace_customer_managed_key

datafactory:
        CustomDataSet                           -> azurerm_data_factory_custom_dataset
        DataFlow                                -> azurerm_data_factory_data_flow
        DataSetAzureBlob                        -> azurerm_data_factory_dataset_azure_blob
        DataSetBinary                           -> azurerm_data_factory_dataset_binary
        DataSetCosmosDBSQLAPI                   -> azurerm_data_factory_dataset_cosmosdb_sqlapi
        DataSetDelimitedText                    -> azurerm_data_factory_dataset_delimited_text
        DataSetHTTP                             -> azurerm_data_factory_dataset_http
        DataSetJSON                             -> azurerm_data_factory_dataset_json
        DataSetMySQL                            -> azurerm_data_factory_dataset_mysql
        DataSetParquet                          -> azurerm_data_factory_dataset_parquet
        DataSetPostgreSQL                       -> azurerm_data_factory_dataset_postgresql
        DataSetSQLServerTable                   -> azurerm_data_factory_dataset_sql_server_table
        DataSetSnowflake                        -> azurerm_data_factory_dataset_snowflake
        Factory                                 -> azurerm_data_factory
        IntegrationRuntimeAzure                 -> azurerm_data_factory_integration_runtime_azure
        IntegrationRuntimeAzureSSIS             -> azurerm_data_factory_integration_runtime_azure_ssis
        IntegrationRuntimeManaged               -> azurerm_data_factory_integration_runtime_managed
        IntegrationRuntimeSelfHosted            -> azurerm_data_factory_integration_runtime_self_hosted
        LinkedCustomService                     -> azurerm_data_factory_linked_custom_service
        LinkedServiceAzureBlobStorage           -> azurerm_data_factory_linked_service_azure_blob_storage
        LinkedServiceAzureDatabricks            -> azurerm_data_factory_linked_service_azure_databricks
        LinkedServiceAzureFileStorage           -> azurerm_data_factory_linked_service_azure_file_storage
        LinkedServiceAzureFunction              -> azurerm_data_factory_linked_service_azure_function
        LinkedServiceAzureSQLDatabase           -> azurerm_data_factory_linked_service_azure_sql_database
        LinkedServiceAzureSearch                -> azurerm_data_factory_linked_service_azure_search
        LinkedServiceAzureTableStorage          -> azurerm_data_factory_linked_service_azure_table_storage
        LinkedServiceCosmosDB                   -> azurerm_data_factory_linked_service_cosmosdb
        LinkedServiceDataLakeStorageGen2        -> azurerm_data_factory_linked_service_data_lake_storage_gen2
        LinkedServiceKeyVault                   -> azurerm_data_factory_linked_service_key_vault
        LinkedServiceKusto                      -> azurerm_data_factory_linked_service_kusto
        LinkedServiceMySQL                      -> azurerm_data_factory_linked_service_mysql
        LinkedServiceOData                      -> azurerm_data_factory_linked_service_odata
        LinkedServicePostgreSQL                 -> azurerm_data_factory_linked_service_postgresql
        LinkedServiceSFTP                       -> azurerm_data_factory_linked_service_sftp
        LinkedServiceSQLServer                  -> azurerm_data_factory_linked_service_sql_server
        LinkedServiceSnowflake                  -> azurerm_data_factory_linked_service_snowflake
        LinkedServiceSynapse                    -> azurerm_data_factory_linked_service_synapse
        LinkedServiceWeb                        -> azurerm_data_factory_linked_service_web
        ManagedPrivateEndpoint                  -> azurerm_data_factory_managed_private_endpoint
        Pipeline                                -> azurerm_data_factory_pipeline
        TriggerBlobEvent                        -> azurerm_data_factory_trigger_blob_event
        TriggerCustomEvent                      -> azurerm_data_factory_trigger_custom_event
        TriggerSchedule                         -> azurerm_data_factory_trigger_schedule

datalakeanalytics:
        FirewallRule            -> azurerm_data_lake_analytics_firewall_rule

datalakestore:
        File                            -> azurerm_data_lake_store_file
        FirewallRule                    -> azurerm_data_lake_store_firewall_rule
        Store                           -> azurerm_data_lake_store
        VirtualNetworkRule              -> azurerm_data_lake_store_virtual_network_rule

datamigration:
        DatabaseMigrationProject        -> azurerm_database_migration_project
        DatabaseMigrationService        -> azurerm_database_migration_service

dataprotection:
        BackupInstanceBlobStorage               -> azurerm_data_protection_backup_instance_blob_storage
        BackupInstanceDisk                      -> azurerm_data_protection_backup_instance_disk
        BackupInstancePostgreSQL                -> azurerm_data_protection_backup_instance_postgresql
        BackupPolicyBlobStorage                 -> azurerm_data_protection_backup_policy_blob_storage
        BackupPolicyDisk                        -> azurerm_data_protection_backup_policy_disk
        BackupPolicyPostgreSQL                  -> azurerm_data_protection_backup_policy_postgresql
        BackupVault                             -> azurerm_data_protection_backup_vault

datashare:
        Account                         -> azurerm_data_share_account
        DataSetBlobStorage              -> azurerm_data_share_dataset_blob_storage
        DataSetDataLakeGen1             -> azurerm_data_share_dataset_data_lake_gen1
        DataSetDataLakeGen2             -> azurerm_data_share_dataset_data_lake_gen2
        DataSetKustoCluster             -> azurerm_data_share_dataset_kusto_cluster
        DataSetKustoDatabase            -> azurerm_data_share_dataset_kusto_database
        DataShare                       -> azurerm_data_share

dbformariadb:
        Configuration                   -> azurerm_mariadb_configuration
        Database                        -> azurerm_mariadb_database
        FirewallRule                    -> azurerm_mariadb_firewall_rule
        Server                          -> azurerm_mariadb_server
        VirtualNetworkRule              -> azurerm_mariadb_virtual_network_rule

dbformysql:
        ActiveDirectoryAdministrator            -> azurerm_mysql_active_directory_administrator
        Configuration                           -> azurerm_mysql_configuration
        Database                                -> azurerm_mysql_database
        FirewallRule                            -> azurerm_mysql_firewall_rule
        Server                                  -> azurerm_mysql_server
        ServerKey                               -> azurerm_mysql_server_key
        VirtualNetworkRule                      -> azurerm_mysql_virtual_network_rule

dbforpostgresql:
        ActiveDirectoryAdministrator            -> azurerm_postgresql_active_directory_administrator
        Configuration                           -> azurerm_postgresql_configuration
        Database                                -> azurerm_postgresql_database
        FirewallRule                            -> azurerm_postgresql_firewall_rule
        FlexibleServer                          -> azurerm_postgresql_flexible_server
        FlexibleServerConfiguration             -> azurerm_postgresql_flexible_server_configuration
        FlexibleServerDatabase                  -> azurerm_postgresql_flexible_server_database
        FlexibleServerFirewallRule              -> azurerm_postgresql_flexible_server_firewall_rule
        Server                                  -> azurerm_postgresql_server
        VirtualNetworkRule                      -> azurerm_postgresql_virtual_network_rule

devices:
        IOTHub                                  -> azurerm_iothub
        IOTHubConsumerGroup                     -> azurerm_iothub_consumer_group
        IOTHubDPS                               -> azurerm_iothub_dps
        IOTHubDPSCertificate                    -> azurerm_iothub_dps_certificate
        IOTHubDPSSharedAccessPolicy             -> azurerm_iothub_dps_shared_access_policy
        IOTHubEndpointEventHub                  -> azurerm_iothub_endpoint_eventhub
        IOTHubEndpointServiceBusQueue           -> azurerm_iothub_endpoint_servicebus_queue
        IOTHubEndpointServiceBusTopic           -> azurerm_iothub_endpoint_servicebus_topic
        IOTHubEndpointStorageContainer          -> azurerm_iothub_endpoint_storage_container
        IOTHubEnrichment                        -> azurerm_iothub_enrichment
        IOTHubFallbackRoute                     -> azurerm_iothub_fallback_route
        IOTHubRoute                             -> azurerm_iothub_route
        IOTHubSharedAccessPolicy                -> azurerm_iothub_shared_access_policy

devspaces:
        Controller              -> azurerm_devspace_controller

devtestlab:
        GlobalVMShutdownSchedule        -> azurerm_dev_test_global_vm_shutdown_schedule
        Lab                             -> azurerm_dev_test_lab
        LinuxVirtualMachine             -> azurerm_dev_test_linux_virtual_machine
        Policy                          -> azurerm_dev_test_policy
        Schedule                        -> azurerm_dev_test_schedule
        VirtualNetwork                  -> azurerm_dev_test_virtual_network
        WindowsVirtualMachine           -> azurerm_dev_test_windows_virtual_machine

digitaltwins:
        EndpointEventGrid               -> azurerm_digital_twins_endpoint_eventgrid
        EndpointEventHub                -> azurerm_digital_twins_endpoint_eventhub
        EndpointServiceBus              -> azurerm_digital_twins_endpoint_servicebus
        Instance                        -> azurerm_digital_twins_instance

eventgrid:
        Domain                                  -> azurerm_eventgrid_domain
        DomainTopic                             -> azurerm_eventgrid_domain_topic
        EventSubscription                       -> azurerm_eventgrid_event_subscription
        SystemTopic                             -> azurerm_eventgrid_system_topic
        SystemTopicEventSubscription            -> azurerm_eventgrid_system_topic_event_subscription
        Topic                                   -> azurerm_eventgrid_topic

eventhub:
        AuthorizationRule                       -> azurerm_eventhub_authorization_rule
        Cluster                                 -> azurerm_eventhub_cluster
        ConsumerGroup                           -> azurerm_eventhub_consumer_group
        EventHub                                -> azurerm_eventhub
        Namespace                               -> azurerm_eventhub_namespace
        NamespaceAuthorizationRule              -> azurerm_eventhub_namespace_authorization_rule
        NamespaceCustomerManagedKey             -> azurerm_eventhub_namespace_customer_managed_key
        NamespaceDisasterRecoveryConfig         -> azurerm_eventhub_namespace_disaster_recovery_config

hardwaresecuritymodules:
        DedicatedHardwareSecurityModule         -> azurerm_dedicated_hardware_security_module

hdinsight:
        HBaseCluster                    -> azurerm_hdinsight_hbase_cluster
        HadoopCluster                   -> azurerm_hdinsight_hadoop_cluster
        InteractiveQueryCluster         -> azurerm_hdinsight_interactive_query_cluster
        KafkaCluster                    -> azurerm_hdinsight_kafka_cluster
        MLServicesCluster               -> azurerm_hdinsight_ml_services_cluster
        RServerCluster                  -> azurerm_hdinsight_rserver_cluster
        SparkCluster                    -> azurerm_hdinsight_spark_cluster
        StormCluster                    -> azurerm_hdinsight_storm_cluster

healthbot:
        HealthBot               -> azurerm_healthbot

healthcareapis:
        HealthcareService               -> azurerm_healthcare_service

insights:
        ApplicationInsights                             -> azurerm_application_insights
        ApplicationInsightsAPIKey                       -> azurerm_application_insights_api_key
        ApplicationInsightsAnalyticsItem                -> azurerm_application_insights_analytics_item
        ApplicationInsightsSmartDetectionRule           -> azurerm_application_insights_smart_detection_rule
        ApplicationInsightsWebTest                      -> azurerm_application_insights_web_test
        MonitorActionGroup                              -> azurerm_monitor_action_group
        MonitorActivityLogAlert                         -> azurerm_monitor_activity_log_alert
        MonitorAutoscaleSetting                         -> azurerm_monitor_autoscale_setting
        MonitorDiagnosticSetting                        -> azurerm_monitor_diagnostic_setting
        MonitorMetricAlert                              -> azurerm_monitor_metric_alert
        MonitorScheduledQueryRulesAlert                 -> azurerm_monitor_scheduled_query_rules_alert
        MonitorScheduledQueryRulesLog                   -> azurerm_monitor_scheduled_query_rules_log

iotcentral:
        Application             -> azurerm_iotcentral_application

keyvault:
        AccessPolicy                                    -> azurerm_key_vault_access_policy
        Certificate                                     -> azurerm_key_vault_certificate
        CertificateIssuer                               -> azurerm_key_vault_certificate_issuer
        Key                                             -> azurerm_key_vault_key
        ManagedHardwareSecurityModule                   -> azurerm_key_vault_managed_hardware_security_module
        ManagedStorageAccount                           -> azurerm_key_vault_managed_storage_account
        ManagedStorageAccountSASTokenDefinition         -> azurerm_key_vault_managed_storage_account_sas_token_definition
        Secret                                          -> azurerm_key_vault_secret
        Vault                                           -> azurerm_key_vault

kusto:
        AttachedDatabaseConfiguration           -> azurerm_kusto_attached_database_configuration
        Cluster                                 -> azurerm_kusto_cluster
        ClusterCustomerManagedKey               -> azurerm_kusto_cluster_customer_managed_key
        ClusterPrincipalAssignment              -> azurerm_kusto_cluster_principal_assignment
        Database                                -> azurerm_kusto_database
        DatabasePrincipal                       -> azurerm_kusto_database_principal
        DatabasePrincipalAssignment             -> azurerm_kusto_database_principal_assignment
        EventGridDataConnection                 -> azurerm_kusto_eventgrid_data_connection
        EventHubDataConnection                  -> azurerm_kusto_eventhub_data_connection
        IOTHubDataConnection                    -> azurerm_kusto_iothub_data_connection

loganalytics:
        Workspace               -> azurerm_log_analytics_workspace

logic:
        AppActionCustom                                 -> azurerm_logic_app_action_custom
        AppActionHTTP                                   -> azurerm_logic_app_action_http
        AppIntegrationAccount                           -> azurerm_logic_app_integration_account
        AppIntegrationAccountAgreement                  -> azurerm_logic_app_integration_account_agreement
        AppIntegrationAccountAssembly                   -> azurerm_logic_app_integration_account_assembly
        AppIntegrationAccountBatchConfiguration         -> azurerm_logic_app_integration_account_batch_configuration
        AppIntegrationAccountMap                        -> azurerm_logic_app_integration_account_map
        AppIntegrationAccountPartner                    -> azurerm_logic_app_integration_account_partner
        AppIntegrationAccountSchema                     -> azurerm_logic_app_integration_account_schema
        AppIntegrationAccountSession                    -> azurerm_logic_app_integration_account_session
        AppTriggerCustom                                -> azurerm_logic_app_trigger_custom
        AppTriggerHTTPRequest                           -> azurerm_logic_app_trigger_http_request
        AppTriggerRecurrence                            -> azurerm_logic_app_trigger_recurrence
        AppWorkflow                                     -> azurerm_logic_app_workflow
        IntegrationServiceEnvironment                   -> azurerm_integration_service_environment

machinelearningservices:
        ComputeCluster          -> azurerm_machine_learning_compute_cluster
        ComputeInstance         -> azurerm_machine_learning_compute_instance
        SynapseSpark            -> azurerm_machine_learning_synapse_spark
        Workspace               -> azurerm_machine_learning_workspace

maintenance:
        MaintenanceAssignmentDedicatedHost                      -> azurerm_maintenance_assignment_dedicated_host
        MaintenanceAssignmentVirtualMachine                     -> azurerm_maintenance_assignment_virtual_machine
        MaintenanceAssignmentVirtualMachineScaleSet             -> azurerm_maintenance_assignment_virtual_machine_scale_set
        MaintenanceConfiguration                                -> azurerm_maintenance_configuration

managedidentity:
        UserAssignedIdentity            -> azurerm_user_assigned_identity

managedservices:
        LighthouseAssignment            -> azurerm_lighthouse_assignment
        LighthouseDefinition            -> azurerm_lighthouse_definition

management:
        ManagementGroup         -> azurerm_management_group

maps:
        Account         -> azurerm_maps_account

marketplaceordering:
        MarketplaceAgreement            -> azurerm_marketplace_agreement

media:
        Asset                           -> azurerm_media_asset
        AssetFilter                     -> azurerm_media_asset_filter
        ContentKeyPolicy                -> azurerm_media_content_key_policy
        Job                             -> azurerm_media_job
        LiveEvent                       -> azurerm_media_live_event
        LiveEventOutput                 -> azurerm_media_live_event_output
        ServicesAccount                 -> azurerm_media_services_account
        StreamingEndpoint               -> azurerm_media_streaming_endpoint
        StreamingLocator                -> azurerm_media_streaming_locator
        StreamingPolicy                 -> azurerm_media_streaming_policy
        Transform                       -> azurerm_media_transform
        VideoAnalyzer                   -> azurerm_video_analyzer
        VideoAnalyzerEdgeModule         -> azurerm_video_analyzer_edge_module

mixedreality:
        SpatialAnchorsAccount           -> azurerm_spatial_anchors_account

netapp:
        Account         -> azurerm_netapp_account
        Pool            -> azurerm_netapp_pool
        Snapshot        -> azurerm_netapp_snapshot
        Volume          -> azurerm_netapp_volume

network:
        ApplicationGateway                                      -> azurerm_application_gateway
        ApplicationSecurityGroup                                -> azurerm_application_security_group
        BastionHost                                             -> azurerm_bastion_host
        ConnectionMonitor                                       -> azurerm_network_connection_monitor
        DDOSProtectionPlan                                      -> azurerm_network_ddos_protection_plan
        DNSAAAARecord                                           -> azurerm_dns_aaaa_record
        DNSARecord                                              -> azurerm_dns_a_record
        DNSCAARecord                                            -> azurerm_dns_caa_record
        DNSCNAMERecord                                          -> azurerm_dns_cname_record
        DNSMXRecord                                             -> azurerm_dns_mx_record
        DNSNSRecord                                             -> azurerm_dns_ns_record
        DNSPTRRecord                                            -> azurerm_dns_ptr_record
        DNSSRVRecord                                            -> azurerm_dns_srv_record
        DNSTXTRecord                                            -> azurerm_dns_txt_record
        DNSZone                                                 -> azurerm_dns_zone
        ExpressRouteCircuit                                     -> azurerm_express_route_circuit
        ExpressRouteCircuitAuthorization                        -> azurerm_express_route_circuit_authorization
        ExpressRouteCircuitConnection                           -> azurerm_express_route_circuit_connection
        ExpressRouteCircuitPeering                              -> azurerm_express_route_circuit_peering
        ExpressRouteConnection                                  -> azurerm_express_route_connection
        ExpressRouteGateway                                     -> azurerm_express_route_gateway
        ExpressRoutePort                                        -> azurerm_express_route_port
        Firewall                                                -> azurerm_firewall
        FirewallApplicationRuleCollection                       -> azurerm_firewall_application_rule_collection
        FirewallNATRuleCollection                               -> azurerm_firewall_nat_rule_collection
        FirewallNetworkRuleCollection                           -> azurerm_firewall_network_rule_collection
        FirewallPolicy                                          -> azurerm_firewall_policy
        FirewallPolicyRuleCollectionGroup                       -> azurerm_firewall_policy_rule_collection_group
        FrontDoor                                               -> azurerm_frontdoor
        FrontdoorCustomHTTPSConfiguration                       -> azurerm_frontdoor_custom_https_configuration
        FrontdoorFirewallPolicy                                 -> azurerm_frontdoor_firewall_policy
        FrontdoorRulesEngine                                    -> azurerm_frontdoor_rules_engine
        IPGroup                                                 -> azurerm_ip_group
        InterfaceApplicationSecurityGroupAssociation            -> azurerm_network_interface_application_security_group_association
        InterfaceBackendAddressPoolAssociation                  -> azurerm_network_interface_backend_address_pool_association
        InterfaceNATRuleAssociation                             -> azurerm_network_interface_nat_rule_association
        InterfaceSecurityGroupAssociation                       -> azurerm_network_interface_security_group_association
        LBBackendAddressPool                                    -> azurerm_lb_backend_address_pool
        LBBackendAddressPoolAddress                             -> azurerm_lb_backend_address_pool_address
        LBNATPool                                               -> azurerm_lb_nat_pool
        LBNATRule                                               -> azurerm_lb_nat_rule
        LBOutboundRule                                          -> azurerm_lb_outbound_rule
        LBProbe                                                 -> azurerm_lb_probe
        LBRule                                                  -> azurerm_lb_rule
        LoadBalancer                                            -> azurerm_lb
        LocalNetworkGateway                                     -> azurerm_local_network_gateway
        NATGateway                                              -> azurerm_nat_gateway
        NATGatewayPublicIPAssociation                           -> azurerm_nat_gateway_public_ip_association
        NATGatewayPublicIPPrefixAssociation                     -> azurerm_nat_gateway_public_ip_prefix_association
        NetworkInterface                                        -> azurerm_network_interface
        NetworkPacketCapture                                    -> azurerm_network_packet_capture
        PacketCapture                                           -> azurerm_packet_capture
        PointToSiteVPNGateway                                   -> azurerm_point_to_site_vpn_gateway
        PrivateDNSAAAARecord                                    -> azurerm_private_dns_aaaa_record
        PrivateDNSARecord                                       -> azurerm_private_dns_a_record
        PrivateDNSCNAMERecord                                   -> azurerm_private_dns_cname_record
        PrivateDNSMXRecord                                      -> azurerm_private_dns_mx_record
        PrivateDNSPTRRecord                                     -> azurerm_private_dns_ptr_record
        PrivateDNSSRVRecord                                     -> azurerm_private_dns_srv_record
        PrivateDNSTXTRecord                                     -> azurerm_private_dns_txt_record
        PrivateDNSZone                                          -> azurerm_private_dns_zone
        PrivateDNSZoneVirtualNetworkLink                        -> azurerm_private_dns_zone_virtual_network_link
        PrivateEndpoint                                         -> azurerm_private_endpoint
        PrivateLinkService                                      -> azurerm_private_link_service
        Profile                                                 -> azurerm_network_profile
        PublicIP                                                -> azurerm_public_ip
        PublicIPPrefix                                          -> azurerm_public_ip_prefix
        SecurityGroup                                           -> azurerm_network_security_group
        Subnet                                                  -> azurerm_subnet
        SubnetNATGatewayAssociation                             -> azurerm_subnet_nat_gateway_association
        SubnetNetworkSecurityGroupAssociation                   -> azurerm_subnet_network_security_group_association
        SubnetRouteTableAssociation                             -> azurerm_subnet_route_table_association
        SubnetServiceEndpointStoragePolicy                      -> azurerm_subnet_service_endpoint_storage_policy
        TrafficManagerEndpoint                                  -> azurerm_traffic_manager_endpoint
        TrafficManagerProfile                                   -> azurerm_traffic_manager_profile
        VPNGateway                                              -> azurerm_vpn_gateway
        VPNGatewayConnection                                    -> azurerm_vpn_gateway_connection
        VPNServerConfiguration                                  -> azurerm_vpn_server_configuration
        VPNSite                                                 -> azurerm_vpn_site
        VirtualNetwork                                          -> azurerm_virtual_network
        VirtualNetworkGateway                                   -> azurerm_virtual_network_gateway
        VirtualNetworkGatewayConnection                         -> azurerm_virtual_network_gateway_connection
        VirtualNetworkPeering                                   -> azurerm_virtual_network_peering
        VirtualWAN                                              -> azurerm_virtual_wan
        Watcher                                                 -> azurerm_network_watcher
        WatcherFlowLog                                          -> azurerm_network_watcher_flow_log
        WebApplicationFirewallPolicy                            -> azurerm_web_application_firewall_policy

notificationhubs:
        AuthorizationRule               -> azurerm_notification_hub_authorization_rule
        Namespace                       -> azurerm_notification_hub_namespace
        NotificationHub                 -> azurerm_notification_hub

operationalinsights:
        LogAnalyticsCluster                                     -> azurerm_log_analytics_cluster
        LogAnalyticsClusterCustomerManagedKey                   -> azurerm_log_analytics_cluster_customer_managed_key
        LogAnalyticsDataExportRule                              -> azurerm_log_analytics_data_export_rule
        LogAnalyticsDataSourceWindowsEvent                      -> azurerm_log_analytics_datasource_windows_event
        LogAnalyticsDataSourceWindowsPerformanceCounter         -> azurerm_log_analytics_datasource_windows_performance_counter
        LogAnalyticsLinkedService                               -> azurerm_log_analytics_linked_service
        LogAnalyticsLinkedStorageAccount                        -> azurerm_log_analytics_linked_storage_account
        LogAnalyticsSavedSearch                                 -> azurerm_log_analytics_saved_search
        LogAnalyticsSolution                                    -> azurerm_log_analytics_solution

policyinsights:
        PolicyRemediation               -> azurerm_policy_remediation

portal:
        Dashboard                       -> azurerm_dashboard
        TenantConfiguration             -> azurerm_portal_tenant_configuration

powerbidedicated:
        PowerBIEmbedded         -> azurerm_powerbi_embedded

purview:
        Account         -> azurerm_purview_account

recoveryservices:
        BackupContainerStorageAccount                   -> azurerm_backup_container_storage_account
        BackupPolicyFileShare                           -> azurerm_backup_policy_file_share
        BackupPolicyVM                                  -> azurerm_backup_policy_vm
        BackupProtectedFileShare                        -> azurerm_backup_protected_file_share
        BackupProtectedVM                               -> azurerm_backup_protected_vm
        SiteRecoveryFabric                              -> azurerm_site_recovery_fabric
        SiteRecoveryNetworkMapping                      -> azurerm_site_recovery_network_mapping
        SiteRecoveryProtectionContainer                 -> azurerm_site_recovery_protection_container
        SiteRecoveryProtectionContainerMapping          -> azurerm_site_recovery_protection_container_mapping
        SiteRecoveryReplicatedVM                        -> azurerm_site_recovery_replicated_vm
        SiteRecoveryReplicationPolicy                   -> azurerm_site_recovery_replication_policy
        Vault                                           -> azurerm_recovery_services_vault

relay:
        HybridConnection                                -> azurerm_relay_hybrid_connection
        HybridConnectionAuthorizationRule               -> azurerm_relay_hybrid_connection_authorization_rule
        Namespace                                       -> azurerm_relay_namespace
        NamespaceAuthorizationRule                      -> azurerm_relay_namespace_authorization_rule

resources:
        ManagementGroupSubscriptionAssociation          -> azurerm_management_group_subscription_association
        ManagementGroupTemplateDeployment               -> azurerm_management_group_template_deployment
        ResourceGroupTemplateDeployment                 -> azurerm_resource_group_template_deployment
        SubscriptionTemplateDeployment                  -> azurerm_subscription_template_deployment
        TemplateDeployment                              -> azurerm_template_deployment
        TenantTemplateDeployment                        -> azurerm_tenant_template_deployment

search:
        Service         -> azurerm_search_service

security:
        AdvancedThreatProtection                                -> azurerm_advanced_threat_protection
        IOTSecurityDeviceGroup                                  -> azurerm_iot_security_device_group
        IOTSecuritySolution                                     -> azurerm_iot_security_solution
        SecurityCenterAssessment                                -> azurerm_security_center_assessment
        SecurityCenterAssessmentMetadata                        -> azurerm_security_center_assessment_metadata
        SecurityCenterAssessmentPolicy                          -> azurerm_security_center_assessment_policy
        SecurityCenterAutoProvisioning                          -> azurerm_security_center_auto_provisioning
        SecurityCenterContact                                   -> azurerm_security_center_contact
        SecurityCenterServerVulnerabilityAssessment             -> azurerm_security_center_server_vulnerability_assessment
        SecurityCenterSetting                                   -> azurerm_security_center_setting
        SecurityCenterSubscriptionPricing                       -> azurerm_security_center_subscription_pricing
        SecurityCenterWorkspace                                 -> azurerm_security_center_workspace

securityinsights:
        SentinelAlertRuleFusion                                         -> azurerm_sentinel_alert_rule_fusion
        SentinelAlertRuleMSSecurityIncident                             -> azurerm_sentinel_alert_rule_ms_security_incident
        SentinelAlertRuleMachineLearningBehaviorAnalytics               -> azurerm_sentinel_alert_rule_machine_learning_behavior_analytics
        SentinelAlertRuleScheduled                                      -> azurerm_sentinel_alert_rule_scheduled
        SentinelDataConnectorAWSCloudTrail                              -> azurerm_sentinel_data_connector_aws_cloud_trail
        SentinelDataConnectorAzureActiveDirectory                       -> azurerm_sentinel_data_connector_azure_active_directory
        SentinelDataConnectorAzureAdvancedThreatProtection              -> azurerm_sentinel_data_connector_azure_advanced_threat_protection
        SentinelDataConnectorAzureSecurityCenter                        -> azurerm_sentinel_data_connector_azure_security_center
        SentinelDataConnectorMicrosoftCloudAppSecurity                  -> azurerm_sentinel_data_connector_microsoft_cloud_app_security
        SentinelDataConnectorOffice365                                  -> azurerm_sentinel_data_connector_office_365
        SentinelDataConnectorThreatIntelligence                         -> azurerm_sentinel_data_connector_threat_intelligence

servicebus:
        Namespace                               -> azurerm_servicebus_namespace
        NamespaceAuthorizationRule              -> azurerm_servicebus_namespace_authorization_rule
        NamespaceDisasterRecoveryConfig         -> azurerm_servicebus_namespace_disaster_recovery_config
        NamespaceNetworkRuleSet                 -> azurerm_servicebus_namespace_network_rule_set
        Queue                                   -> azurerm_servicebus_queue
        QueueAuthorizationRule                  -> azurerm_servicebus_queue_authorization_rule
        Subscription                            -> azurerm_servicebus_subscription
        SubscriptionRule                        -> azurerm_servicebus_subscription_rule
        Topic                                   -> azurerm_servicebus_topic
        TopicAuthorizationRule                  -> azurerm_servicebus_topic_authorization_rule

servicefabric:
        Cluster         -> azurerm_service_fabric_cluster

servicefabricmesh:
        Application             -> azurerm_service_fabric_mesh_application
        LocalNetwork            -> azurerm_service_fabric_mesh_local_network
        Secret                  -> azurerm_service_fabric_mesh_secret
        SecretValue             -> azurerm_service_fabric_mesh_secret_value

signalrservice:
        NetworkACL              -> azurerm_signalr_service_network_acl
        Service                 -> azurerm_signalr_service

solutions:
        ManagedApplication                      -> azurerm_managed_application
        ManagedApplicationDefinition            -> azurerm_managed_application_definition

sql:
        ActiveDirectoryAdministrator                            -> azurerm_sql_active_directory_administrator
        Database                                                -> azurerm_sql_database
        ElasticPool                                             -> azurerm_sql_elasticpool
        FirewallRule                                            -> azurerm_sql_firewall_rule
        MSSQLDatabase                                           -> azurerm_mssql_database
        MSSQLDatabaseExtendedAuditingPolicy                     -> azurerm_mssql_database_extended_auditing_policy
        MSSQLDatabaseVulnerabilityAssessmentRuleBaseline        -> azurerm_mssql_database_vulnerability_assessment_rule_baseline
        MSSQLElasticPool                                        -> azurerm_mssql_elasticpool
        MSSQLFailoverGroup                                      -> azurerm_mssql_failover_group
        MSSQLFirewallRule                                       -> azurerm_mssql_firewall_rule
        MSSQLJobAgent                                           -> azurerm_mssql_job_agent
        MSSQLJobCredential                                      -> azurerm_mssql_job_credential
        MSSQLServer                                             -> azurerm_mssql_server
        MSSQLServerSecurityAlertPolicy                          -> azurerm_mssql_server_security_alert_policy
        MSSQLServerTransparentDataEncryption                    -> azurerm_mssql_server_transparent_data_encryption
        MSSQLServerVulnerabilityAssessment                      -> azurerm_mssql_server_vulnerability_assessment
        MSSQLVirtualNetworkRule                                 -> azurerm_mssql_virtual_network_rule
        ManagedDatabase                                         -> azurerm_sql_managed_database
        ManagedInstance                                         -> azurerm_sql_managed_instance
        Server                                                  -> azurerm_sql_server

sqlvirtualmachine:
        MSSQLVirtualMachine             -> azurerm_mssql_virtual_machine

storage:
        Account                                 -> azurerm_storage_account
        AccountCustomerManagedKey               -> azurerm_storage_account_customer_managed_key
        AccountNetworkRules                     -> azurerm_storage_account_network_rules
        Blob                                    -> azurerm_storage_blob
        BlobInventoryPolicy                     -> azurerm_storage_blob_inventory_policy
        Container                               -> azurerm_storage_container
        DataLakeGen2FileSystem                  -> azurerm_storage_data_lake_gen2_filesystem
        DataLakeGen2Path                        -> azurerm_storage_data_lake_gen2_path
        EncryptionScope                         -> azurerm_storage_encryption_scope
        ManagementPolicy                        -> azurerm_storage_management_policy
        ObjectReplication                       -> azurerm_storage_object_replication
        Queue                                   -> azurerm_storage_queue
        Share                                   -> azurerm_storage_share
        ShareDirectory                          -> azurerm_storage_share_directory
        Table                                   -> azurerm_storage_table
        TableEntity                             -> azurerm_storage_table_entity

storagecache:
        HPCCache                        -> azurerm_hpc_cache
        HPCCacheAccessPolicy            -> azurerm_hpc_cache_access_policy
        HPCCacheBlobNFSTarget           -> azurerm_hpc_cache_blob_nfs_target
        HPCCacheBlobTarget              -> azurerm_hpc_cache_blob_target
        HPCCacheNFSTarget               -> azurerm_hpc_cache_nfs_target

storagesync:
        CloudEndpoint           -> azurerm_storage_sync_cloud_endpoint
        StorageSync             -> azurerm_storage_sync

streamanalytics:
        FunctionJavascriptUDF           -> azurerm_stream_analytics_function_javascript_udf
        Job                             -> azurerm_stream_analytics_job
        OutputBlob                      -> azurerm_stream_analytics_output_blob
        OutputEventHub                  -> azurerm_stream_analytics_output_eventhub
        OutputMSSQL                     -> azurerm_stream_analytics_output_mssql
        OutputServiceBusQueue           -> azurerm_stream_analytics_output_servicebus_queue
        OutputServiceBusTopic           -> azurerm_stream_analytics_output_servicebus_topic
        ReferenceInputBlob              -> azurerm_stream_analytics_reference_input_blob
        StreamInputBlob                 -> azurerm_stream_analytics_stream_input_blob
        StreamInputEventHub             -> azurerm_stream_analytics_stream_input_eventhub
        StreamInputIOTHub               -> azurerm_stream_analytics_stream_input_iothub

synapse:
        FirewallRule                            -> azurerm_synapse_firewall_rule
        IntegrationRuntimeAzure                 -> azurerm_synapse_integration_runtime_azure
        IntegrationRuntimeSelfHosted            -> azurerm_synapse_integration_runtime_self_hosted
        LinkedService                           -> azurerm_synapse_linked_service
        ManagedPrivateEndpoint                  -> azurerm_synapse_managed_private_endpoint
        PrivateLinkHub                          -> azurerm_synapse_private_link_hub
        RoleAssignment                          -> azurerm_synapse_role_assignment
        SQLPool                                 -> azurerm_synapse_sql_pool
        SQLPoolExtendedAuditingPolicy           -> azurerm_synapse_sql_pool_extended_auditing_policy
        SQLPoolSecurityAlertPolicy              -> azurerm_synapse_sql_pool_security_alert_policy
        SQLPoolVulnerabilityAssessment          -> azurerm_synapse_sql_pool_vulnerability_assessment
        SparkPool                               -> azurerm_synapse_spark_pool
        Workspace                               -> azurerm_synapse_workspace
        WorkspaceExtendedAuditingPolicy         -> azurerm_synapse_workspace_extended_auditing_policy
        WorkspaceKey                            -> azurerm_synapse_workspace_key
        WorkspaceSecurityAlertPolicy            -> azurerm_synapse_workspace_security_alert_policy
        WorkspaceVulnerabilityAssessment        -> azurerm_synapse_workspace_vulnerability_assessment

timeseriesinsights:
        AccessPolicy                    -> azurerm_iot_time_series_insights_access_policy
        EventSourceIOTHub               -> azurerm_iot_time_series_insights_event_source_iothub
        Gen2Environment                 -> azurerm_iot_time_series_insights_gen2_environment
        ReferenceDataSet                -> azurerm_iot_time_series_insights_reference_data_set
        StandardEnvironment             -> azurerm_iot_time_series_insights_standard_environment

web:
        AppService                                              -> azurerm_app_service
        AppServiceActiveSlot                                    -> azurerm_app_service_active_slot
        AppServiceCertificate                                   -> azurerm_app_service_certificate
        AppServiceCertificateBinding                            -> azurerm_app_service_certificate_binding
        AppServiceCustomHostNameBinding                         -> azurerm_app_service_custom_hostname_binding
        AppServiceEnvironment                                   -> azurerm_app_service_environment
        AppServiceEnvironmentV3                                 -> azurerm_app_service_environment_v3
        AppServiceHybridConnection                              -> azurerm_app_service_hybrid_connection
        AppServiceManagedCertificate                            -> azurerm_app_service_managed_certificate
        AppServicePlan                                          -> azurerm_app_service_plan
        AppServiceSlot                                          -> azurerm_app_service_slot
        AppServiceSlotVirtualNetworkSwiftConnection             -> azurerm_app_service_slot_virtual_network_swift_connection
        AppServiceSourceControlToken                            -> azurerm_app_service_source_control_token
        AppServiceVirtualNetworkSwiftConnection                 -> azurerm_app_service_virtual_network_swift_connection
        FunctionApp                                             -> azurerm_function_app
        FunctionAppSlot                                         -> azurerm_function_app_slot
        StaticSite                                              -> azurerm_static_site

How has this code been tested

Compiles successfully.

@ulucinar ulucinar force-pushed the fix-108 branch 3 times, most recently from c90d185 to 8dd2520 Compare December 17, 2021 15:01
@ulucinar ulucinar mentioned this pull request Dec 21, 2021
2 tasks
config/apigroup_config.go Outdated Show resolved Hide resolved
config/provider.go Outdated Show resolved Hide resolved
config/apigroup_config.go Outdated Show resolved Hide resolved
config/apigroup_config.go Show resolved Hide resolved
config/apigroup_config.go Show resolved Hide resolved
config/apigroup_config.go Show resolved Hide resolved
// This file is generated
// nolint:misspell
var (
apiGroupMap = map[string]string{
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In Jet AWS and Jet GCP, we opted for a pattern where we selectively keep using the words that were considered as group with ReplaceGroupWords function. For example, if aws_ebs_volume should have ec2 group, we still want to keep ebs word, hence try to get to EBSVolume as kind in ec2 group. Would it be feasible to do a similar thing here as well to reduce number of kind overrides?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It turns out Terraform native Azure provider does not have a flat structure like the native AWS provider. It uses more structure (e.g., interface implementations) for registering resources. Thus, it won't be as straightforward as the AWS version to implement a scheme based on the Terraform package names, though it should still be doable.

But as a defaulting mechanism I also liked the idea of relying on the grouping chosen by Microsoft as discussed here because of low maintenance cost and high consistency with the native (REST) implementation. So we can keep these native provider names as the defaults and provide any manual override configuration under config/<package>.

Copy link
Member

@muvaf muvaf Jan 5, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What I meant was that let's say we have a resource aws_db_instance whose group is overridden by us as rds. So, if we don't override its kind it will be in rds group but with name instance, which means it can collide with aws_rds_instance. Another example is aws_vpc_peering_connection where we use ec2 as group, hence the default kind name is calculated as PeeringConnection under ec2 group, which is less meaningful to users because it should've been VPCPeeringConnection. One example I could think of in this PR is azurerm_key_vault_key where we override the group as keyvault, however, if we don't manually override the kind it will be calculated as VaultKey, which is actually wrong so we need to make it omit 2 words and calculate the kind as Key.

We used that ReplaceGroupWords function as a solution so that we don't have to write all those trivial kind overrides but you can use some other function as well. But it's not really about what group to use, more about the final calculated kind.

Copy link
Collaborator Author

@ulucinar ulucinar Jan 6, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @muvaf for the clarification, I think I had taken it in the broader context. I've implemented a mechanism that defaults to dropping the first (_-separated) token and constructing the Kind name from the rest, and that allows overriding the number of initial tokens to be dropped for the entire group. And for cases where I would like to override only a specific Kind name (and not all the Kind names in the entire group), I have provided custom configurations under the config/<group> folder. The logic is the defaults affecting multiple resources are specified in a common place, but any specific overrides reside under config/<group> together with any other future configuration overrides like references, etc.

I think this logical organization makes sense but I can also copy the implementation in jet aws & gcp and maybe move those specific overrides to a common place like it's done there and remove single-resource kind-only configuration overrides. It looks more like our initial approach of putting all configuration into a single package.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can use the same implementation but it seems like the one you added does the job pretty well already, so all should be fine. Thank you!

- Use Microsoft provider name scraped from the Terraform registry
  as API Group names

Signed-off-by: Alper Rifat Ulucinar <[email protected]>
Signed-off-by: Alper Rifat Ulucinar <[email protected]>
Signed-off-by: Alper Rifat Ulucinar <[email protected]>
Copy link
Member

@muvaf muvaf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you print the whole list and add it to the PR description so that we can examine one by one? Similar to this one crossplane-contrib/provider-jet-gcp#25 (comment)

The following is what needs to be done to make it collapsible:
image

Signed-off-by: Alper Rifat Ulucinar <[email protected]>
@ulucinar
Copy link
Collaborator Author

ulucinar commented Jan 6, 2022

Hi @muvaf,
Please see the PR description for a list of current kind-group mappings.

Copy link
Member

@muvaf muvaf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

azurestackhci:
        StackHCICluster         -> azurerm_stack_hci_cluster -> Cluster?
cognitiveservices:
        CognitiveAccount                                -> azurerm_cognitive_account -> Account?
        CognitiveAccountCustomerManagedKey              -> azurerm_cognitive_account_customer_managed_key -> AccountCustomerManagedKey?
datashare:
        Share                           -> azurerm_data_share -> DataShare? // "Manages a Data Share." from TF docs.
eventhub:
        Hub                                     -> azurerm_eventhub -> EventHub? // "Manages a Event Hubs as a nested resource..." from TF docs.
healthbot:
        Bot             -> azurerm_healthbot -> HealthBot? // "Manages a Healthbot Service." from TF docs.
logic:
        ActionCustom                                    -> azurerm_logic_app_action_custom -> AppActionCustom? (goes for all other resources in logic group)
maintenance:
        DedicatedHost                   -> azurerm_maintenance_assignment_dedicated_host -> MaintenanceDedicatedHost?
        VirtualMachine                  -> azurerm_maintenance_assignment_virtual_machine -> MaintenanceVirtualMachine
        VirtualMachineScaleSet          -> azurerm_maintenance_assignment_virtual_machine_scale_set -> MaintenanceVirtualMachineScaleSet
notificationhubs:
        NotificationHubAuthorizationRule        -> azurerm_notification_hub_authorization_rule -> AuthorizationRule?
        NotificationHubNamespace                -> azurerm_notification_hub_namespace -> Namespace?

operationalinsights:
        Cluster                                         -> azurerm_log_analytics_cluster -> LogAnalyticsCluster (and goes for all others in operationalinsights group)
security:
        Assessment                              -> azurerm_security_center_assessment -> SecurityCenterAssessment? (goes for others too since center is not included in group)
storagesync:
        Sync                    -> azurerm_storage_sync -> StorageSync // "Manages a Storage Sync." from TF docs.

I have some suggestions above, some are more critical than others, though feel free to take whatever you feel suits more since it's hard to have strong opinions about this. LGTM after adresssing! Thanks!

@ulucinar
Copy link
Collaborator Author

ulucinar commented Jan 6, 2022

azurestackhci:
        StackHCICluster         -> azurerm_stack_hci_cluster -> Cluster?
cognitiveservices:
        CognitiveAccount                                -> azurerm_cognitive_account -> Account?
        CognitiveAccountCustomerManagedKey              -> azurerm_cognitive_account_customer_managed_key -> AccountCustomerManagedKey?
datashare:
        Share                           -> azurerm_data_share -> DataShare? // "Manages a Data Share." from TF docs.
eventhub:
        Hub                                     -> azurerm_eventhub -> EventHub? // "Manages a Event Hubs as a nested resource..." from TF docs.
healthbot:
        Bot             -> azurerm_healthbot -> HealthBot? // "Manages a Healthbot Service." from TF docs.
logic:
        ActionCustom                                    -> azurerm_logic_app_action_custom -> AppActionCustom? (goes for all other resources in logic group)
maintenance:
        DedicatedHost                   -> azurerm_maintenance_assignment_dedicated_host -> MaintenanceDedicatedHost?
        VirtualMachine                  -> azurerm_maintenance_assignment_virtual_machine -> MaintenanceVirtualMachine
        VirtualMachineScaleSet          -> azurerm_maintenance_assignment_virtual_machine_scale_set -> MaintenanceVirtualMachineScaleSet
notificationhubs:
        NotificationHubAuthorizationRule        -> azurerm_notification_hub_authorization_rule -> AuthorizationRule?
        NotificationHubNamespace                -> azurerm_notification_hub_namespace -> Namespace?

operationalinsights:
        Cluster                                         -> azurerm_log_analytics_cluster -> LogAnalyticsCluster (and goes for all others in operationalinsights group)
security:
        Assessment                              -> azurerm_security_center_assessment -> SecurityCenterAssessment? (goes for others too since center is not included in group)
storagesync:
        Sync                    -> azurerm_storage_sync -> StorageSync // "Manages a Storage Sync." from TF docs.

I have some suggestions above, some are more critical than others, though feel free to take whatever you feel suits more since it's hard to have strong opinions about this. LGTM after adresssing! Thanks!

Thank you @muvaf for reviewing the mappings. Following your suggestion, I opted for more explicit names ignoring using package names as prefixes. Following are the changes I've made:

azurestackhci:
	Cluster		-> azurerm_stack_hci_cluster

cognitiveservices:
	Account					-> azurerm_cognitive_account
	AccountCustomerManagedKey		-> azurerm_cognitive_account_customer_managed_key

maintenance:
	MaintenanceAssignmentDedicatedHost			-> azurerm_maintenance_assignment_dedicated_host
	MaintenanceAssignmentVirtualMachine			-> azurerm_maintenance_assignment_virtual_machine
	MaintenanceAssignmentVirtualMachineScaleSet		-> azurerm_maintenance_assignment_virtual_machine_scale_set
	MaintenanceConfiguration				-> azurerm_maintenance_configuration

datashare:
	DataShare			-> azurerm_data_share

eventhub:
	EventHub				-> azurerm_eventhub

healthbot:
	HealthBot		-> azurerm_healthbot

logic:
	AppActionCustom					-> azurerm_logic_app_action_custom
	AppActionHTTP					-> azurerm_logic_app_action_http
	AppIntegrationAccount				-> azurerm_logic_app_integration_account
	AppIntegrationAccountAgreement			-> azurerm_logic_app_integration_account_agreement
	AppIntegrationAccountAssembly			-> azurerm_logic_app_integration_account_assembly
	AppIntegrationAccountBatchConfiguration		-> azurerm_logic_app_integration_account_batch_configuration
	AppIntegrationAccountMap			-> azurerm_logic_app_integration_account_map
	AppIntegrationAccountPartner			-> azurerm_logic_app_integration_account_partner
	AppIntegrationAccountSchema			-> azurerm_logic_app_integration_account_schema
	AppIntegrationAccountSession			-> azurerm_logic_app_integration_account_session
	AppTriggerCustom				-> azurerm_logic_app_trigger_custom
	AppTriggerHTTPRequest				-> azurerm_logic_app_trigger_http_request
	AppTriggerRecurrence				-> azurerm_logic_app_trigger_recurrence
	AppWorkflow					-> azurerm_logic_app_workflow

notificationhubs:
	AuthorizationRule		-> azurerm_notification_hub_authorization_rule
	Namespace			-> azurerm_notification_hub_namespace
	NotificationHub			-> azurerm_notification_hub

operationalinsights:
	LogAnalyticsCluster					-> azurerm_log_analytics_cluster
	LogAnalyticsClusterCustomerManagedKey			-> azurerm_log_analytics_cluster_customer_managed_key
	LogAnalyticsDataExportRule				-> azurerm_log_analytics_data_export_rule
	LogAnalyticsDataSourceWindowsEvent			-> azurerm_log_analytics_datasource_windows_event
	LogAnalyticsDataSourceWindowsPerformanceCounter		-> azurerm_log_analytics_datasource_windows_performance_counter
	LogAnalyticsLinkedService				-> azurerm_log_analytics_linked_service
	LogAnalyticsLinkedStorageAccount			-> azurerm_log_analytics_linked_storage_account
	LogAnalyticsSavedSearch					-> azurerm_log_analytics_saved_search
	LogAnalyticsSolution					-> azurerm_log_analytics_solution

security:
	SecurityCenterAssessment				-> azurerm_security_center_assessment
	SecurityCenterAssessmentMetadata			-> azurerm_security_center_assessment_metadata
	SecurityCenterAssessmentPolicy				-> azurerm_security_center_assessment_policy
	SecurityCenterAutoProvisioning				-> azurerm_security_center_auto_provisioning
	SecurityCenterContact					-> azurerm_security_center_contact
	SecurityCenterServerVulnerabilityAssessment		-> azurerm_security_center_server_vulnerability_assessment
	SecurityCenterSetting					-> azurerm_security_center_setting
	SecurityCenterSubscriptionPricing			-> azurerm_security_center_subscription_pricing
	SecurityCenterWorkspace					-> azurerm_security_center_workspace

storagesync:
	StorageSync		-> azurerm_storage_sync

@ulucinar
Copy link
Collaborator Author

ulucinar commented Jan 6, 2022

Thank you @muvaf & @turkenh for reviewing this PR. I have updated the PR description with the latest group2kind mappings. Will merge this PR when tests are green.

In a follow-up PR, we are planning to update the example manifests also.

- Rename certain kinds

Signed-off-by: Alper Rifat Ulucinar <[email protected]>
@ulucinar ulucinar merged commit 89aca1c into crossplane-contrib:main Jan 6, 2022
@ulucinar ulucinar deleted the fix-108 branch January 6, 2022 11:31
@ulucinar ulucinar changed the title API Group configuration for Terraformed resources API Group & Kind configuration for Terraformed resources Jan 6, 2022
@ulucinar ulucinar changed the title API Group & Kind configuration for Terraformed resources Default API Group & Kind configuration for Terraformed resources Jan 6, 2022
@ulucinar ulucinar changed the title Default API Group & Kind configuration for Terraformed resources API Group & Kind configuration for Terraformed resources Jan 6, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Make sure all API groups are in their final form
3 participants