alibabacloudstack/provider.go (1,301 lines of code) (raw):
package alibabacloudstack
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"log"
"os"
"runtime"
"strconv"
"strings"
"time"
"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
"github.com/aliyun/alibaba-cloud-sdk-go/services/sts"
"github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/connectivity"
"github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/errmsgs"
"github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/helper/hashcode"
"github.com/google/uuid"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
"github.com/mitchellh/go-homedir"
)
func Provider() *schema.Provider {
return &schema.Provider{
Schema: map[string]*schema.Schema{
"access_key": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_ACCESS_KEY", os.Getenv("ALIBABACLOUDSTACK_ACCESS_KEY")),
Description: descriptions["access_key"],
},
"secret_key": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_SECRET_KEY", os.Getenv("ALIBABACLOUDSTACK_SECRET_KEY")),
Description: descriptions["secret_key"],
},
"region": {
Type: schema.TypeString,
Required: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_REGION", os.Getenv("ALIBABACLOUDSTACK_REGION")),
Description: descriptions["region"],
},
"region_id": {
Type: schema.TypeString,
Optional: true,
Description: descriptions["region_id"],
Deprecated: "Field region_id is Deprecated, Please use parameter region replace it.",
},
"role_arn": {
Type: schema.TypeString,
Optional: true,
Description: descriptions["assume_role_role_arn"],
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_ASSUME_ROLE_ARN", os.Getenv("ALIBABACLOUDSTACK_ASSUME_ROLE_ARN")),
},
"security_token": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_SECURITY_TOKEN", os.Getenv("SECURITY_TOKEN")),
Description: descriptions["security_token"],
},
"ecs_role_name": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_ECS_ROLE_NAME", os.Getenv("ALIBABACLOUDSTACK_ECS_ROLE_NAME")),
Description: descriptions["ecs_role_name"],
},
"skip_region_validation": {
Type: schema.TypeBool,
Optional: true,
Default: true,
Description: descriptions["skip_region_validation"],
Deprecated: "always skip to valiate region in apsarastack",
},
"profile": {
Type: schema.TypeString,
Optional: true,
Description: descriptions["profile"],
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_PROFILE", ""),
},
"endpoints": endpointsSchema(),
"shared_credentials_file": {
Type: schema.TypeString,
Optional: true,
Description: descriptions["shared_credentials_file"],
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_SHARED_CREDENTIALS_FILE", ""),
},
"insecure": {
Type: schema.TypeBool,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_INSECURE", false),
Description: descriptions["insecure"],
},
"assume_role": assumeRoleSchema(),
"fc": {
Type: schema.TypeString,
Optional: true,
Deprecated: "Field 'fc' has been deprecated from provider version 1.28.0. New field 'fc' which in nested endpoints instead.",
},
"protocol": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_PROTOCOL", "HTTP"),
Description: descriptions["protocol"],
ValidateFunc: validation.StringInSlice([]string{"HTTP", "HTTPS"}, false),
},
"client_read_timeout": {
Type: schema.TypeInt,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("CLIENT_READ_TIMEOUT", 60000),
Description: descriptions["client_read_timeout"],
},
"client_connect_timeout": {
Type: schema.TypeInt,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("CLIENT_CONNECT_TIMEOUT", 60000),
Description: descriptions["client_connect_timeout"],
},
"source_ip": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_SOURCE_IP", os.Getenv("ALIBABACLOUDSTACK_SOURCE_IP")),
Description: descriptions["source_ip"],
},
"security_transport": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_SECURITY_TRANSPORT", os.Getenv("ALIBABACLOUDSTACK_SECURITY_TRANSPORT")),
//Deprecated: "It has been deprecated from version 1.136.0 and using new field secure_transport instead.",
},
"secure_transport": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_SECURE_TRANSPORT", os.Getenv("ALIBABACLOUDSTACK_SECURE_TRANSPORT")),
Description: descriptions["secure_transport"],
},
"configuration_source": {
Type: schema.TypeString,
Optional: true,
Default: "",
Description: descriptions["configuration_source"],
ValidateFunc: validation.StringLenBetween(0, 64),
},
"proxy": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_PROXY", nil),
Description: descriptions["proxy"],
},
"force_use_asapi": {
Type: schema.TypeBool,
Optional: true,
Default: false,
Description: descriptions["force_use_asapi"],
},
"is_center_region": {
Type: schema.TypeBool,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_CENTER_REGION", "true"),
Description: descriptions["is_center_region"],
},
"popgw_domain": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_POPGW_DOMAIN", nil),
Description: descriptions["popgw_domain"],
},
"domain": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_DOMAIN", nil),
Description: descriptions["domain"],
Deprecated: "ASAPI will no longer provide external services by default on apsarastack v3.18.1",
},
"ossservice_domain": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_OSSSERVICE_DOMAIN", nil),
Description: descriptions["ossservice_domain"],
Deprecated: "Use schema endpoints replace ossservice_domain.",
},
"kafkaopenapi_domain": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_KAFKAOPENAPI_DOMAIN", nil),
Description: descriptions["kafkaopenapi_domain"],
Deprecated: "Use schema endpoints replace kafkaopenapi_domain.",
},
"organization_accesskey": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_ORGANIZATION_ACCESSKEY", nil),
Description: descriptions["organization_accesskey"],
Deprecated: "Use access_key replace organization_accesskey.",
},
"organization_secretkey": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_ORGANIZATION_SECRETKEY", nil),
Description: descriptions["organization_secretkey"],
Deprecated: "Use secret_key replace organization_secretkey.",
},
"sls_openapi_endpoint": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_SLS_OPENAPI_ENDPOINT", nil),
Description: descriptions["sls_openapi_endpoint"],
Deprecated: "Use schema endpoints replace sls_openapi_endpoint.",
},
"ascm_openapi_endpoint": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("APSARASTACK_ASCM_OPENAPI_ENDPOINT", nil),
Description: descriptions["ascm_openapi_endpoint"],
Deprecated: "Use schema endpoints replace ascm_openapi_endpoint.",
},
"sts_endpoint": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_STS_ENDPOINT", nil),
Description: descriptions["sts_endpoint"],
Deprecated: "Use schema endpoints replace sts_endpoint.",
},
"quickbi_endpoint": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_QUICKBI_ENDPOINT", nil),
Description: descriptions["quickbi_endpoint"],
Deprecated: "Use schema endpoints replace quickbi_endpoint.",
},
"department": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_DEPARTMENT", nil),
Description: descriptions["department"],
},
"resource_group": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_RESOURCE_GROUP", nil),
Description: descriptions["resource_group"],
},
"resource_group_set_name": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_RESOURCE_GROUP_SET", nil),
Description: descriptions["resource_group_set_name"],
},
"dataworkspublic": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_DATAWORKS_PUBLIC_ENDPOINT", nil),
Description: descriptions["dataworkspublic_endpoint"],
Deprecated: "Use schema endpoints replace dataworkspublic.",
},
"dbs_endpoint": {
Type: schema.TypeString,
Optional: true,
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_DBS_ENDPOINT", nil),
Description: descriptions["dbs_endpoint"],
Deprecated: "Use schema endpoints replace dbs_endpoint.",
},
},
DataSourcesMap: getDataSourcesMap(),
ResourcesMap: getResourcesMap(),
ConfigureFunc: providerConfigure,
}
}
var providerConfig map[string]interface{}
func stringToBool(value string) (bool, error) {
// 将字符串转换为小写以便于比较
value = strings.ToLower(value)
// 检查常见的布尔值表示
switch value {
case "true", "1", "yes", "on":
return true, nil
case "false", "0", "no", "off":
return false, nil
default:
return false, fmt.Errorf("invalid boolean value for environment variable: %s", value)
}
}
func getDataSourcesMap() map[string]*schema.Resource {
maps := map[string]*schema.Resource{
"alibabacloudstack_account": dataSourceAlibabacloudStackAccount(),
"alibabacloudstack_adb_clusters": dataSourceAlibabacloudStackAdbDbClusters(),
"alibabacloudstack_adb_zones": dataSourceAlibabacloudStackAdbZones(),
"alibabacloudstack_adb_db_clusters": dataSourceAlibabacloudStackAdbDbClusters(),
"alibabacloudstack_adb_dbclusters": dataSourceAlibabacloudStackAdbDbClusters(),
"alibabacloudstack_api_gateway_apis": dataSourceAlibabacloudStackApiGatewayApis(),
"alibabacloudstack_apigateway_apis": dataSourceAlibabacloudStackApiGatewayApis(),
"alibabacloudstack_api_gateway_apps": dataSourceAlibabacloudStackApiGatewayApps(),
"alibabacloudstack_apigateway_apps": dataSourceAlibabacloudStackApiGatewayApps(),
"alibabacloudstack_api_gateway_groups": dataSourceAlibabacloudStackApiGatewayGroups(),
"alibabacloudstack_apigateway_apigroups": dataSourceAlibabacloudStackApiGatewayGroups(),
"alibabacloudstack_api_gateway_service": dataSourceAlibabacloudStackApiGatewayService(),
"alibabacloudstack_ascm_resource_groups": dataSourceAlibabacloudStackAscmResourceGroups(),
"alibabacloudstack_ascm_users": dataSourceAlibabacloudStackAscmUsers(),
"alibabacloudstack_ascm_user_groups": dataSourceAlibabacloudStackAscmUserGroups(),
"alibabacloudstack_ascm_logon_policies": dataSourceAlibabacloudStackAscmLogonPolicies(),
"alibabacloudstack_ascm_ram_service_roles": dataSourceAlibabacloudStackAscmRamServiceRoles(),
"alibabacloudstack_ascm_organizations": dataSourceAlibabacloudStackAscmOrganizations(),
"alibabacloudstack_ascm_instance_families": dataSourceAlibabacloudStackInstanceFamilies(),
"alibabacloudstack_ascm_regions_by_product": dataSourceAlibabacloudStackRegionsByProduct(),
"alibabacloudstack_ascm_service_cluster_by_product": dataSourceAlibabacloudStackServiceClusterByProduct(),
"alibabacloudstack_ascm_ecs_instance_families": dataSourceAlibabacloudStackEcsInstanceFamilies(),
"alibabacloudstack_ascm_specific_fields": dataSourceAlibabacloudStackSpecificFields(),
"alibabacloudstack_ascm_environment_services_by_product": dataSourceAlibabacloudStackAscmEnvironmentServicesByProduct(),
"alibabacloudstack_ascm_password_policies": dataSourceAlibabacloudStackAscmPasswordPolicies(),
"alibabacloudstack_ascm_quotas": dataSourceAlibabacloudStackQuotas(),
"alibabacloudstack_ascm_metering_query_ecs": dataSourceAlibabacloudstackAscmMeteringQueryEcs(),
"alibabacloudstack_ascm_roles": dataSourceAlibabacloudStackAscmRoles(),
"alibabacloudstack_ascm_ram_policies": dataSourceAlibabacloudStackAscmRamPolicies(),
"alibabacloudstack_ascm_ram_policies_for_user": dataSourceAlibabacloudStackAscmRamPoliciesForUser(),
"alibabacloudstack_common_bandwidth_packages": dataSourceAlibabacloudStackCommonBandwidthPackages(),
"alibabacloudstack_cbwp_commonbandwidthpackages": dataSourceAlibabacloudStackCommonBandwidthPackages(),
"alibabacloudstack_cr_ee_instances": dataSourceAlibabacloudStackCrEeInstances(),
"alibabacloudstack_cr_ee_namespaces": dataSourceAlibabacloudStackCrEeNamespaces(),
"alibabacloudstack_cr_ee_repos": dataSourceAlibabacloudStackCrEeRepos(),
"alibabacloudstack_cr_ee_sync_rules": dataSourceAlibabacloudStackCrEeSyncRules(),
"alibabacloudstack_cr_namespaces": dataSourceAlibabacloudStackCRNamespaces(),
"alibabacloudstack_cr_repositories": dataSourceAlibabacloudStackCRRepos(),
"alibabacloudstack_cr_repos": dataSourceAlibabacloudStackCRRepos(),
"alibabacloudstack_cs_kubernetes_clusters": dataSourceAlibabacloudStackCSKubernetesClusters(),
"alibabacloudstack_ack_clusters": dataSourceAlibabacloudStackCSKubernetesClusters(),
"alibabacloudstack_cs_kubernetes_clusters_kubeconfig": dataSourceAlibabacloudStackCSKubernetesClustersKubeConfig(),
"alibabacloudstack_cms_metric_rule_templates": dataSourceAlibabacloudStackCmsMetricRuleTemplates(),
"alibabacloudstack_cloudmonitorservice_metricruletemplates": dataSourceAlibabacloudStackCmsMetricRuleTemplates(),
"alibabacloudstack_cms_alarm_contacts": dataSourceAlibabacloudstackCmsAlarmContacts(),
"alibabacloudstack_cloudmonitorservice_alarmcontacts": dataSourceAlibabacloudstackCmsAlarmContacts(),
"alibabacloudstack_cms_alarm_contact_groups": dataSourceAlibabacloudstackCmsAlarmContactGroups(),
"alibabacloudstack_cloudmonitorservice_alarmcontactgroups": dataSourceAlibabacloudstackCmsAlarmContactGroups(),
"alibabacloudstack_cms_project_meta": dataSourceAlibabacloudstackCmsProjectMeta(),
"alibabacloudstack_cms_metric_metalist": dataSourceAlibabacloudstackCmsMetricMetalist(),
"alibabacloudstack_cms_alarms": dataSourceAlibabacloudstackCmsAlarms(),
"alibabacloudstack_cloudmonitorservice_metricalarmrules": dataSourceAlibabacloudstackCmsAlarms(),
"alibabacloudstack_datahub_service": dataSourceAlibabacloudStackDatahubService(),
"alibabacloudstack_db_instances": dataSourceAlibabacloudStackDBInstances(),
"alibabacloudstack_rds_dbinstances": dataSourceAlibabacloudStackDBInstances(),
"alibabacloudstack_db_zones": dataSourceAlibabacloudStackDBZones(),
"alibabacloudstack_disks": dataSourceAlibabacloudStackDisks(),
"alibabacloudstack_ecs_disks": dataSourceAlibabacloudStackDisks(),
"alibabacloudstack_dns_records": dataSourceAlibabacloudStackDnsRecords(),
"alibabacloudstack_dns_groups": dataSourceAlibabacloudStackDnsGroups(),
"alibabacloudstack_alidns_domaingroups": dataSourceAlibabacloudStackDnsGroups(),
"alibabacloudstack_dns_domains": dataSourceAlibabacloudStackDnsDomains(),
"alibabacloudstack_drds_instances": dataSourceAlibabacloudStackDRDSInstances(),
"alibabacloudstack_dms_enterprise_instances": dataSourceAlibabacloudStackDmsEnterpriseInstances(),
"alibabacloudstack_dmsenterprise_instances": dataSourceAlibabacloudStackDmsEnterpriseInstances(),
"alibabacloudstack_dms_enterprise_users": dataSourceAlibabacloudStackDmsEnterpriseUsers(),
"alibabacloudstack_dmsenterprise_users": dataSourceAlibabacloudStackDmsEnterpriseUsers(),
"alibabacloudstack_ecs_commands": dataSourceAlibabacloudStackEcsCommands(),
"alibabacloudstack_ecs_deployment_sets": dataSourceAlibabacloudStackEcsDeploymentSets(),
"alibabacloudstack_ecs_deploymentsets": dataSourceAlibabacloudStackEcsDeploymentSets(),
"alibabacloudstack_ecs_hpc_clusters": dataSourceAlibabacloudStackEcsHpcClusters(),
"alibabacloudstack_ecs_hpcclusters": dataSourceAlibabacloudStackEcsHpcClusters(),
"alibabacloudstack_ecs_dedicated_hosts": dataSourceAlibabacloudStackEcsDedicatedHosts(),
"alibabacloudstack_ecs_dedicatedhosts": dataSourceAlibabacloudStackEcsDedicatedHosts(),
"alibabacloudstack_edas_deploy_groups": dataSourceAlibabacloudStackEdasDeployGroups(),
"alibabacloudstack_edas_deploygroups": dataSourceAlibabacloudStackEdasDeployGroups(),
"alibabacloudstack_edas_clusters": dataSourceAlibabacloudStackEdasClusters(),
"alibabacloudstack_edas_applications": dataSourceAlibabacloudStackEdasApplications(),
"alibabacloudstack_edas_slbattachments": dataSourceAlibabacloudStackEdasApplications(),
"alibabacloudstack_edas_namespaces": dataSourceAlibabacloudStackEdasNamespaces(),
"alibabacloudstack_eips": dataSourceAlibabacloudStackEips(),
"alibabacloudstack_eip_addresses": dataSourceAlibabacloudStackEips(),
"alibabacloudstack_autoscaling_scalingconfigurations": dataSourceAlibabacloudStackEssScalingConfigurations(),
"alibabacloudstack_ess_scaling_configurations": dataSourceAlibabacloudStackEssScalingConfigurations(),
"alibabacloudstack_autoscaling_scalinggroups": dataSourceAlibabacloudStackEssScalingGroups(),
"alibabacloudstack_ess_scaling_groups": dataSourceAlibabacloudStackEssScalingGroups(),
"alibabacloudstack_ess_lifecycle_hooks": dataSourceAlibabacloudStackEssLifecycleHooks(),
"alibabacloudstack_autoscaling_lifecyclehooks": dataSourceAlibabacloudStackEssLifecycleHooks(),
"alibabacloudstack_ess_notifications": dataSourceAlibabacloudStackEssNotifications(),
"alibabacloudstack_autoscaling_notifications": dataSourceAlibabacloudStackEssNotifications(),
"alibabacloudstack_autoscaling_scalingrules": dataSourceAlibabacloudStackEssScalingRules(),
"alibabacloudstack_ess_scaling_rules": dataSourceAlibabacloudStackEssScalingRules(),
"alibabacloudstack_ess_scheduled_tasks": dataSourceAlibabacloudStackEssScheduledTasks(),
"alibabacloudstack_autoscaling_scheduledtasks": dataSourceAlibabacloudStackEssScheduledTasks(),
"alibabacloudstack_forward_entries": dataSourceAlibabacloudStackForwardEntries(),
"alibabacloudstack_natgateway_forwardentries": dataSourceAlibabacloudStackForwardEntries(),
"alibabacloudstack_gpdb_accounts": dataSourceAlibabacloudStackGpdbAccounts(),
"alibabacloudstack_gpdb_instances": dataSourceAlibabacloudStackGpdbInstances(),
"alibabacloudstack_gpdb_dbinstances": dataSourceAlibabacloudStackGpdbInstances(),
"alibabacloudstack_hbase_instances": dataSourceAlibabacloudStackHBaseInstances(),
"alibabacloudstack_hbase_clusters": dataSourceAlibabacloudStackHBaseInstances(),
"alibabacloudstack_instances": dataSourceAlibabacloudStackInstances(),
"alibabacloudstack_ecs_instances": dataSourceAlibabacloudStackInstances(),
"alibabacloudstack_instance_type_families": dataSourceAlibabacloudStackInstanceTypeFamilies(),
"alibabacloudstack_instance_types": dataSourceAlibabacloudStackInstanceTypes(),
"alibabacloudstack_images": dataSourceAlibabacloudStackImages(),
"alibabacloudstack_ecs_images": dataSourceAlibabacloudStackImages(),
"alibabacloudstack_key_pairs": dataSourceAlibabacloudStackKeyPairs(),
"alibabacloudstack_ecs_keypairs": dataSourceAlibabacloudStackKeyPairs(),
"alibabacloudstack_kms_aliases": dataSourceAlibabacloudStackKmsAliases(),
"alibabacloudstack_kms_ciphertexts": dataSourceAlibabacloudStackKmsCiphertext(),
"alibabacloudstack_kms_keys": dataSourceAlibabacloudStackKmsKeys(),
"alibabacloudstack_kms_secrets": dataSourceAlibabacloudStackKmsSecrets(),
"alibabacloudstack_kvstore_instances": dataSourceAlibabacloudStackKVStoreInstances(),
"alibabacloudstack_redis_tairinstances": dataSourceAlibabacloudStackKVStoreInstances(),
"alibabacloudstack_kvstore_zones": dataSourceAlibabacloudStackKVStoreZones(),
"alibabacloudstack_kvstore_instance_classes": dataSourceAlibabacloudStackKVStoreInstanceClasses(),
"alibabacloudstack_kvstore_instance_engines": dataSourceAlibabacloudStackKVStoreInstanceEngines(),
"alibabacloudstack_mongodb_instances": dataSourceAlibabacloudStackMongoDBInstances(),
"alibabacloudstack_mongodb_zones": dataSourceAlibabacloudStackMongoDBZones(),
"alibabacloudstack_maxcompute_cus": dataSourceAlibabacloudStackMaxcomputeCus(),
"alibabacloudstack_maxcompute_users": dataSourceAlibabacloudStackMaxcomputeUsers(),
"alibabacloudstack_maxcompute_clusters": dataSourceAlibabacloudStackMaxcomputeClusters(),
"alibabacloudstack_maxcompute_cluster_quotas": dataSourceAlibabacloudStackMaxcomputeClusterQuotas(),
"alibabacloudstack_maxcompute_projects": dataSourceAlibabacloudStackMaxcomputeProjects(),
"alibabacloudstack_nas_zones": dataSourceAlibabacloudStackNasZones(),
"alibabacloudstack_nas_protocols": dataSourceAlibabacloudStackNasProtocols(),
"alibabacloudstack_nas_file_systems": dataSourceAlibabacloudStackFileSystems(),
"alibabacloudstack_nas_filesystems": dataSourceAlibabacloudStackFileSystems(),
"alibabacloudstack_nas_mount_targets": dataSourceAlibabacloudStackNasMountTargets(),
"alibabacloudstack_nas_mounttargets": dataSourceAlibabacloudStackNasMountTargets(),
"alibabacloudstack_nas_access_rules": dataSourceAlibabacloudStackAccessRules(),
"alibabacloudstack_nas_accessrules": dataSourceAlibabacloudStackAccessRules(),
"alibabacloudstack_nat_gateways": dataSourceAlibabacloudStackNatGateways(),
"alibabacloudstack_natgateway_natgateways": dataSourceAlibabacloudStackNatGateways(),
"alibabacloudstack_network_acls": dataSourceAlibabacloudStackNetworkAcls(),
"alibabacloudstack_vpc_networkacls": dataSourceAlibabacloudStackNetworkAcls(),
"alibabacloudstack_network_interfaces": dataSourceAlibabacloudStackNetworkInterfaces(),
"alibabacloudstack_ecs_networkinterfaces": dataSourceAlibabacloudStackNetworkInterfaces(),
"alibabacloudstack_oss_buckets": dataSourceAlibabacloudStackOssBuckets(),
"alibabacloudstack_oss_bucket_objects": dataSourceAlibabacloudStackOssBucketObjects(),
"alibabacloudstack_ons_instances": dataSourceAlibabacloudStackOnsInstances(),
"alibabacloudstack_ons_topics": dataSourceAlibabacloudStackOnsTopics(),
"alibabacloudstack_ons_groups": dataSourceAlibabacloudStackOnsGroups(),
"alibabacloudstack_ots_tables": dataSourceAlibabacloudStackOtsTables(),
"alibabacloudstack_ots_instances": dataSourceAlibabacloudStackOtsInstances(),
"alibabacloudstack_ots_instance_attachments": dataSourceAlibabacloudStackOtsInstanceAttachments(),
"alibabacloudstack_ots_service": dataSourceAlibabacloudStackOtsService(),
"alibabacloudstack_quick_bi_users": dataSourceAlibabacloudStackQuickBiUsers(),
"alibabacloudstack_router_interfaces": dataSourceAlibabacloudStackRouterInterfaces(),
"alibabacloudstack_expressconnect_routerinterfaces": dataSourceAlibabacloudStackRouterInterfaces(),
"alibabacloudstack_ram_service_role_products": dataSourceAlibabacloudstackRamServiceRoleProducts(),
"alibabacloudstack_route_tables": dataSourceAlibabacloudStackRouteTables(),
"alibabacloudstack_vpc_routetables": dataSourceAlibabacloudStackRouteTables(),
"alibabacloudstack_route_entries": dataSourceAlibabacloudStackRouteEntries(),
"alibabacloudstack_ros_stacks": dataSourceAlibabacloudStackRosStacks(),
"alibabacloudstack_ros_templates": dataSourceAlibabacloudStackRosTemplates(),
"alibabacloudstack_security_groups": dataSourceAlibabacloudStackSecurityGroups(),
"alibabacloudstack_ecs_securitygroups": dataSourceAlibabacloudStackSecurityGroups(),
"alibabacloudstack_security_group_rules": dataSourceAlibabacloudStackSecurityGroupRules(),
"alibabacloudstack_snapshots": dataSourceAlibabacloudStackSnapshots(),
"alibabacloudstack_ecs_snapshots": dataSourceAlibabacloudStackSnapshots(),
"alibabacloudstack_slb_listeners": dataSourceAlibabacloudStackSlbListeners(),
"alibabacloudstack_slb_server_groups": dataSourceAlibabacloudStackSlbServerGroups(),
"alibabacloudstack_slb_vservergroups": dataSourceAlibabacloudStackSlbServerGroups(),
"alibabacloudstack_slb_acls": dataSourceAlibabacloudStackSlbAcls(),
"alibabacloudstack_slb_accesscontrollists": dataSourceAlibabacloudStackSlbAcls(),
"alibabacloudstack_slb_domain_extensions": dataSourceAlibabacloudStackSlbDomainExtensions(),
"alibabacloudstack_slb_domainextensions": dataSourceAlibabacloudStackSlbDomainExtensions(),
"alibabacloudstack_slb_rules": dataSourceAlibabacloudStackSlbRules(),
"alibabacloudstack_slb_master_slave_server_groups": dataSourceAlibabacloudStackSlbMasterSlaveServerGroups(),
"alibabacloudstack_slb_masterslaveservergroups": dataSourceAlibabacloudStackSlbMasterSlaveServerGroups(),
"alibabacloudstack_slbs": dataSourceAlibabacloudStackSlbs(),
"alibabacloudstack_slb_loadbalancers": dataSourceAlibabacloudStackSlbs(),
"alibabacloudstack_slb_zones": dataSourceAlibabacloudStackSlbZones(),
"alibabacloudstack_snat_entries": dataSourceAlibabacloudStackSnatEntries(),
"alibabacloudstack_natgateway_snatentries": dataSourceAlibabacloudStackSnatEntries(),
"alibabacloudstack_slb_server_certificates": dataSourceAlibabacloudStackSlbServerCertificates(),
"alibabacloudstack_slb_servercertificates": dataSourceAlibabacloudStackSlbServerCertificates(),
"alibabacloudstack_slb_ca_certificates": dataSourceAlibabacloudStackSlbCACertificates(),
"alibabacloudstack_slb_cacertificates": dataSourceAlibabacloudStackSlbCACertificates(),
"alibabacloudstack_slb_backend_servers": dataSourceAlibabacloudStackSlbBackendServers(),
"alibabacloudstack_slb_backendservers": dataSourceAlibabacloudStackSlbBackendServers(),
"alibabacloudstack_tsdb_zones": dataSourceAlibabacloudStackTsdbZones(),
"alibabacloudstack_vpn_gateways": dataSourceAlibabacloudStackVpnGateways(),
"alibabacloudstack_vpngateway_vpngateways": dataSourceAlibabacloudStackVpnGateways(),
"alibabacloudstack_vpn_customer_gateways": dataSourceAlibabacloudStackVpnCustomerGateways(),
"alibabacloudstack_vpngateway_customergateways": dataSourceAlibabacloudStackVpnCustomerGateways(),
"alibabacloudstack_vpn_connections": dataSourceAlibabacloudStackVpnConnections(),
"alibabacloudstack_vpngateway_vpnconnections": dataSourceAlibabacloudStackVpnConnections(),
"alibabacloudstack_vpc_ipv6_gateways": dataSourceAlibabacloudStackVpcIpv6Gateways(),
"alibabacloudstack_vpc_ipv6_egress_rules": dataSourceAlibabacloudStackVpcIpv6EgressRules(),
"alibabacloudstack_vpc_ipv6_egressrules": dataSourceAlibabacloudStackVpcIpv6EgressRules(),
"alibabacloudstack_vpc_ipv6_addresses": dataSourceAlibabacloudStackVpcIpv6Addresses(),
"alibabacloudstack_vpc_ipv6_internet_bandwidths": dataSourceAlibabacloudStackVpcIpv6InternetBandwidths(),
"alibabacloudstack_vpc_ipv6_internetbandwidths": dataSourceAlibabacloudStackVpcIpv6InternetBandwidths(),
"alibabacloudstack_vswitches": dataSourceAlibabacloudStackVSwitches(),
"alibabacloudstack_vpc_vswitches": dataSourceAlibabacloudStackVSwitches(),
"alibabacloudstack_vpcs": dataSourceAlibabacloudStackVpcs(),
"alibabacloudstack_vpc_vpcs": dataSourceAlibabacloudStackVpcs(),
"alibabacloudstack_zones": dataSourceAlibabacloudStackZones(),
"alibabacloudstack_elasticsearch_instances": dataSourceAlibabacloudStackElasticsearch(),
"alibabacloudstack_elasticsearch_zones": dataSourceAlibabacloudStackElaticsearchZones(),
"alibabacloudstack_ehpc_job_templates": dataSourceAlibabacloudStackEhpcJobTemplates(),
"alibabacloudstack_oos_executions": dataSourceAlibabacloudStackOosExecutions(),
"alibabacloudstack_oos_templates": dataSourceAlibabacloudStackOosTemplates(),
"alibabacloudstack_express_connect_physical_connections": dataSourceAlibabacloudStackExpressConnectPhysicalConnections(),
"alibabacloudstack_expressconnect_physicalconnections": dataSourceAlibabacloudStackExpressConnectPhysicalConnections(),
"alibabacloudstack_express_connect_access_points": dataSourceAlibabacloudStackExpressConnectAccessPoints(),
"alibabacloudstack_expressconnect_accesspoints": dataSourceAlibabacloudStackExpressConnectAccessPoints(),
"alibabacloudstack_express_connect_virtual_border_routers": dataSourceAlibabacloudStackExpressConnectVirtualBorderRouters(),
"alibabacloudstack_expressconnect_virtualborderrouters": dataSourceAlibabacloudStackExpressConnectVirtualBorderRouters(),
"alibabacloudstack_cloud_firewall_control_policies": dataSourceAlibabacloudStackCloudFirewallControlPolicies(),
"alibabacloudstack_ecs_ebs_storage_sets": dataSourceAlibabacloudStackEcsEbsStorageSets(),
"alibabacloudstack_polardb_zones": dataSourceAlibabacloudStackPolardbZones(),
// "alibabacloudstack_polardb_databases": dataSourceAlibabacloudStackPolardbDatabases(),
"alibabacloudstack_polardb_dbinstances": dataSourceAlibabacloudStackPolardbDbInstances(),
"alibabacloudstack_polardb_instances": dataSourceAlibabacloudStackPolardbDbInstances(),
// "alibabacloudstack_polardb_accounts": dataSourceAlibabacloudStackPolardbAccounts(),
}
if v, err := stringToBool(os.Getenv("APSARASTACK_IN_ALIBABACLOUDSTACK")); err != nil && !v {
return maps
}
new_map := map[string]*schema.Resource{}
for key, value := range maps {
new_map[key] = value
if strings.HasPrefix(key, "alibabacloudstack_") {
new_key := strings.Replace(key, "alibabacloudstack_", "apsarastack_", 1)
new_map[new_key] = value
}
}
return new_map
}
func getResourcesMap() map[string]*schema.Resource {
maps := map[string]*schema.Resource{
"alibabacloudstack_ess_scaling_configuration": resourceAlibabacloudStackEssScalingConfiguration(),
"alibabacloudstack_adb_account": resourceAlibabacloudStackAdbAccount(),
"alibabacloudstack_adb_backup_policy": resourceAlibabacloudStackAdbBackupPolicy(),
"alibabacloudstack_adb_backuppolicy": resourceAlibabacloudStackAdbBackupPolicy(),
"alibabacloudstack_adb_cluster": resourceAlibabacloudStackAdbDbCluster(),
"alibabacloudstack_adb_connection": resourceAlibabacloudStackAdbConnection(),
"alibabacloudstack_adb_db_cluster": resourceAlibabacloudStackAdbDbCluster(),
"alibabacloudstack_adb_dbcluster": resourceAlibabacloudStackAdbDbCluster(),
"alibabacloudstack_alikafka_sasl_acl": resourceAlibabacloudStackAlikafkaSaslAcl(),
"alibabacloudstack_alikafka_sasl_user": resourceAlibabacloudStackAlikafkaSaslUser(),
"alibabacloudstack_alikafka_topic": resourceAlibabacloudStackAlikafkaTopic(),
"alibabacloudstack_api_gateway_api": resourceAlibabacloudStackApigatewayApi(),
"alibabacloudstack_apigateway_api": resourceAlibabacloudStackApigatewayApi(),
"alibabacloudstack_api_gateway_app": resourceAlibabacloudStackApigatewayApp(),
"alibabacloudstack_api_gateway_app_attachment": resourceAlibabacloudStackApigatewayAppAttachment(),
"alibabacloudstack_apigateway_app": resourceAlibabacloudStackApigatewayAppAttachment(),
"alibabacloudstack_api_gateway_group": resourceAlibabacloudStackApigatewayGroup(),
"alibabacloudstack_apigateway_apigroup": resourceAlibabacloudStackApigatewayGroup(),
"alibabacloudstack_api_gateway_vpc_access": resourceAlibabacloudStackApigatewayVpc(),
"alibabacloudstack_apigateway_vpc": resourceAlibabacloudStackApigatewayVpc(),
"alibabacloudstack_application_deployment": resourceAlibabacloudStackEdasApplicationPackageAttachment(),
"alibabacloudstack_edas_applicationpackageattachment": resourceAlibabacloudStackEdasApplicationPackageAttachment(),
"alibabacloudstack_ascm_custom_role": resourceAlibabacloudStackAscmRole(),
"alibabacloudstack_ascm_logon_policy": resourceAlibabacloudStackLogonPolicy(),
"alibabacloudstack_ascm_organization": resourceAlibabacloudStackAscmOrganization(),
"alibabacloudstack_ascm_password_policy": resourceAlibabacloudStackAscmPasswordPolicy(),
"alibabacloudstack_ascm_quota": resourceAlibabacloudStackAscmQuota(),
"alibabacloudstack_ascm_ram_policy": resourceAlibabacloudStackAscmRamPolicy(),
"alibabacloudstack_ascm_ram_policy_for_role": resourceAlibabacloudStackAscmRamPolicyForRole(),
"alibabacloudstack_ascm_ram_role": resourceAlibabacloudStackAscmRamRole(),
"alibabacloudstack_ascm_resource_group": resourceAlibabacloudStackAscmResourceGroup(),
"alibabacloudstack_ascm_user": resourceAlibabacloudStackAscmUser(),
"alibabacloudstack_ascm_user_group": resourceAlibabacloudStackAscmUserGroup(),
"alibabacloudstack_ascm_user_group_resource_set_binding": resourceAlibabacloudStackAscmUserGroupResourceSetBinding(),
"alibabacloudstack_ascm_user_group_role_binding": resourceAlibabacloudStackAscmUserGroupRoleBinding(),
"alibabacloudstack_ascm_user_role_binding": resourceAlibabacloudStackAscmUserRoleBinding(),
"alibabacloudstack_ascm_usergroup_user": resourceAlibabacloudStackAscmUserGroupUser(),
"alibabacloudstack_cms_alarm": resourceAlibabacloudStackCmsAlarm(),
"alibabacloudstack_cloudmonitorservice_metricalarmrule": resourceAlibabacloudStackCmsAlarm(),
"alibabacloudstack_cms_alarm_contact": resourceAlibabacloudstackCmsAlarmContact(),
"alibabacloudstack_cloudmonitorservice_alarmcontact": resourceAlibabacloudstackCmsAlarmContact(),
"alibabacloudstack_cms_alarm_contact_group": resourceAlibabacloudstackCmsAlarmContactGroup(),
"alibabacloudstack_cloudmonitorservice_alarmcontactgroup": resourceAlibabacloudstackCmsAlarmContactGroup(),
"alibabacloudstack_cms_metric_rule_template": resourceAlibabacloudCmsMetricRuleTemplate(),
"alibabacloudstack_cloudmonitorservice_metricruletemplate": resourceAlibabacloudCmsMetricRuleTemplate(),
"alibabacloudstack_cms_site_monitor": resourceAlibabacloudStackCmsSiteMonitor(),
"alibabacloudstack_cloudmonitorservice_sitemonitor": resourceAlibabacloudStackCmsSiteMonitor(),
"alibabacloudstack_common_bandwidth_package": resourceAlibabacloudStackCommonBandwidthPackage(),
"alibabacloudstack_cbwp_commonbandwidthpackage": resourceAlibabacloudStackCommonBandwidthPackage(),
"alibabacloudstack_common_bandwidth_package_attachment": resourceAlibabacloudStackCommonBandwidthPackageAttachment(),
"alibabacloudstack_cbwp_commonbandwidthpackageattachment": resourceAlibabacloudStackCommonBandwidthPackageAttachment(),
"alibabacloudstack_cr_ee_namespace": resourceAlibabacloudStackCrEeNamespace(),
"alibabacloudstack_cr_ee_repo": resourceAlibabacloudStackCrEeRepo(),
"alibabacloudstack_cr_repository": resourceAlibabacloudStackCrEeRepo(),
"alibabacloudstack_cr_ee_sync_rule": resourceAlibabacloudStackCrEeSyncRule(),
"alibabacloudstack_cr_namespace": resourceAlibabacloudStackCRNamespace(),
"alibabacloudstack_cr_repo": resourceAlibabacloudStackCRRepo(),
"alibabacloudstack_cs_kubernetes": resourceAlibabacloudStackCSKubernetes(),
"alibabacloudstack_ack_cluster": resourceAlibabacloudStackCSKubernetes(),
"alibabacloudstack_cs_kubernetes_node_pool": resourceAlibabacloudStackCSKubernetesNodePool(),
"alibabacloudstack_datahub_project": resourceAlibabacloudStackDatahubProject(),
"alibabacloudstack_datahub_subscription": resourceAlibabacloudStackDatahubSubscription(),
"alibabacloudstack_datahub_topic": resourceAlibabacloudStackDatahubTopic(),
"alibabacloudstack_db_account": resourceAlibabacloudStackDBAccount(),
"alibabacloudstack_rds_account": resourceAlibabacloudStackDBAccount(),
"alibabacloudstack_db_account_privilege": resourceAlibabacloudStackDBAccountPrivilege(),
"alibabacloudstack_db_backup_policy": resourceAlibabacloudStackDBBackupPolicy(),
"alibabacloudstack_rds_backuppolicy": resourceAlibabacloudStackDBBackupPolicy(),
"alibabacloudstack_db_connection": resourceAlibabacloudStackDBConnection(),
"alibabacloudstack_rds_dbinstance": resourceAlibabacloudStackDBInstance(),
"alibabacloudstack_db_database": resourceAlibabacloudStackDBDatabase(),
"alibabacloudstack_rds_database": resourceAlibabacloudStackDBDatabase(),
"alibabacloudstack_db_instance": resourceAlibabacloudStackDBInstance(),
"alibabacloudstack_db_read_write_splitting_connection": resourceAlibabacloudStackDBReadWriteSplittingConnection(),
"alibabacloudstack_db_readonly_instance": resourceAlibabacloudStackDBReadonlyInstance(),
"alibabacloudstack_disk": resourceAlibabacloudStackDisk(),
"alibabacloudstack_ecs_disk": resourceAlibabacloudStackDisk(),
"alibabacloudstack_disk_attachment": resourceAlibabacloudStackDiskAttachment(),
"alibabacloudstack_ecs_diskattachment": resourceAlibabacloudStackDiskAttachment(),
"alibabacloudstack_dms_enterprise_instance": resourceAlibabacloudStackDmsEnterpriseInstance(),
"alibabacloudstack_dmsenterprise_instance": resourceAlibabacloudStackDmsEnterpriseInstance(),
"alibabacloudstack_dms_enterprise_user": resourceAlibabacloudStackDmsEnterpriseUser(),
"alibabacloudstack_dmsenterprise_user": resourceAlibabacloudStackDmsEnterpriseUser(),
"alibabacloudstack_dns_domain": resourceAlibabacloudStackDnsDomain(),
"alibabacloudstack_dns_domain_attachment": resourceAlibabacloudStackDnsDomainAttachment(),
"alibabacloudstack_alidns_domainattachment": resourceAlibabacloudStackDnsDomainAttachment(),
"alibabacloudstack_dns_group": resourceAlibabacloudStackDnsGroup(),
"alibabacloudstack_alidns_domaingroup": resourceAlibabacloudStackDnsGroup(),
"alibabacloudstack_dns_record": resourceAlibabacloudStackDnsRecord(),
"alibabacloudstack_drds_instance": resourceAlibabacloudStackDRDSInstance(),
"alibabacloudstack_dts_subscription_job": resourceAlibabacloudStackDtsSubscriptionJob(),
"alibabacloudstack_dts_subscriptionjob": resourceAlibabacloudStackDtsSubscriptionJob(),
"alibabacloudstack_dts_synchronization_instance": resourceAlibabacloudStackDtsSynchronizationInstance(),
"alibabacloudstack_dts_synchronizationinstance": resourceAlibabacloudStackDtsSynchronizationInstance(),
"alibabacloudstack_dts_synchronization_job": resourceAlibabacloudStackDtsSynchronizationJob(),
"alibabacloudstack_ecs_command": resourceAlibabacloudStackEcsCommand(),
"alibabacloudstack_ecs_dedicated_host": resourceAlibabacloudStackEcsDedicatedHost(),
"alibabacloudstack_ecs_dedicatedhost": resourceAlibabacloudStackEcsDedicatedHost(),
"alibabacloudstack_ecs_deployment_set": resourceAlibabacloudStackEcsDeploymentSet(),
"alibabacloudstack_ecs_deploymentset": resourceAlibabacloudStackEcsDeploymentSet(),
"alibabacloudstack_ecs_hpc_cluster": resourceAlibabacloudStackEcsHpcCluster(),
"alibabacloudstack_ecs_hpccluster": resourceAlibabacloudStackEcsHpcCluster(),
"alibabacloudstack_ecs_ebs_storage_set": resourceAlibabacloudStackEcsEbsStorageSets(),
"alibabacloudstack_ecs_storageset": resourceAlibabacloudStackEcsEbsStorageSets(),
"alibabacloudstack_edas_application": resourceAlibabacloudStackEdasApplication(),
"alibabacloudstack_edas_k8s_service": resourceAlibabacloudStackEdasK8sService(),
"alibabacloudstack_edas_slbattachment": resourceAlibabacloudStackEdasSlbAttachment(),
"alibabacloudstack_edas_application_scale": resourceAlibabacloudStackEdasInstanceApplicationAttachment(),
"alibabacloudstack_edas_cluster": resourceAlibabacloudStackEdasCluster(),
"alibabacloudstack_edas_deploy_group": resourceAlibabacloudStackEdasDeployGroup(),
"alibabacloudstack_edas_deploygroup": resourceAlibabacloudStackEdasDeployGroup(),
"alibabacloudstack_edas_instance_cluster_attachment": resourceAlibabacloudStackEdasInstanceClusterAttachment(),
"alibabacloudstack_edas_instanceclusterattachment": resourceAlibabacloudStackEdasInstanceClusterAttachment(),
"alibabacloudstack_edas_k8s_application": resourceAlibabacloudStackEdasK8sApplication(),
"alibabacloudstack_edas_k8s_cluster": resourceAlibabacloudStackEdasK8sCluster(),
"alibabacloudstack_edas_namespace": resourceAlibabacloudStackEdasNamespace(),
"alibabacloudstack_edas_slb_attachment": resourceAlibabacloudStackEdasSlbAttachment(),
"alibabacloudstack_ehpc_job_template": resourceAlibabacloudStackEhpcJobTemplate(),
"alibabacloudstack_eip": resourceAlibabacloudStackEip(),
"alibabacloudstack_eip_address": resourceAlibabacloudStackEip(),
"alibabacloudstack_eip_association": resourceAlibabacloudStackEipAssociation(),
"alibabacloudstack_ess_alarm": resourceAlibabacloudStackEssAlarm(),
"alibabacloudstack_autoscaling_alarmtask": resourceAlibabacloudStackEssAlarm(),
"alibabacloudstack_ess_attachment": resourceAlibabacloudstackEssAttachment(),
"alibabacloudstack_ess_lifecycle_hook": resourceAlibabacloudStackEssLifecycleHook(),
"alibabacloudstack_autoscaling_lifecyclehook": resourceAlibabacloudStackEssLifecycleHook(),
"alibabacloudstack_ess_notification": resourceAlibabacloudStackEssNotification(),
"alibabacloudstack_autoscaling_notification": resourceAlibabacloudStackEssNotification(),
"alibabacloudstack_ess_scaling_group": resourceAlibabacloudStackEssScalingGroup(),
"alibabacloudstack_autoscaling_scalingrule": resourceAlibabacloudStackEssScalingRule(),
"alibabacloudstack_ess_scaling_rule": resourceAlibabacloudStackEssScalingRule(),
"alibabacloudstack_ess_scalinggroup_vserver_groups": resourceAlibabacloudStackEssScalingGroupVserverGroups(),
"alibabacloudstack_ess_scheduled_task": resourceAlibabacloudStackEssScheduledTask(),
"alibabacloudstack_autoscaling_scheduledtask": resourceAlibabacloudStackEssScheduledTask(),
"alibabacloudstack_forward_entry": resourceAlibabacloudStackForwardEntry(),
"alibabacloudstack_natgateway_forwardentry": resourceAlibabacloudStackForwardEntry(),
"alibabacloudstack_gpdb_account": resourceAlibabacloudStackGpdbAccount(),
"alibabacloudstack_gpdb_connection": resourceAlibabacloudStackGpdbConnection(),
"alibabacloudstack_gpdb_publicconnection": resourceAlibabacloudStackGpdbConnection(),
"alibabacloudstack_gpdb_instance": resourceAlibabacloudStackGpdbInstance(),
"alibabacloudstack_gpdb_dbinstance": resourceAlibabacloudStackGpdbInstance(),
"alibabacloudstack_hbase_instance": resourceAlibabacloudStackHBaseInstance(),
"alibabacloudstack_hbase_cluster": resourceAlibabacloudStackHBaseInstance(),
"alibabacloudstack_image": resourceAlibabacloudStackImage(),
"alibabacloudstack_ecs_image": resourceAlibabacloudStackImage(),
"alibabacloudstack_image_copy": resourceAlibabacloudStackImageCopy(),
"alibabacloudstack_image_export": resourceAlibabacloudStackImageExport(),
"alibabacloudstack_image_import": resourceAlibabacloudStackImageImport(),
"alibabacloudstack_image_share_permission": resourceAlibabacloudStackImageSharePermission(),
"alibabacloudstack_instance": resourceAlibabacloudStackInstance(),
"alibabacloudstack_ecs_instance": resourceAlibabacloudStackInstance(),
"alibabacloudstack_key_pair": resourceAlibabacloudStackKeyPair(),
"alibabacloudstack_ecs_keypair": resourceAlibabacloudStackKeyPair(),
"alibabacloudstack_key_pair_attachment": resourceAlibabacloudStackKeyPairAttachment(),
"alibabacloudstack_ecs_keypairattachment": resourceAlibabacloudStackKeyPairAttachment(),
"alibabacloudstack_kms_alias": resourceAlibabacloudStackKmsAlias(),
"alibabacloudstack_kms_ciphertext": resourceAlibabacloudStackKmsCiphertext(),
"alibabacloudstack_kms_key": resourceAlibabacloudStackKmsKey(),
"alibabacloudstack_kms_secret": resourceAlibabacloudStackKmsSecret(),
"alibabacloudstack_kvstore_account": resourceAlibabacloudStackKVstoreAccount(),
"alibabacloudstack_redis_account": resourceAlibabacloudStackKVstoreAccount(),
"alibabacloudstack_kvstore_backup_policy": resourceAlibabacloudStackKVStoreBackupPolicy(),
"alibabacloudstack_kvstore_connection": resourceAlibabacloudStackKvstoreConnection(),
"alibabacloudstack_redis_connection": resourceAlibabacloudStackKvstoreConnection(),
"alibabacloudstack_kvstore_instance": resourceAlibabacloudStackKVStoreInstance(),
"alibabacloudstack_redis_tairinstance": resourceAlibabacloudStackKVStoreInstance(),
"alibabacloudstack_launch_template": resourceAlibabacloudStackLaunchTemplate(),
"alibabacloudstack_ecs_launchtemplate": resourceAlibabacloudStackLaunchTemplate(),
"alibabacloudstack_log_alert": resourceAlibabacloudStackLogAlert(),
"alibabacloudstack_log_machine_group": resourceAlibabacloudStackLogMachineGroup(),
"alibabacloudstack_log_project": resourceAlibabacloudStackLogProject(),
"alibabacloudstack_log_store": resourceAlibabacloudStackLogStore(),
"alibabacloudstack_log_store_index": resourceAlibabacloudStackLogStoreIndex(),
"alibabacloudstack_logtail_attachment": resourceAlibabacloudStackLogtailAttachment(),
"alibabacloudstack_logtail_config": resourceAlibabacloudStackLogtailConfig(),
"alibabacloudstack_maxcompute_project": resourceAlibabacloudStackMaxcomputeProject(),
"alibabacloudstack_maxcompute_user": resourceAlibabacloudStackMaxcomputeUser(),
"alibabacloudstack_maxcompute_cu": resourceAlibabacloudStackMaxcomputeCu(),
"alibabacloudstack_mongodb_instance": resourceAlibabacloudStackMongoDBInstance(),
"alibabacloudstack_mongodb_sharding_instance": resourceAlibabacloudStackMongoDBShardingInstance(),
"alibabacloudstack_mongodb_shardinginstance": resourceAlibabacloudStackMongoDBShardingInstance(),
"alibabacloudstack_nas_access_group": resourceAlibabacloudStackNasAccessGroup(),
"alibabacloudstack_nas_accessgroup": resourceAlibabacloudStackNasAccessGroup(),
"alibabacloudstack_nas_access_rule": resourceAlibabacloudStackNasAccessRule(),
"alibabacloudstack_nas_accessrule": resourceAlibabacloudStackNasAccessRule(),
"alibabacloudstack_nas_file_system": resourceAlibabacloudStackNasFileSystem(),
"alibabacloudstack_nas_filesystem": resourceAlibabacloudStackNasFileSystem(),
"alibabacloudstack_nas_mount_target": resourceAlibabacloudStackNasMountTarget(),
"alibabacloudstack_nas_mounttarget": resourceAlibabacloudStackNasMountTarget(),
"alibabacloudstack_nat_gateway": resourceAlibabacloudStackNatGateway(),
"alibabacloudstack_natgateway_natgateway": resourceAlibabacloudStackNatGateway(),
"alibabacloudstack_network_acl": resourceAlibabacloudStackNetworkAcl(),
"alibabacloudstack_vpc_networkacl": resourceAlibabacloudStackNetworkAcl(),
"alibabacloudstack_network_acl_attachment": resourceAlibabacloudStackNetworkAclAttachment(),
"alibabacloudstack_network_acl_entries": resourceAlibabacloudStackNetworkAclEntries(),
"alibabacloudstack_network_interface": resourceAlibabacloudStackNetworkInterface(),
"alibabacloudstack_ecs_networkinterface": resourceAlibabacloudStackNetworkInterface(),
"alibabacloudstack_network_interface_attachment": resourceNetworkInterfaceAttachment(),
"alibabacloudstack_ecs_networkinterfaceattachment": resourceNetworkInterfaceAttachment(),
"alibabacloudstack_ons_group": resourceAlibabacloudStackOnsGroup(),
"alibabacloudstack_ons_instance": resourceAlibabacloudStackOnsInstance(),
"alibabacloudstack_ons_topic": resourceAlibabacloudStackOnsTopic(),
"alibabacloudstack_oss_bucket": resourceAlibabacloudStackOssBucket(),
"alibabacloudstack_oss_bucket_quota": resourceAlibabacloudStackOssBucketQuota(),
"alibabacloudstack_oss_bucket_kms": resourceAlibabacloudStackOssBucketKms(),
"alibabacloudstack_oss_bucket_object": resourceAlibabacloudStackOssBucketObject(),
"alibabacloudstack_ots_instance": resourceAlibabacloudStackOtsInstance(),
"alibabacloudstack_ots_instance_attachment": resourceAlibabacloudStackOtsInstanceAttachment(),
"alibabacloudstack_ots_instanceattachment": resourceAlibabacloudStackOtsInstanceAttachment(),
"alibabacloudstack_ots_table": resourceAlibabacloudStackOtsTable(),
"alibabacloudstack_quick_bi_user": resourceAlibabacloudStackQuickBiUser(),
"alibabacloudstack_quick_bi_user_group": resourceAlibabacloudStackQuickBiUserGroup(),
"alibabacloudstack_quick_bi_workspace": resourceAlibabacloudStackQuickBiWorkspace(),
"alibabacloudstack_ram_role_attachment": resourceAlibabacloudStackRamRoleAttachment(),
"alibabacloudstack_ecs_ramroleattachment": resourceAlibabacloudStackRamRoleAttachment(),
"alibabacloudstack_reserved_instance": resourceAlibabacloudStackReservedInstance(),
"alibabacloudstack_ecs_reservedinstance": resourceAlibabacloudStackReservedInstance(),
"alibabacloudstack_ros_stack": resourceAlibabacloudStackRosStack(),
"alibabacloudstack_ros_template": resourceAlibabacloudStackRosTemplate(),
"alibabacloudstack_route_entry": resourceAlibabacloudStackRouteEntry(),
"alibabacloudstack_route_table": resourceAlibabacloudStackRouteTable(),
"alibabacloudstack_vpc_routetable": resourceAlibabacloudStackRouteTable(),
"alibabacloudstack_route_table_attachment": resourceAlibabacloudStackRouteTableAttachment(),
"alibabacloudstack_vpc_routetableattachment": resourceAlibabacloudStackRouteTableAttachment(),
"alibabacloudstack_router_interface": resourceAlibabacloudStackRouterInterface(),
"alibabacloudstack_expressconnect_routerinterface": resourceAlibabacloudStackRouterInterface(),
"alibabacloudstack_router_interface_connection": resourceAlibabacloudStackRouterInterfaceConnection(),
"alibabacloudstack_security_group": resourceAlibabacloudStackSecurityGroup(),
"alibabacloudstack_ecs_securitygroup": resourceAlibabacloudStackSecurityGroup(),
"alibabacloudstack_security_group_rule": resourceAlibabacloudStackSecurityGroupRule(),
"alibabacloudstack_slb": resourceAlibabacloudStackSlb(),
"alibabacloudstack_slb_loadbalancer": resourceAlibabacloudStackSlb(),
"alibabacloudstack_slb_acl": resourceAlibabacloudStackSlbAcl(),
"alibabacloudstack_slb_accesscontrollist": resourceAlibabacloudStackSlbAcl(),
"alibabacloudstack_slb_backend_server": resourceAlibabacloudStackSlbBackendServer(),
"alibabacloudstack_slb_backendserver": resourceAlibabacloudStackSlbBackendServer(),
"alibabacloudstack_slb_ca_certificate": resourceAlibabacloudStackSlbCACertificate(),
"alibabacloudstack_slb_cacertificate": resourceAlibabacloudStackSlbCACertificate(),
"alibabacloudstack_slb_domain_extension": resourceAlibabacloudStackSlbDomainExtension(),
"alibabacloudstack_slb_domainextension": resourceAlibabacloudStackSlbDomainExtension(),
"alibabacloudstack_slb_listener": resourceAlibabacloudStackSlbListener(),
"alibabacloudstack_slb_master_slave_server_group": resourceAlibabacloudStackSlbMasterSlaveServerGroup(),
"alibabacloudstack_slb_masterslaveservergroup": resourceAlibabacloudStackSlbMasterSlaveServerGroup(),
"alibabacloudstack_slb_rule": resourceAlibabacloudStackSlbRule(),
"alibabacloudstack_slb_server_certificate": resourceAlibabacloudStackSlbServerCertificate(),
"alibabacloudstack_slb_servercertificate": resourceAlibabacloudStackSlbServerCertificate(),
"alibabacloudstack_slb_server_group": resourceAlibabacloudStackSlbServerGroup(),
"alibabacloudstack_slb_vservergroup": resourceAlibabacloudStackSlbServerGroup(),
"alibabacloudstack_snapshot": resourceAlibabacloudStackSnapshot(),
"alibabacloudstack_ecs_snapshot": resourceAlibabacloudStackSnapshot(),
"alibabacloudstack_snapshot_policy": resourceAlibabacloudStackSnapshotPolicy(),
"alibabacloudstack_ecs_autosnapshotpolicy": resourceAlibabacloudStackSnapshotPolicy(),
"alibabacloudstack_snat_entry": resourceAlibabacloudStackSnatEntry(),
"alibabacloudstack_natgateway_snatentry": resourceAlibabacloudStackSnatEntry(),
"alibabacloudstack_vpc": resourceAlibabacloudStackVpc(),
"alibabacloudstack_vpc_vpc": resourceAlibabacloudStackVpc(),
"alibabacloudstack_vpc_ipv6_egress_rule": resourceAlibabacloudStackVpcIpv6EgressRule(),
"alibabacloudstack_vpc_ipv6egressrule": resourceAlibabacloudStackVpcIpv6EgressRule(),
"alibabacloudstack_vpc_ipv6_gateway": resourceAlibabacloudStackVpcIpv6Gateway(),
"alibabacloudstack_vpc_ipv6gateway": resourceAlibabacloudStackVpcIpv6Gateway(),
"alibabacloudstack_vpc_ipv6_internet_bandwidth": resourceAlibabacloudStackVpcIpv6InternetBandwidth(),
"alibabacloudstack_vpc_ipv6internetbandwidth": resourceAlibabacloudStackVpcIpv6InternetBandwidth(),
"alibabacloudstack_vpn_connection": resourceAlibabacloudStackVpnConnection(),
"alibabacloudstack_vpngateway_vpnconnection": resourceAlibabacloudStackVpnConnection(),
"alibabacloudstack_vpn_customer_gateway": resourceAlibabacloudStackVpnCustomerGateway(),
"alibabacloudstack_vpngateway_customergateway": resourceAlibabacloudStackVpnCustomerGateway(),
"alibabacloudstack_vpn_gateway": resourceAlibabacloudStackVpnGateway(),
"alibabacloudstack_vpngateway_vpngateway": resourceAlibabacloudStackVpnGateway(),
"alibabacloudstack_vpn_route_entry": resourceAlibabacloudStackVpnRouteEntry(),
"alibabacloudstack_vpngateway_vpnrouteentry": resourceAlibabacloudStackVpnRouteEntry(),
"alibabacloudstack_vswitch": resourceAlibabacloudStackSwitch(),
"alibabacloudstack_vpc_vswitch": resourceAlibabacloudStackSwitch(),
"alibabacloudstack_data_works_folder": resourceAlibabacloudStackDataWorksFolder(),
"alibabacloudstack_data_works_connection": resourceAlibabacloudStackDataWorksConnection(),
"alibabacloudstack_data_works_user": resourceAlibabacloudStackDataWorksUser(),
"alibabacloudstack_data_works_project": resourceAlibabacloudStackDataWorksProject(),
"alibabacloudstack_data_works_user_role_binding": resourceAlibabacloudStackDataWorksUserRoleBinding(),
"alibabacloudstack_data_works_remind": resourceAlibabacloudStackDataWorksRemind(),
"alibabacloudstack_elasticsearch_instance": resourceAlibabacloudStackElasticsearch(),
"alibabacloudstack_dbs_backup_plan": resourceAlibabacloudStackDbsBackupPlan(),
"alibabacloudstack_dbs_backupplan": resourceAlibabacloudStackDbsBackupPlan(),
"alibabacloudstack_express_connect_physical_connection": resourceAlibabacloudStackExpressConnectPhysicalConnection(),
"alibabacloudstack_expressconnect_physicalconnection": resourceAlibabacloudStackExpressConnectPhysicalConnection(),
"alibabacloudstack_express_connect_virtual_border_router": resourceAlibabacloudStackExpressConnectVirtualBorderRouter(),
"alibabacloudstack_expressconnect_virtualborderrouter": resourceAlibabacloudStackExpressConnectVirtualBorderRouter(),
"alibabacloudstack_oos_template": resourceAlibabacloudStackOosTemplate(),
"alibabacloudstack_oos_execution": resourceAlibabacloudStackOosExecution(),
"alibabacloudstack_arms_alert_contact": resourceAlibabacloudStackArmsAlertContact(),
"alibabacloudstack_arms_alertcontact": resourceAlibabacloudStackArmsAlertContact(),
"alibabacloudstack_arms_alert_contact_group": resourceAlibabacloudStackArmsAlertContactGroup(),
"alibabacloudstack_arms_alertcontactgroup": resourceAlibabacloudStackArmsAlertContactGroup(),
"alibabacloudstack_arms_dispatch_rule": resourceAlibabacloudStackArmsDispatchRule(),
"alibabacloudstack_arms_dispatchrule": resourceAlibabacloudStackArmsDispatchRule(),
"alibabacloudstack_arms_prometheus_alert_rule": resourceAlibabacloudStackArmsPrometheusAlertRule(),
"alibabacloudstack_arms_prometheusalertrule": resourceAlibabacloudStackArmsPrometheusAlertRule(),
"alibabacloudstack_elasticsearch_k8s_instance": resourceAlibabacloudStackElasticsearchOnk8s(),
"alibabacloudstack_cloud_firewall_control_policy": resourceAlibabacloudStackCloudFirewallControlPolicy(),
"alibabacloudstack_cloudfirewall_controlpolicy": resourceAlibabacloudStackCloudFirewallControlPolicy(),
"alibabacloudstack_cloud_firewall_control_policy_order": resourceAlibabacloudStackCloudFirewallControlPolicyOrder(),
"alibabacloudstack_cloudfirewall_controlpolicyorder": resourceAlibabacloudStackCloudFirewallControlPolicyOrder(),
"alibabacloudstack_csb_project": resourceAlibabacloudStackCsbProject(),
"alibabacloudstack_graph_database_db_instance": resourceAlibabacloudStackGraphDatabaseDbInstance(),
"alibabacloudstack_graphdatabase_dbinstance": resourceAlibabacloudStackGraphDatabaseDbInstance(),
"alibabacloudstack_polardb_account": resourceAlibabacloudStackPolardbAccount(),
"alibabacloudstack_polardb_database": resourceAlibabacloudStackPolardbDatabase(),
"alibabacloudstack_polardb_backuppolicy": resourceAlibabacloudStackPolardbBackuppolicy(),
"alibabacloudstack_polardb_dbconnection": resourceAlibabacloudStackPolardbConnection(),
"alibabacloudstack_polardb_dbinstance": resourceAlibabacloudStackPolardbInstance(),
//"alibabacloudstack_polardb_readonly_instance": resourceAlibabacloudStackPolardbReadonlyInstance(),
//"alibabacloudstack_polardb_readwrite_splitting_connection": resourceAlibabacloudStackPolardbReadWriteSplittingConnection(),
}
if v, err := stringToBool(os.Getenv("APSARASTACK_IN_ALIBABACLOUDSTACK")); err != nil && !v {
return maps
}
new_map := map[string]*schema.Resource{}
for key, value := range maps {
new_map[key] = value
if strings.HasPrefix(key, "alibabacloudstack_") {
new_key := strings.Replace(key, "alibabacloudstack_", "apsarastack_", 1)
new_map[new_key] = value
}
}
return new_map
}
func providerConfigure(d *schema.ResourceData) (interface{}, error) {
var getProviderConfig = func(str string, key string) string {
if str == "" {
value, err := getConfigFromProfile(d, key)
if err == nil && value != nil {
str = value.(string)
}
}
return str
}
accessKey := getProviderConfig(d.Get("access_key").(string), "access_key_id")
secretKey := getProviderConfig(d.Get("secret_key").(string), "access_key_secret")
region := getProviderConfig(d.Get("region").(string), "region_id")
region = strings.TrimSpace(region)
ecsRoleName := getProviderConfig(d.Get("ecs_role_name").(string), "ram_role_name")
var eagleeye connectivity.EagleEye
if os.Getenv("TF_EAGLEEYE_TRACEID") != "" && os.Getenv("TF_EAGLEEYE_TRACEID") != "" {
eagleeye = connectivity.EagleEye{
TraceId: os.Getenv("TF_EAGLEEYE_TRACEID"),
RpcId: os.Getenv("TF_EAGLEEYE_TRACEID"),
}
} else {
eagleeye = connectivity.EagleEye{
TraceId: connectivity.GenerateTraceId(),
RpcId: connectivity.DefaultRpcId,
}
}
log.Printf("Eagleeye's trace id is: %s", eagleeye.GetTraceId())
config := &connectivity.Config{
AccessKey: strings.TrimSpace(accessKey),
SecretKey: strings.TrimSpace(secretKey),
EcsRoleName: strings.TrimSpace(ecsRoleName),
Region: connectivity.Region(strings.TrimSpace(region)),
RegionId: strings.TrimSpace(region),
ConfigurationSource: d.Get("configuration_source").(string),
Protocol: d.Get("protocol").(string),
ClientReadTimeout: d.Get("client_read_timeout").(int),
ClientConnectTimeout: d.Get("client_connect_timeout").(int),
Insecure: d.Get("insecure").(bool),
Proxy: d.Get("proxy").(string),
Department: d.Get("department").(string),
ResourceGroup: d.Get("resource_group").(string),
ResourceSetName: d.Get("resource_group_set_name").(string),
SourceIp: strings.TrimSpace(d.Get("source_ip").(string)),
SecureTransport: strings.TrimSpace(d.Get("secure_transport").(string)),
Endpoints: make(map[connectivity.ServiceCode]string),
Eagleeye: eagleeye,
}
if v, ok := d.GetOk("security_transport"); config.SecureTransport == "" && ok && v.(string) != "" {
config.SecureTransport = v.(string)
}
token := getProviderConfig(d.Get("security_token").(string), "sts_token")
config.SecurityToken = strings.TrimSpace(token)
config.RamRoleArn = getProviderConfig(d.Get("role_arn").(string), "ram_role_arn")
log.Printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$led!!! %s", config.RamRoleArn)
config.RamRoleSessionName = getProviderConfig("", "ram_session_name")
if config.RamRoleSessionName == "" {
config.RamRoleSessionName = "terraform"
}
expiredSeconds, err := getConfigFromProfile(d, "expired_seconds")
if err == nil && expiredSeconds != nil {
config.RamRoleSessionExpiration = (int)(expiredSeconds.(float64))
}
assumeRoleList := d.Get("assume_role").(*schema.Set).List()
log.Printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$led!!! %s", assumeRoleList)
if len(assumeRoleList) == 1 {
assumeRole := assumeRoleList[0].(map[string]interface{})
if assumeRole["role_arn"].(string) != "" {
config.RamRoleArn = assumeRole["role_arn"].(string)
}
log.Printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$led!!! %s", config.RamRoleArn)
if assumeRole["session_name"].(string) != "" {
config.RamRoleSessionName = assumeRole["session_name"].(string)
}
config.RamRolePolicy = assumeRole["policy"].(string)
if assumeRole["session_expiration"].(int) == 0 {
if v := os.Getenv("ALIBABACLOUDSTACK_ASSUME_ROLE_SESSION_EXPIRATION"); v != "" {
if expiredSeconds, err := strconv.Atoi(v); err == nil {
config.RamRoleSessionExpiration = expiredSeconds
}
}
if config.RamRoleSessionExpiration == 0 {
config.RamRoleSessionExpiration = 3600
}
} else {
config.RamRoleSessionExpiration = assumeRole["session_expiration"].(int)
}
log.Printf("[INFO] assume_role configuration set: (RamRoleArn: %q, RamRoleSessionName: %q, RamRolePolicy: %q, RamRoleSessionExpiration: %d)",
config.RamRoleArn, config.RamRoleSessionName, config.RamRolePolicy, config.RamRoleSessionExpiration)
}
if err := config.MakeConfigByEcsRoleName(); err != nil {
log.Printf("[ERROR] Assume role failed: %s", err)
return nil, err
}
domain := d.Get("domain").(string)
if domain != "" {
if strings.Contains(domain, "/") && d.Get("proxy").(string) != "" {
return nil, fmt.Errorf("[Error]Domain containing the character '/' is not supported for proxy configuration.")
}
// 没有生成popgw地址的,继续使用asapi
var setEndpointIfEmpty = func(endpoint string, domain string) string {
if endpoint == "" {
return domain
}
return endpoint
}
for popcode := range connectivity.PopEndpoints {
if popcode == connectivity.OssDataCode {
// oss的数据网关不做配置
continue
}
if popcode == connectivity.SlSDataCode {
// SLS的数据网关不做配置
continue
}
config.Endpoints[popcode] = setEndpointIfEmpty(config.Endpoints[popcode], domain)
}
}
if v, ok := d.GetOk("popgw_domain"); !d.Get("force_use_asapi").(bool) && ok && v.(string) != "" {
popgw_domain := v.(string)
log.Printf("Generator Popgw Endpoint: %s", popgw_domain)
// 使用各云产品的endpoint的规则生成popgw地址
is_center_region := d.Get("is_center_region").(bool)
for popcode := range connectivity.PopEndpoints {
endpoint := connectivity.GeneratorEndpoint(popcode, region, popgw_domain, is_center_region)
if endpoint != "" {
config.Endpoints[popcode] = endpoint
}
}
}
if endpoints, ok := d.GetOk("endpoints"); ok {
endpointsSet := endpoints.(*schema.Set)
for _, endpointsSetI := range endpointsSet.List() {
endpoints := endpointsSetI.(map[string]interface{})
for popcode := range connectivity.PopEndpoints {
endpoint := strings.TrimSpace(endpoints[strings.ToLower(string(popcode))].(string))
if endpoint != "" {
config.Endpoints[popcode] = endpoint
}
}
}
}
ossServicedomain := d.Get("ossservice_domain").(string)
if ossServicedomain != "" {
config.Endpoints[connectivity.OssDataCode] = ossServicedomain
}
DbsEndpoint := d.Get("dbs_endpoint").(string)
if DbsEndpoint != "" {
config.Endpoints[connectivity.DDSCode] = DbsEndpoint
}
DataworkspublicEndpoint := d.Get("dataworkspublic").(string)
if DataworkspublicEndpoint != "" {
config.Endpoints[connectivity.DataworkspublicCode] = DataworkspublicEndpoint
}
QuickbiEndpoint := d.Get("quickbi_endpoint").(string)
if QuickbiEndpoint != "" {
config.Endpoints[connectivity.QuickbiCode] = QuickbiEndpoint
}
kafkaOpenApidomain := d.Get("kafkaopenapi_domain").(string)
if kafkaOpenApidomain != "" {
config.Endpoints[connectivity.ALIKAFKACode] = kafkaOpenApidomain
}
StsEndpoint := d.Get("sts_endpoint").(string)
if StsEndpoint != "" {
config.Endpoints[connectivity.STSCode] = StsEndpoint
}
organizationAccessKey := d.Get("organization_accesskey").(string)
organizationSecretKey := d.Get("organization_secretkey").(string)
if organizationAccessKey != "" && organizationSecretKey != "" {
config.AccessKey = organizationAccessKey
config.SecretKey = organizationSecretKey
}
slsOpenAPIEndpoint := d.Get("sls_openapi_endpoint").(string)
if slsOpenAPIEndpoint != "" {
config.Endpoints[connectivity.SlSDataCode] = slsOpenAPIEndpoint
}
ascmOpenAPIEndpoint := d.Get("ascm_openapi_endpoint").(string)
if ascmOpenAPIEndpoint != "" {
config.Endpoints[connectivity.ASCMCode] = ascmOpenAPIEndpoint
}
if strings.ToLower(config.Protocol) == "https" {
config.Protocol = "HTTPS"
} else {
config.Protocol = "HTTP"
}
if config.RamRoleArn != "" {
config.AccessKey, config.SecretKey, config.SecurityToken, err = getAssumeRoleAK(config)
if err != nil {
return nil, err
}
}
config.ResourceSetName = d.Get("resource_group_set_name").(string)
if config.Department == "" || config.ResourceGroup == "" {
dept, resId, rgid, err := getResourceCredentials(config)
if err != nil {
return nil, err
}
config.Department = dept
config.ResourceGroup = fmt.Sprintf("%d", rgid)
config.ResourceGroupId = resId
}
if ots_instance_name, ok := d.GetOk("ots_instance_name"); ok && ots_instance_name.(string) != "" {
config.OtsInstanceName = strings.TrimSpace(ots_instance_name.(string))
}
if account, ok := d.GetOk("account_id"); ok && account.(string) != "" {
config.AccountId = strings.TrimSpace(account.(string))
}
if config.ConfigurationSource == "" {
sourceName := fmt.Sprintf("Default/%s:%s", config.AccessKey, strings.Trim(uuid.New().String(), "-"))
if len(sourceName) > 64 {
sourceName = sourceName[:64]
}
config.ConfigurationSource = sourceName
}
client, err := config.Client()
if err != nil {
return nil, err
}
return client, nil
}
var descriptions map[string]string
func init() {
descriptions = map[string]string{
"access_key": "The access key for API operations. You can retrieve this from the 'Security Management' section of the AlibabacloudStack console.",
"secret_key": "The secret key for API operations. You can retrieve this from the 'Security Management' section of the AlibabacloudStackconsole.",
"security_token": "security token. A security token is only required if you are using Security Token Service.",
"insecure": "Use this to Trust self-signed certificates. It's typically used to allow insecure connections",
"proxy": "Use this to set proxy connection",
"domain": "Use this to override the default domain. It's typically used to connect to custom domain.",
}
}
func endpointsSchema() *schema.Schema {
schemas := make(map[string]*schema.Schema)
for popcode := range connectivity.PopEndpoints {
popcodeStr := strings.ToLower(string(popcode))
schemas[popcodeStr] = &schema.Schema{
Type: schema.TypeString,
Optional: true,
Default: "",
Description: descriptions[popcodeStr+"_endpoint"],
}
}
return &schema.Schema{
Type: schema.TypeSet,
Optional: true,
Elem: &schema.Resource{
Schema: schemas,
},
Set: func(v interface{}) int {
var buf bytes.Buffer
m := v.(map[string]interface{})
for popcode := range connectivity.PopEndpoints {
popcodeStr := strings.ToLower(string(popcode))
buf.WriteString(fmt.Sprintf("%s-", m[popcodeStr].(string)))
}
return hashcode.String(buf.String())
},
}
}
func getConfigFromProfile(d *schema.ResourceData, ProfileKey string) (interface{}, error) {
if providerConfig == nil {
if v, ok := d.GetOk("profile"); !ok && v.(string) == "" {
return nil, nil
}
current := d.Get("profile").(string)
// Set CredsFilename, expanding home directory
profilePath, err := homedir.Expand(d.Get("shared_credentials_file").(string))
if err != nil {
return nil, errmsgs.WrapError(err)
}
if profilePath == "" {
profilePath = fmt.Sprintf("%s/.alibabacloudstack/config.json", os.Getenv("HOME"))
if runtime.GOOS == "windows" {
profilePath = fmt.Sprintf("%s/.alibabacloudstack/config.json", os.Getenv("USERPROFILE"))
}
}
providerConfig = make(map[string]interface{})
_, err = os.Stat(profilePath)
if !os.IsNotExist(err) {
data, err := ioutil.ReadFile(profilePath)
if err != nil {
return nil, errmsgs.WrapError(err)
}
config := map[string]interface{}{}
err = json.Unmarshal(data, &config)
if err != nil {
return nil, errmsgs.WrapError(err)
}
for _, v := range config["profiles"].([]interface{}) {
if current == v.(map[string]interface{})["name"] {
providerConfig = v.(map[string]interface{})
}
}
}
}
mode := ""
if v, ok := providerConfig["mode"]; ok {
mode = v.(string)
} else {
return v, nil
}
switch ProfileKey {
case "access_key_id", "access_key_secret":
if mode == "EcsRamRole" {
return "", nil
}
case "ram_role_name":
if mode != "EcsRamRole" {
return "", nil
}
case "sts_token":
if mode != "StsToken" {
return "", nil
}
case "ram_role_arn", "ram_session_name":
if mode != "RamRoleArn" {
return "", nil
}
case "expired_seconds":
if mode != "RamRoleArn" {
return float64(0), nil
}
}
return providerConfig[ProfileKey], nil
}
func assumeRoleSchema() *schema.Schema {
return &schema.Schema{
Type: schema.TypeSet,
Optional: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"role_arn": {
Type: schema.TypeString,
Required: true,
Description: descriptions["assume_role_role_arn"],
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_ASSUME_ROLE_ARN", os.Getenv("ALIBABACLOUDSTACK_ASSUME_ROLE_ARN")),
},
"session_name": {
Type: schema.TypeString,
Optional: true,
Description: descriptions["assume_role_session_name"],
DefaultFunc: schema.EnvDefaultFunc("ALIBABACLOUDSTACK_ASSUME_ROLE_SESSION_NAME", ""),
},
"policy": {
Type: schema.TypeString,
Optional: true,
Description: descriptions["assume_role_policy"],
},
"session_expiration": {
Type: schema.TypeInt,
Optional: true,
Description: descriptions["assume_role_session_expiration"],
ValidateFunc: intBetween(900, 3600),
},
},
},
}
}
func getAssumeRoleAK(config *connectivity.Config) (string, string, string, error) {
client, err := config.Client()
if err != nil {
return "", "", "", err
}
request := sts.CreateAssumeRoleRequest()
client.InitRpcRequest(*request.RpcRequest)
request.Scheme = "https" // sts必须是https连接
request.RoleArn = config.RamRoleArn
request.RoleSessionName = config.RamRoleSessionName
//request.DurationSeconds = requests.NewInteger(config.RamRoleSessionExpiration)
request.Policy = config.RamRolePolicy
conn, err := client.WithProductSDKClient(connectivity.STSCode)
if err != nil {
return "", "", "", err
}
stsClient := &sts.Client{
Client: *conn,
}
response, err := stsClient.AssumeRole(request)
addDebug(request.GetActionName(), response, request.RpcRequest, request)
if err != nil {
return config.AccessKey, config.SecretKey, config.SecurityToken, err
}
return response.Credentials.AccessKeyId, response.Credentials.AccessKeySecret, response.Credentials.SecurityToken, nil
}
func getResourceCredentials(config *connectivity.Config) (string, string, int, error) {
endpoint := config.Endpoints[connectivity.ASCMCode]
var client *sts.Client
var err error
if config.SecurityToken == "" {
client, err = sts.NewClientWithAccessKey(config.RegionId, config.AccessKey, config.SecretKey)
} else {
client, err = sts.NewClientWithStsToken(config.RegionId, config.AccessKey, config.SecretKey, config.SecurityToken)
}
request := requests.NewCommonRequest()
if config.Insecure {
request.SetHTTPSInsecure(config.Insecure)
}
client.Domain = endpoint
if config.Proxy != "" {
client.SetHttpProxy(config.Proxy)
client.SetHttpsProxy(config.Proxy)
}
request.RegionId = config.RegionId
if strings.ToLower(config.Protocol) == "https" {
request.Scheme = "https"
} else {
request.Scheme = "http"
}
request.Version = "2019-05-10"
request.Method = "POST"
request.Product = "ascm"
request.ApiName = "ListResourceGroup"
if !strings.HasPrefix(client.Domain, "internal.asapi.") && !strings.HasPrefix(client.Domain, "public.asapi.") {
request.PathPattern = "/ascm/auth/resource_group/list_resource_group"
}
request.QueryParams = map[string]string{
"resourceGroupName": config.ResourceSetName,
"pageNumber": "1",
"pageSize": "10",
}
if config.SecurityToken != "" {
request.QueryParams["SecurityToken"] = config.SecurityToken
}
request.Headers["Content-Type"] = "application/json"
request.Headers["x-ascm-product-name"] = "ascm"
resp, err := client.ProcessCommonRequest(request)
addDebug(request.GetActionName(), resp, request, request.QueryParams)
if err != nil {
return "", "", 0, err
}
response := &ResourceGroup{}
err = json.Unmarshal(resp.GetHttpContentBytes(), response)
if err != nil {
return "", "", 0, err
}
var deptId int // Organization ID
var resGrpId int //ID of resource set
var resGrp string
deptId = 0
matched := 0
if response.Code != "200" {
return "", "", 0, fmt.Errorf("unable to initialize the ascm client: department or resource_group is not provided")
}
for _, d := range response.Data {
if d.ResourceGroupName == config.ResourceSetName {
matched += 1
}
}
if matched == 0 {
return "", "", 0, fmt.Errorf("resource group ID and organization not found for resource set %s", config.ResourceSetName)
} else if matched > 1 {
return "", "", 0, fmt.Errorf("There exists a resource group set name with the same name, Please Provider department or resource_group")
} else {
for _, j := range response.Data {
if j.ResourceGroupName == config.ResourceSetName {
deptId = j.OrganizationID
resGrp = j.RsID
resGrpId = j.ID
break
}
}
}
//log.Printf("[INFO] Get Resource Group Details Succssfull for Resource set: %s : Department: %s, ResourceGroupId: %s", config.ResourceSetName, fmt.Sprint(response.Data[0].OrganizationID), fmt.Sprint(response.Data[0].ID))
log.Printf("[INFO] Get Resource Group Details Succssfull for Resource set: %s : Department: %d, ResourceGroup: %s, ResourceGroupId: %d", config.ResourceSetName, deptId, resGrp, resGrpId)
//return fmt.Sprint(response.Data[0].OrganizationID), fmt.Sprint(response.Data[0].ID), err
return fmt.Sprint(deptId), resGrp, resGrpId, err
}
func waitSecondsIfWithTest(second int) {
// 测试模式下休眠一秒,防止数据缓存导致二次plan失败
if os.Getenv("TF_ACC") == "1" {
time.Sleep(time.Duration(second) * time.Second)
}
}